【软件测试】测试用例设计方法

news2024/5/18 18:59:11

  • 1. 等价类划分法
    • 1.1. 等价类划分法的定义
    • 1.2. 有效等价类和无效等价类
    • 1.3. 等价类划分法实例分析
  • 2. 边界值分析法
    • 2.1. 边界值分析法的定义
    • 2.2. 边界点
    • 2.3. 边界值法实例分析
  • 3. 判定表法
    • 3.1. 如何用判定表法设计测试用例
    • 3.2. 判定表法实例分析
  • 4. 正交表法
    • 4.1. 什么是正交表
    • 4.2. 正交表的性质
    • 4.3. 如何通过正交表设计测试用例
  • 5. 水杯测试用例设计
  • 6. 软件模块测试用例的设计

1. 等价类划分法

1.1. 等价类划分法的定义

等价类划分法是把所有可能的输入数据,即程序的输入数据集合划分成若干个子集(即等价类),然后从每一个等价类中选取少量具有代表性的数据作为测试用例,如下图所示。

img

测试某等价类的代表值就等效于对于这一类其他值的测试。比如我在输入域1中选取一个输入,然后进行测试,对于输入域1中的其他输入都是等效的。

等价类划分法将不能穷举的测试数据进行合理分类,使用较少的若干个数据代表更为广泛的数据输入。

1.2. 有效等价类和无效等价类

在使用等价类划分法设计测试用例时,不但要考虑有效等价类划分,同时也要考虑无效等价类划分。

**有效等价类一般是指完全满足产品规则说明的输入数据,即有效的、有意义的输入数据所构成的集合。**利用有效等价类可以检验程序是否满足规则说明所规定的功能性要求。

无效等价类与有效等价类相反,即不满足程序输入要求或无效的输入数据构成的集合。

例如,计算器程序只能处理数值计算,包括正负数的加减乘除计算等,当输入字符数据就相当于输入了无效数据。当从键盘上输入数值时,计算器正常接收输入并正确显示该数值;当从键盘上输入字符时,计算器不接收这些无效输入,若利用复制功能将字符或字符串粘贴到计算器的输入框中时,计算器会显示“无效输入”,如下图所示。

img

使用无效等价类,可以测试程序的容错性——对异常情况的处理。在程序设计中,不但要保证有效的输入能产生正确的输出,而且要保证系统有一定的容错处理能力,在发生错误或输入无效数据的时候,系统应能自我保护而不至于发生崩溃,并应给出响应的错误提示。

1.3. 等价类划分法实例分析

在应用程序中,经常要求输入电话号码,我国的固定电话号码一般由两部分组成:

  1. 地区码:以0开头的3位或4位数字;
  2. 电话号码:以非0、非1开头的7位或8位数字。

应用程序应接收一切符合上述规定的电话号码,但应拒绝不符合上面规定的号码。

首先根据地区码和电话号码的要求划分等价类,确定有效等价类和无效等价类,为每个等价类规定一个唯一的编号,如下表所示。

输入数据有效等价类无效等价类
地区码①以0开头的3位地区码②以0开头的4位地区码③以0开头的小于3位的数字串④以0开头的大于4位的数字串⑤以非0开头的数字串⑥以0开头的含有非数字的字符串
电话号码⑦以非0、非1开头的7位号码⑧以非0、非1开头的8位号码⑨以0开头的数字串⑩以1开头的数字串⑪以非0、非1开头的小于7位数字串⑫以非0、非1开头的大于8位数字串⑬以非0、非1开头的含有非法字符7位或8位数字串

设计一个测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,此项工作重复进行,直到所有的有效等价类均被覆盖为止。例如,地区码随机取一个有效等价类,电话号码随机取一个有效等价类,合起来生成第一条测试用例。接下来,从地区码和电话号码中取尚未覆盖的其他有效等价类,合起来生成第二条测试用例,如下表所示。

测试用例输入数据/覆盖的有效等价类
040 6123456 覆盖①、⑦
0571 92345678 覆盖②、⑧

设计一个新的测试用例,使其只覆盖一个无效等价类,此项工作重复进行,直到所有的无效等价类均被覆盖。例如,电话号码随机取一个有效等价类,地区码则覆盖一个无效等价类,合起来构成一个无效输入数据。重复此步骤直至等价类划分表中所有的无效等价类均被覆盖。最终生成的测试用例如下。

测试用例输入数据/覆盖的有效等价类输入数据/覆盖的无效等价类
040 6123456 覆盖①、⑦0571 92345678 覆盖②、⑧04 61234567 覆盖③05011 61234567 覆盖④40 92345678 覆盖⑤025x 6123456 覆盖⑥
040 06123456 覆盖⑨0571 1123456 覆盖⑩040 612345 覆盖⑪0571 912345678 覆盖⑫0571 9123456zx 覆盖⑬

2. 边界值分析法

2.1. 边界值分析法的定义

边界值分析法是针对输入数据的边界条件进行分析以确定边界值,然后设计出对应边界值的测试用例。在测试用例的设计中,不仅要取边界值作为测试数据,而且要选取刚刚大于和刚刚小于边界值的数据作为测试数据。例如,{1, 100}的数据区间,不仅要测试边界值1和100,还要测试0、2、99、101等值,虽然0和101是无效数据,但应使用这些无效数据去测试系统是否能判断出无效数据,并给予提示或其他的容错处理。

在进行等价类分析时,往往要先确定边界。如果不能确定边界,就很难定义等价类所在的区域。只有边界值确定下来,才能划分出有效等价类和无效等价类。边界确定清楚了,等价类就自然产生了。所以说,边界值分析法是对等价类划分法的补充。

2.2. 边界点

这里简单的介绍一下边界点。

  1. 上点:边界上的点
  2. 内点:边界内的点
  3. 离点:边界值附近的一个点(闭区间区间外距离上点最近的点,开区间区间内距离上点最近的点)

用两个例子来说明上面的概念。

img

img

2.3. 边界值法实例分析

某保险网站的前台计算保费的页面中要求输入被保险人的年龄,根据不同的年龄使用不同的保险费率计算标准。保费计算方式为:保费 = 保险额 X 保险费率。其中,115岁,保险费率为10%;1620岁,保险费率为15%;2150岁,保险费率为20%;5170岁,保险费率为25%。

综上所述,该程序的等价类划分结果如下所示。

年龄保险费率年龄保险费率
x < 0无效输入20 < x <= 5020%
1 <= x <= 1510%50 < x <= 7025%
15 < x <= 2015%x > 70无效输入

3. 判定表法

判定表是一种表达逻辑判断的方法。

其中判定表的关系有如下几种。

  1. 与:所有的条件必须满足,如果一个条件不满足,此时结果为假。
  2. 或:满足其中一个条件结果就为真,如果条件全部为假,结果就为假。
  3. 恒等:条件为真,结果一定为真。
  4. 非:条件为假,结果才为真。

3.1. 如何用判定表法设计测试用例

  1. 分析所有可能的输入和可能的输出。
  2. 找出输入和输出之间的对应关系。
  3. 设计判定表。
  4. 把判定表对应到每一个测试用例。

3.2. 判定表法实例分析

如下图是公交一卡通自动充值模拟系统

img

需求如下所示。

  1. 系统只接收50元或100元纸币,一次充值只能使用一张纸币,一次充值金额只能为50元或100元。
  2. 若输入50元纸币,并选择充值50元,完成充值后退卡,提示充值成功。
  3. 若输入50元纸币,并选择充值100元,提示输入金额不足,并退回50元。
  4. 若输入100元纸币,并选择充值50元,完成充值后退卡,提示充值成功,找零50元。
  5. 若输入100元纸币,并选择充值100元,完成充值后退卡,提示充值成功。
  6. 若输入纸币后在规定时间内不选择充值按钮,退回输入的纸币,并提示错误。
  7. 若选择充值按钮后不输入纸币,提示错误。

下面给出公交一卡通自动充值系统的测试用例设计过程。

  1. 条件之间的制约及组合关系

根据上述描述,输入条件为:

  • 投币50元(1)
  • 投币100元(2)
  • 选择充值50元(3)
  • 选择充值100元(4)

输出结果为:

  • 完成充值、退卡(a)
  • 提示充值成功(b)
  • 找零(c)
  • 提示错误(d)
  1. 明确所有条件之间的制约关系以及组合关系

  2. 写出判定表

12345678
输入投币50元YYY
投币100元YYY
选择充值50元YYY
选择充值100元YYY
输出a. 完成充值、退卡YYY
b. 提示充值成功YYY
c. 找零YYYY
d. 错误提示YYYYY
  1. 根据判定表写出测试用例
编号用例说明预期结果
1投币50元,选择充值50元正确充值50元,提示充值成功后退卡
2投币50元,选择充值100元系统提示错误并退回50元
3投币100元,选择充值50元正确充值50元,提示充值成功后退卡,并找回50元
4投币100元,选择充值100元正确充值100元,提示充值成功后退卡
5投币50元系统提示错误并退回50元
6投币100元系统提示错误并退回100元
7选择充值50元系统提示错误
8选择充值100元系统提示错误

4. 正交表法

4.1. 什么是正交表

正交表是一种用于设计实验的统计工具,它通过排列和组合不同的因素和水平,以便在最小的试验次数下得出最大的信息。正交表能够帮助研究人员确定影响实验结果的关键因素,以及它们之间的相互作用。通过使用正交表,研究人员可以更有效地进行实验设计,节省时间和资源,并获得更可靠的结果。

4.2. 正交表的性质

  1. 每一列中各数字出现的次数都一样多
  2. 任何两列中的各有序数对出现的次数都一样多。

img其中1,2,3在每一列中出现的次数都是相同的。

img这幅图对应的就是性质2。

4.3. 如何通过正交表设计测试用例

首先先了解两个重要的概念。

  1. 因素:输入变量
  2. 水平:每一个输入变量的取值

其次是通过正交表设计测试用例的步骤。

  1. 充分理解需求
  2. 确定因素,确定水平
  3. 画正交表
  4. 补充正交表
  5. 将正交表转换成测试用例

假设这样的一个需求,一个注册的功能,需求是姓名,邮箱,密码,确认密码,验证码必须全部输入后,才能注册。如下面的简图。

img

可以明确的是,

  1. 因素:姓名,邮箱,密码,确认密码,验证码
  2. 水平:填写/不填写

这里我使用allpairs来画正交表,步骤如下。

  1. 将因素和水平放到Excel表格中。

img

  1. 将Excel表格内容直接复制到txt文本中。

img

  1. CMD进入到allpairs安装路径下面

img

  1. 生成正交表

imgimg

后面pairings列忽略不管,其中~代表的是,可以是填写或不填写。根据上面生成的正交表就可以编写测试用例了。这里我就不写了,有兴趣的同学可以自行写一写看一看。

5. 水杯测试用例设计

这里用思维导图的方式来看下实体的测试用例该如何设计。

img

6. 软件模块测试用例的设计

这里以微信发朋友圈的例子来设计测试用例

img

这一篇博客主要讲了测试用例的设计方法,以及给出了实体和软件该从哪些方面进行测试的方向,希望对大家能有所帮助。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模拟实现memcpy,memmove,memset,memcmp

memcpy void * memcpy ( void * destination, const void * source, size_t num ); 使用注意事项&#xff1a; 从source的位置向后复制num个字节数据到destination所指向的内存位置中。 这个函数遇到如果源空间和⽬标空间出现重叠&#xff0c;就得使⽤memmove函数处理。 …

纯血鸿蒙APP实战开发——自定义路由栈管理

介绍 本案例将介绍如何使用路由跳转返回时获取到来源页的模块名以及路径名&#xff0c;在实际场景中同一页面通常会根据不同来源页展示不同的UI。 使用说明 无特殊使用说明&#xff0c;其他使用说明参考动态路由的相关说明 实现思路 路由来源页的实现 新增来源页字段 ex…

【刷题篇】动态规划-二维费用的背包问题(十二)

文章目录 1、一和零2、盈利计划3、组合总和 Ⅳ4、不同的二叉搜索树(卡特兰数) 1、一和零 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度&#xff0c;该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素&#x…

vue快速入门(五十三)使用js进行路由跳转

注释很详细&#xff0c;直接上代码 上一篇 新增内容 几种常用的路由跳转方式演示 源码 App.vue <template><div id"app"><div class"nav"><!-- router-link 自带两个高亮样式类 router-link-exact-active和router-link-active区别&a…

AI代理架构的发展:从单一到多代理系统的演进及其影响分析

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

数字逻辑之“逻辑门电路”

一、基础知识 1、正逻辑和负逻辑 &#xff08;1&#xff09;基本的逻辑规定 1——“真”0——“假” &#xff08;2&#xff09;正逻辑和负逻辑 在实际的数字系统中&#xff0c;用数字信号&#xff08;逻辑电平U1&#xff0c;U2&#xff09;表示“真&#xff08;1&#xf…

FloodFill-----洪水灌溉算法(DFS例题详解)

目录 一.图像渲染&#xff1a; 代码详解&#xff1a; 二.岛屿数量&#xff1a; 代码详解&#xff1a; 三.岛屿的最大面积&#xff1a; 代码详解&#xff1a; 四.被围绕的区域&#xff1a; 代码详解&#xff1a; 五.太平洋大西洋水流问题&#xff1a; 代码详解&#x…

[leetcode] B树是不是A树的子结构

给定两棵二叉树 tree1 和 tree2&#xff0c;判断 tree2 是否以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。 注意&#xff0c;空树 不会是以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。 示例 1&#xff1a; 输入&#xff1a;tree1 [1,7,5], tree2 [6,…

Docker-compose部署LTC同步节点

1、下载ltc程序包&#xff0c;litecoin下载地址 下载页 mkdir /data/docker-compose/ltc cd /data/docker-compose/ltc https://github.com/litecoin-project/litecoin/releases/download/v0.21.3/litecoin-0.21.3-x86_64-linux-gnu.tar.gz2、编写dockerfile和bitcoin.conf b…

M2M vs. IoT?

有任何关于GSMA\IOT\eSIM\RSP\业务应用场景相关的问题&#xff0c;欢迎W: xiangcunge59 一起讨论, 共同进步 (加的时候请注明: 来自CSDN-iot). 连接设备已经开辟了创造价值和解决重大世界问题的广泛机会&#xff0c;例如可持续发展。 今天&#xff0c;我们网络设备的方式可…

tomcat打开乱码修改端口

将UTF-8改成GBK 如果端口冲突&#xff0c;需要修改tomcat的端口

智慧校园云平台源码,SaaS运营云平台(支持多学校、多校园使用)

智慧班牌系统&#xff0c;又称电子班牌系统&#xff0c;是一种基于互联网技术的综合管理工具。通过在教室内安装显示屏&#xff0c;并连接到学校管理系统&#xff0c;实现教学资源展示、信息发布、学生管理等多种功能的集成。该系统旨在加强学校班级文化建设和班级风采展示&…

Gitea 上传用户签名

在 Gitea 的用户管理部分&#xff0c;有一个 SSH 和 GPG 的选项。 单击这个选项&#xff0c;可以在选项上添加 Key。 Key 的来源 如是 Windows 的用户&#xff0c;可以选择 Kleopatra 这个软件。 通过这个软件生成的 Key 的界面中有一个导出功能。 单击这个导出&#xff0c;…

84、动态规划-完全平方数

思路 第一种递归方式&#xff1a; public static int numSquares3(int n) {if (n<2){return n;}return process(n);}private static int process(int rest) {if (rest<0){return 0;}int minrest;for (int i 2; i*i <rest ; i) {int countrest/(i*i);for (int j 1;…

初始Java篇(JavaSE基础语法)(6)(继承和多态)(下)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaSE 多态篇 目录 多态的概念 实现多态的条件 必须在继承体系下实现向上转型&#xff1a; 子类必须对父类中的方法进行重写&#xff1…

Wireshark CLI | 过滤包含特定字符串的流

问题背景 源自于和朋友的一次技术讨论&#xff0c;关于 Wireshark 如何查找特定字符串所在的 TCP 流&#xff0c;原始问题如下&#xff1a; 仔细琢磨了下&#xff0c;基于我对 Wireshark 的使用经验&#xff0c;感觉一步到位实现比较困难&#xff0c;所以想着说用 Wireshark C…

Tomcat启动闪退怎么解决(文末附终极解决方案)

AI是这么告诉我的 Tomcat启动时出现闪退问题可能由多种原因引起&#xff0c;以下是解决此类问题的一些通用方法&#xff1a; 检查环境变量&#xff1a; 确保已经正确设置了JAVA_HOME和JRE_HOME环境变量&#xff0c;并指向正确的Java安装路径。将Java的bin目录添加到系统的PATH…

用户中心(下)

文章目录 计划登录逻辑接口简单说明cookie和session写代码流程后端逻辑层控制层测试用户管理接口 前端简化代码对接后端代理 计划 开发完成后端登录功能 &#xff08;单机登录 > 后续改造为分布式 / 第三方登录&#xff09;✔开发后端用户的管理接口 &#xff08;用户的查询…

LLaMA详细解读

LLaMA 是目前为止&#xff0c;效果最好的开源 LLM 之一。精读 LLaMA 的论文及代码&#xff0c;可以很好的了解 LLM 的内部原理。本文对 LLaMA 论文进行了介绍&#xff0c;同时附上了关键部分的代码&#xff0c;并对代码做了注释。 摘要 LLaMA是一个系列模型&#xff0c;模型参…

u盘格式化后电脑读不出来怎么办?u盘格式化的东西还能恢复吗

随着科技的快速发展&#xff0c;U盘已成为我们日常生活和工作中不可或缺的数据存储工具。然而&#xff0c;有时我们可能会遇到U盘格式化后电脑无法读取的情况&#xff0c;或是误格式化导致重要数据丢失。面对这些问题&#xff0c;我们该如何应对&#xff1f;本文将为您详细解答…