如何设计出一个比较全面的测试用例

目录

1. 测试用例的基本要素(不需要执行结果)

2. 测试用例的给我们带来的好处

3. 用例编写步骤

4. 设计测试用例的方法

    4.1 基于需求进行测试用例的设计

    4.2 具体的设计方法

      1.等价类

      2.边界值

      3.判定表(因果图)

      4.正交表法

      5.场景设计法

      6.错误猜测法


1. 测试用例的基本要素(不需要执行结果)

  测试环境 -> 操作步骤 -> 测试数据 -> 预期结果

2. 测试用例的给我们带来的好处

    1) 提高测试效率,节省测试时间

    2) 测试用例是自动化测试的前提

    3) 积累测试的方法思路以供后续借鉴

3. 用例编写步骤

   拿到测试需求 -> 分析需求(画思维导图) -> 确定测试范围,划分用例优先级 -> 编写用例

4. 设计测试用例的方法

    4.1 基于需求进行测试用例的设计

      在基于需求进行测试用例设计时,我们需要从功能需求和非功能需求两个方面进行分析。以下是详细的步骤:

      1. 功能需求测试分析--参考标准:需求文档

  • 明确测试目标:首先,需要明确测试的目标,即确保软件的功能实现与需求文档中的描述一致。

  • 识别关键功能点:从需求文档中提取出关键的功能点,这些功能点是用户最关心的,也是最容易出错的地方。

  • 设计测试场景:针对每个关键功能点,设计相应的测试场景。测试场景应尽可能覆盖所有可能的使用情况,包括正常情况、异常情况和边界条件。

  • 编写测试用例:根据测试场景,编写详细的测试用例。测试用例应包含明确的前置条件、操作步骤、预期结果和实际结果等信息。

      2. 非功能需求测试分析--参考标准:需求文档

  • 性能测试:评估系统的性能指标,如响应时间、吞吐量和资源利用率等。设计测试用例来模拟不同的负载情况,以验证系统在高负载下的稳定性和性能表现。

  • 安全性测试:检查系统的安全性措施是否有效,如身份验证、访问控制和数据加密等。设计测试用例来尝试攻击系统,以发现潜在的安全漏洞。

  • 兼容性测试:验证系统在不同平台、浏览器或设备上的兼容性。设计测试用例来测试系统在各种环境下的表现,以确保其能够在不同环境中正常运行。

  • 可用性测试:评估系统的易用性和用户体验。通过用户调查、问卷调查或用户测试等方式,收集用户反馈,以改进系统的设计和交互方式。

      3. 总结

      在基于需求进行测试用例设计时,我们需要从功能需求和非功能需求两个方面进行全面的分析。通过明确测试目标、识别关键功能点、设计测试场景和编写测试用例等步骤,可以确保软件的质量满足需求文档中的要求。同时,我们还需要关注系统的性能、安全性、兼容性和可用性等方面,以提供更好的用户体验和保障系统的稳定性。

    4.2 具体的设计方法

      1.等价类

        概念:

        将所有可能输入的数据,有无效等价类和有效等价类(即正确输入和非法输入),测试的时候,然后从每一个类别中选取少数具有代表性的数据作为测试用例,如果测试通过,即代表这一类测试通过。

有效等价类:满足用户需求的一个数据集合

无效等价类:不满足用户需求的数据集合

        设计测试用例的流程:

        充分理解需求 -> 将需求分类(有效等价类,无效等价类)-> 针对有效等价类和无效等价类设计测试用例

        举例:

        比如说,如果你要测试一个输入年龄的字段,你可以分成几组:小于0的年龄、0到100之间的年龄、大于100的年龄。然后,从每组中选一个典型的数字来测试,比如-1、50、101。这样就可以覆盖大部分情况了。

      2.边界值

        概念:

        边界值分析法就是测试输入或输出的边界值的一种黑盒测试方法。因为程序在边界值的地方最容易出问题,所以我们专门测试这些边界值。

        通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

这里还涉及到三个概念:

上点:边界上的点就是上点(不管范围是开区间还是闭区间)

内点:边界内的点(不管范围是开区间还是闭区间)

离点:如果区间是开区间,区间内最靠近上点的点

如果是闭区间,区间外最靠近上点的点

        举例:

          上点:50,55

          内点:51,52,53,54,55

          离点:51 56

      3.判定表(因果图)

        概念:

        是一种用于描述复杂逻辑决策规则的技术,常用于需求分析阶段来定义业务规则,并在测试阶段用来设计测试用例。

        简单而言,判定表其实就是一个表格,它帮助我们清晰地列出所有可能的情况和对应的处理结果。

        设计测试用例的流程:

         (1)分析所有可能的输入和可能的输出

         (2) 找出输入与输出之间的对应关系

         (3) 设计判定表

         (4) 把判定表对应到每一个测试用例

        举例:

        1. 分析所有可能的输入和可能的输出--条件可能是来自用户界面的输入数据,或者是系统内部的状态变化等

        假设我们有一个简单的登录系统,其输入条件为用户名和密码,输出结果为登录成功或失败。

  • 输入条件:

    • 用户名(Username)

    • 密码(Password)

  • 输出结果:

    • 登录成功(Login Success)

    • 登录失败(Login Failed)

        2. 找出输入与输出之间的对应关系

        接下来,确定输入条件与输出结果之间的关系。这些关系通常由逻辑运算符(如与、或、非等)来表达。

  • 对于登录系统,我们可以有以下几种情况:

  • 用户名正确且密码正确 -> 登录成功

  • 用户名正确且密码错误 -> 登录失败

  • 用户名不存在 -> 登录失败

  • 密码为空 -> 登录失败

        3. 设计判定表

        根据上述关系,构建一个判定表。判定表包含一系列的条件组合以及对应的动作。

动作\条件

C1:用户名正确

C2:密码正确

C3:用户名存在

C4:密码非空

A1

A2

A3

-

-

A4

-

-

        4. 把判定表对应到每一个测试用例

  • 测试用例1(对应A1):

    • 输入:正确的用户名和密码。

    • 预期结果:登录成功。

  • 测试用例2(对应A2):

    • 输入:正确的用户名,错误的密码。

    • 预期结果:登录失败。

  • 测试用例3(对应A3):

    • 输入:不存在的用户名。

    • 预期结果:登录失败。

  • 测试用例4(对应A4):

    • 输入:密码为空。

    • 预期结果:登录失败。

        通过这样的方法,我们可以确保所有的输入组合都被考虑到,并且每个可能的结果都有对应的测试用例来验证。这样可以帮助我们发现潜在的问题并提高软件的质量。

      4.正交表法

        概念:

        是一种系统化的测试用例设计方法,主要用于减少测试用例的数量,同时保证较高的覆盖率。这种方法特别适用于那些具有多个输入参数和多种可能的参数组合的情况。

        设计测试用例的流程:

        充分理解需求 -> 确定因素水平 -> 画正交表 -> 补充正交表 -> 将正交表转换成测试用例

        举例:

        1. 充分理解需求

        首先,你需要彻底理解软件的功能需求和非功能需求。这一步是为了确保你知道要测试哪些方面。

        2. 确定因素和水平

          接下来,识别出所有影响系统行为的因素(即变量),并确定每个因素可能的水平(即变量取值)。

          例如,在一个在线购物系统中,因素可能包括支付方式、商品种类、用户类型等,而水平则包括具体的支付选项(信用卡、支付宝)、商品种类(电子产品、书籍)、用户类型(新用户、老用户)等。

  • 因素:

    • 支付方式(Payment Method)

    • 商品种类(Product Category)

    • 用户类型(User Type)

  • 水平:

    • 支付方式:信用卡(Credit Card)、支付宝(Alipay)

    • 商品种类:电子产品(Electronics)、书籍(Books)

    • 用户类型:新用户(New User)、老用户(Existing User)

        3. 画正交表

根据所识别的因素和水平,选择一个合适的正交表。正交表的特点是:

  • 每一列中各个数字(水平)出现的次数一样多。

  • 任何两列中的各有序数对出现的次数一样多。

正交表通常表示为 Lₙ(mᵏ),其中 n 是行数(测试用例数量),m 是水平数,k 是因素数。

        对于上述因素,可以选择 L₄(2³) 的正交表:

序号

支付方式

商品种类

用户类型

1

CC

Elec

New

2

CC

Books

Existing

3

Alipay

Elec

Existing

4

Alipay

Books

New

        这里的 CC 表示 Credit Card,Alipay 表示支付宝;Elec 表示 Electronics,Books 表示 Books;New 表示 New User,Existing 表示 Existing User。

        4. 补充正交表

        有时,标的正交表可能不足以涵盖所有重要的测试场景。这时,可以根据实际情况对正交表进行补充或调整,以确保关键路径得到充分测试。

        5. 将正交表转换成测试用例

        最后,根据正交表中的每一行设计具体的测试用例。每一行代表一组输入参数的组合,以及对应的预期输出或行为。

  • 测试用例1(对应第1行):

    • 输入:支付方式为信用卡,商品种类为电子产品,用户类型为新用户。

    • 预期结果:支付成功,订单创建。

  • 测试用例2(对应第2行):

    • 输入:支付方式为信用卡,商品种类为书籍,用户类型为老用户。

    • 预期结果:支付成功,订单创建。

  • 测试用例3(对应第3行):

    • 输入:支付方式为支付宝,商品种类为电子产品,用户类型为老用户。

    • 预期结果:支付成功,订单创建。

  • 测试用例4(对应第4行):

    • 输入:支付方式为支付宝,商品种类为书籍,用户类型为新用户。

    • 预期结果:支付成功,订单创建。

        通过这种方式,你可以有效地设计出覆盖广泛输入组合的测试用例,同时减少测试的工作量。

      5.场景设计法

        概念:

        通过模拟特定的使用场景来测试系统功能或业务流程的一种方法。具体来说,就是设定一个具体的场景,模拟在这个场景下会发生什么,然后观察最终的结果,以此来发现需求中存在的问题。

        设计测试用例的流程:

        充分理解需求 -> 确定主事件流 -> 确定次事件流 -> 每个事件流就是一个测试用例

        举例:

          比如说,你要测试一个在线购物网站的结账流程:

  • 你可以设定一个场景:用户添加商品到购物车,然后去结账。

  • 在这个场景中,你会模拟用户点击“添加到购物车”和“去结账”的动作。

  • 观察最终的结果,比如是否能顺利结账、订单信息是否正确等。

      6.错误猜测法

       概念:

        一种依靠测试人员的经验和直觉来找出程序中可能出现的错误,并据此设计测试用例的方法。

        简单来说,就是测试人员根据自己以前遇到过的bug或者是对系统的理解,猜测哪里可能会出错,然后专门去测试这些地方。

        举例:

        比如,如果你曾经在一个项目中遇到过某个特定类型的错误,那么在测试新的项目时,你可能会特别留意类似的情况,看看同样的错误会不会再次出现。这就是错误猜测法的实际应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/428798.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频去噪技术分享

视频去噪是一种视频处理技术,旨在从视频帧中移除噪声和干扰,提高视频质量。噪声可能由多种因素引起,包括低光照条件、高ISO设置、传感器缺陷等。视频去噪对于提升视频内容的可视性和可用性至关重要,特别是在安全监控、医疗成像和视…

【MySQL】基础部分——DDL,DML,DQL,DCL,函数,约束,多表查询,事务

个人学习记录,供以后回顾和复习 ubuntu下安装使用1.DDL,DML,DQL,DCLDDL数据库表 DML增改删 DQL条件查询分组查询排序查询分页查询 DCL管理用户权限控制 2.函数字符串函数数值函数日期函数流程函数 3.约束4.多表查询多表关系内连接…

【Git必看系列】—— Git巨好用的神器之git stash篇

应用场景 当我们开发一个新功能时会先从master拉出一个分支dev,然后在这个dev分支下吭哧吭哧的开始写代码开发新功能,就如下代码所示,我们在dev分支下开发Person类的新功能getId() public class Person {private int id;private String nam…

零工市场小程序:推动零工市场建设

人力资源和社会保障部在2024年4月发布了标题为《地方推进零工市场建设经验做法》的文章。 零工市场小程序的功能 信息登记与发布 精准匹配、推送 在线沟通 权益保障 零工市场小程序作为一个找零工的渠道,在往后随着技术的发展和政策的支持下,功能必然…

C++——初步认识C++和namespace的用法

1.编程语言排行榜 我们通过排行可以看出 C在变成语言中还是占据着重要的地位 2.C在工作领域中的应用 1.PC客户端开发。⼀般是开发Windows上的桌面软件,比如WPS之类的,技术栈的话⼀般是C和 QT,QT 是⼀个跨平台的 C图形用户界面(G…

表格标记<table>

一.表格标记、 1table&#xff1a;表格标记 2.caption:表单标题标记 3.tr:表格行标记 4.td:表格中数据单元格标记 5.th:标题单元格 table标记是表格中最外层标记&#xff0c;tr表示表格中的行标记&#xff0c;一对<tr>表示表格中的一行&#xff0c;在<tr>中可…

Scrapy爬虫IP代理池:提升爬取效率与稳定性

在互联网时代&#xff0c;数据就是新的黄金。无论是企业还是个人&#xff0c;数据的获取和分析能力都显得尤为重要。而在众多数据获取手段中&#xff0c;使用爬虫技术无疑是一种高效且广泛应用的方法。然而&#xff0c;爬虫在实际操作中常常会遇到IP被封禁的问题。为了解决这个…

小程序构建npm失败

小程序构建npm失败 项目工程结构说明解决方法引入依赖导致的其他问题 今天在初始化后的小程序中引入TDesign组件库&#xff0c;构建npm时报错。 项目工程结构说明 初始化后的项目中&#xff0c;包含miniprogram文件夹和一些项目配置文件&#xff0c;在project.config.json文件中…

【TypeScript入坑】TypeScript 的复杂类型「Interface 接口、class类、Enum枚举、Generics泛型、类型断言」

TypeScript入坑 Interface 接口简介接口合并TS 强校验Interface 里支持方法的写入class 类应用接口接口之间互相继承接口定义函数interface 与 type 的异同小案例 class 类类的定义与继承类的访问类型构造器 constructor静态属性&#xff0c;Setter 和 Getter做个小案例抽象类 …

fiddler抓包06_抓取https请求(chrome)

课程大纲 首次安装Fiddler&#xff0c;抓https请求&#xff0c;除打开抓包功能&#xff08;F12&#xff09;还需要&#xff1a; ① Fiddler开启https抓包 ② Fiddler导出证书&#xff1b; ③ 浏览器导入证书。 否则&#xff0c;无法访问https网站&#xff08;如下图&#xff0…

(十五)、把自己的镜像推送到 DockerHub

文章目录 1、登录Docker Hub2、标记&#xff08;Tag&#xff09;镜像3、推送&#xff08;Push&#xff09;镜像4、查看镜像5、下载镜像6、设置镜像为公开或者私有 1、登录Docker Hub 需要科学上网 https://hub.docker.com/ 如果没有账户&#xff0c;需要先注册一个。登录命令如…

docker搭建个人网盘,支持多种格式,还能画图,一键部署

1&#xff09;效果 2&#xff09;步骤 2.1&#xff09;docker安装 docker脚本 bash <(curl -sSL https://cdn.jsdelivr.net/gh/SuperManito/LinuxMirrorsmain/DockerInstallation.sh)docker-compose脚本 curl -L "https://github.com/docker/compose/releases/late…

技术成神之路:设计模式(十四)享元模式

介绍 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构性设计模式&#xff0c;旨在通过共享对象来有效地支持大量细粒度的对象。 1.定义 享元模式通过将对象状态分为内部状态&#xff08;可以共享&#xff09;和外部状态&#xff08;不可共享&#xff09;&#xf…

基于SpringBoot+Vue的高校竞赛管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

力扣115-不同的子序列(Java详细题解)

题目链接&#xff1a;不同的子序列 前情提要&#xff1a; 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 dp五部曲。 1.确定dp数组和i下标的含义。 2.确定递推公式。 3.dp初始化。 4.确定dp的遍历顺序。 5.如果没有ac打印dp数组 利于debug。 每一个dp题目…

java使用ByteBuffer进行多文件合并和拆分

1.背景 因为验证证书的需要&#xff0c;需要把证书文件和公钥给到客户&#xff0c;考虑到多个文件交互的不便性&#xff0c;所以决定将2个文件合并成一个文件交互给客户。刚开始采用字符串拼接2个文件内容&#xff0c;但是由于是加密文件&#xff0c;采用字符串形式合并后&…

界面控件Telerik UI for WinForms 2024 Q3概览 - 支持合并单元格等

Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件。所有的UI for WinForms控件都具有完整的主题支持&#xff0c;可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。 本文将介绍界面组件Telerik UI for WinForms在今年第一…

LeetCode2414题: 最长的字母序连续子字符串的长度(原创)

【题目描述】 字母序连续字符串 是由字母表中连续字母组成的字符串。换句话说&#xff0c;字符串 "abcdefghijklmnopqrstuvwxyz" 的任意子字符串都是 字母序连续字符串 。 例如&#xff0c;"abc" 是一个字母序连续字符串&#xff0c;而 "acb" 和…

vscode中如何配置c/c++环境

“批判他人总是想的太简单 剖析自己总是想的太困难” 文章目录 前言文章有误敬请斧正 不胜感恩&#xff01;一、准备工作二、安装 VSCode 插件三、配置 VSCode1. 配置编译任务&#xff08;tasks.json&#xff09;2. 配置调试器&#xff08;launch.json&#xff09; 四、运行和调…

Gitee Pipeline 从入门到实战【详细步骤】

文章目录 Gitee Pipeline 简介Gitee Pipeline 实战案例 1 - 前端部署输入源NPM 构建Docker 镜像构建Shell 命令执行案例 2 - 后端部署全局参数输入源Maven 构建Docker 镜像构建Shell 命令执行参考🚀 本文目标:快速了解 Gitee Pipeline,并实现前端及后端打包部署。 Gitee Pi…