[软件测试_5] 设计用例 | 等价法 | 判定表法 | 正交法(allpairs.exe)
目录
一、基于需求进行测试用例的设计
【注册邮箱账号】
1、具体的设计方法
(1)等价类
(2)边界值
A. 边界点
(3)因果图(判定表法)
A. 因果图的需要掌握的基本知识
a. 恒等
b. 与
c. 或
d. 非
B. 因果图法设计测试用例的步骤
C. 判定表
【淘宝 618 活动】
(4)正交法(正交排列)
因果法设计用例太多怎么办?
A. 正交表的表示形式
B. 正交表的两条性质
C. 正交法设计测试用例的步骤
【注册的需求】
A. 因素和水平
B. 利用 allpairs 画正交表
a. 先将水平和因素填写到 Excel 表格中
b. 将 Excel 表格内容复制到 .txt 文件中
c. Ctrl+S 保存到 allpairs 的下载路径
d. 进入 cmd(windows+R)将路径切换到 allpairs 安装路径下
- 等价测试=边界值+有效值+无效值
- 判定表:实际情况的排列
- 正交表:实际情况的组合 27-->9(举例优化)
一、基于需求进行测试用例的设计
基于需求设计测试用例 是测试设计和开发测试用例的基础
- 第一步就要分析测试需求,验证需求是否正确、完整、无二义性,并且逻辑自洽。
- 在需求正确的基础上细化测试需求,从测试需求提炼出一个个测试点或者测试项,然后根据每一个测试点进行测试用例的设计。
在分析测试需求时,一般分为功能测试需求和非功能测试需求。
- 基于需求的设计方法也是总的设计测试用例的方法,在工作中,我们需要参考需求⽂档 / 产品规格说明书来设计测试用例。
- 测试人员接到需求之后,要对需求进行分析和验证,从合理的需求中进⼀步分析细化需求,从细化的需求中找出测试点,根据这些测试点再去设计测试用例。
下面以邮箱注册账号需求为例来设计测试用例:
【注册邮箱账号】
明确需求中的功能点:账号注册,账号登陆
结合万能公式设计测试点:
1、具体的设计方法
(1)等价类
注册邮箱账号设计的测试用例存在用例还未完全设计完成,“姓名必填,6~15位的字符类型”,这样⼀个具体的需求该如何来设计测试⽤例呢?
- 测试的时候通过穷举法来测试 6 位、7 位、8 位 ......14 位,15 位是否测试通过
- 这样的方法能够满足测试的要求吗?
- 若此时把范围从 “6~15位” 改成 “6~150位呢”?
- 这样⼀个简单的测试点需要测试多久呢,显示是不符合企业测试要求的。而等价类法的出现就解决了穷举法不能解决的问题。
依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出⼀个测试用例,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题。
⽣活中等价类的案例: 因材施教的例⼦:原 则上讲,老师应该依据每个学生自身的情况,指定符合的学习方案。 但是实际上学生太多,老师管不过来, 只能分成几类:
- 优等生强调知识面的扩展和综合能力的提升;
- 中等生强调夯实基础,查缺补漏;
- 差等生强调优先掌握重点,暂时跳过难点
- ... ...
思路:输入的集合是无穷的,不能全都覆盖到。
依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题。
- 有效等价类:对于程序的规格说明书是合理的、有意义的输入数据构成的集合,利用有效等价类验证程序是否实现了规格说明中所规定的功能和性能。满足用户需求输入集合。
- 无效等价类:根据需求说明书,不满足用户需求输入的集合。
根据等价类设计测试用例的方式:
- 确定有效等价类和无效等价类
- 编写测试用例,设计具体测试数据
根据边界值将邮箱注册账号的用例进行完善:
缺点:等价类只考虑输入域的分类,没有考虑输入域的组合,需要其他的设计方法和补充。
【超市买水果】
有效等价类:苹果、梨子、西瓜...
无效等价类:青菜、大米、饮料...
|用户名 | 必填,录入用户名 | 6至15有效等价类:6~15位
无效等价类:小于6位 && 大于15位
等价类思想设计测试用例的步骤:
- 充分理解需求
- 划分有效等价类和无效等价类
- 针对有效等价类和无效等价类中设计测试用例。
(2)边界值
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
日常语言中的 “边界” 漏洞:考完试发成绩了, 老师布置寒假作业:超过 60 分的,所有题目抄写 1 遍,低于 60 分的,所有题目抄写 3 遍。于是小明就没有写作业,因为他刚好 60 分。
边界值包含:边界值 + 次边界值
- 输入框长度为 1~11,取边界值为:1、11、12、0。
- 运动员的参赛项目为 1~3 项,取边界值为:0项、1项、3项、4项。
- 查询面页面有 999 行,每 50 行为一页,取边界值为:输出0行、1行、50行、51行、999行。
继续将上述用例通过边界值补充完整:
边界值即给定返回的左数据和右数据。
选择次边界值的时候,根据边界值的有效无效情况来定:
- 如果边界值为有效等价类中的数据,则次边界值为无效等价类中的数据。
- 如果边界值为无效等价类中的数据,则次边界值为有效等价类中的数据。
A. 边界点
上点:边界上的点。
内点:边界内的点(不管范围是闭区间开始开区间)。
离点:边界值附近的一个点(闭区间:区间外距离上点最近的点,开区间:区间内距离上点最近的点)。
(3)因果图(判定表法)
因果图是一种简化了的逻辑图,能直观地表明程序输入条件(原因)和输出动作(结果)之间的相互关系。
- 因果图法是借助图形来设计测试用例的一种系统方法,特别适用于被测试程序具有多种输入条件、程序的输出又依赖于输入条件的各种情况。
- 通过具体的方法能够将测试用例设计的更加完整和规范。
- 需求中会存在各种各样的场景,现在我们把需求改成如下的要求:
- 用户输入的账号中包含 admin 字符,或者通过内部链接进入注册页面,提交注册按钮成为管理员身份;反之无管理员身份。
通过这个需求可以看出,不同的组合操作可能对应不同的结果。采用正交法无法解决这样的问题。
而正交法能够解决需要考虑输入之间的组合关系对应不同结果的场景。
A. 因果图的需要掌握的基本知识
a. 恒等
条件为真,结果一定为真。
b. 与
所有的条件都得满足,如果有一个条件不满足,那么结果就为假。
c. 或
满足其中一个条件结果就为真,如果条件全部为假,那么结果就为假。
d. 非
条件为假,结果才为真。
B. 因果图法设计测试用例的步骤
- 分析需求中所有可能的输入条件和输出条件。
- 找出输入条件与输出条件之间的对应关系。
- 设计判定表。
- 根据判定表编写测试用例,把判定表对应到每一个测试用例。
C. 判定表
判定表(Decision table)是一种表达逻辑判断的工具。
通过该图,可以把所有条件对应的结果清晰的表达出来,需要借助该表来清晰的写出测试用例。
确认了步骤后,我们使用判定表法进⼀步对上述需求进行测试用例的设计:
- 确认需求中输⼊条件和输出条件
- 输入条件:账号包含 admin 字符(a)、内部注册链接(b)、点击注册按钮(c)
- 输出条件:管理员(1)、无管理员(2)
- 找出输⼊条件和输出条件之间的关系
输入条件:ac ab bc abc a b c 非abc
对应结果:1 2 1 1 2 2 2 2
- 画判定表
有 3 个条件,输出有 2 个取值,所以表的列数为:2*2*2=8
根据判定表编写测试用例:
- 账号包含 admin,非内部注册链接,点击注册按钮,为管理员身份
- 账号包含 admin,内部注册链接,不点击注册按钮,非管理员身份
- 账号不包含 admin,内部注册链接,点击注册按钮,为管理员身份
- 账号包含 admin,内部注册链接,点击注册按钮,为管理员身份
- 账号包含 admin,非内部注册链接,不点击注册按钮,非管理员身份
- 账号不包含 admin,非内部注册链接,点击注册按钮,非管理员身份
- 账号不包含 admin,非内部注册链接,不点击注册按钮,非管理员身份
【淘宝 618 活动】
假设业务单据的处理规则为: “ 淘宝 618 活动,订单已提交,订单合计金额大于 300 元或有红包,则优惠” 。
a. 对于这条业务规则,首先通过分析所有可能的输入和可能的输出,可以得到如下结果:
- 输入:订单已提交、金额大于 300、有红包。
- 输出:优惠、不优惠。
b. 第二步,找出输入与输出之间的对应关系。通过分析,可以看出有以下的对应关系。
- 订单已提交,订单金额大于300元,有红包,则优惠。
- 订单已提交,订单金额大于300元,没有红包,则优惠。
- 订单已提交,订单金额小于等于300元,有红包,则优惠。
- 订单已提交,订单金额小于等于300元,没红包,则不优惠。
- 订单不提交,订单金额大于300元,有红包,则不优惠。
- 订单不提交,订单金额大于300元,没有红包,则不优惠。
- 订单不提交,订单金额小于等于300元,有红包,则不优惠。
- 订单不提交,订单金额小于等于300元,没红包,则不优惠。
c. 设计判定表:
d. 把判定表对应到每一个测试用例:
可以在后面补充符合要求的测试要素。
(4)正交法(正交排列)
通过等价类和边界值方法我们完成了部分用例的补充。
当前还剩下⼀个场景的用例未补充完成,“只填写部分选项”,这⾥到底要设计多少测试用例呢?
- 通常来说,为了保证系统的测试覆盖率,我们⾸先能够想到的就是排列组合。
- 假如当前有两个选项 A 和 B,可以设计出都填写、都不填写、填写 A、填写 B 四个测试用例(2²)。
- 假如当前有三个选项 A、B、C,通过设计可以得到 8 个测试⽤例(2³)。
- ... ...
- 当前可选的选项是5个,分别是,姓名、电⼦邮箱、密码、确认密码、验证码。按照排列组合设计出来的⽤例是32个.....
因果法设计用例太多怎么办?
正交法的目的是为了减少用例数目。用尽量少的用例覆盖输入的两两组合。
- 正交试验设计(Orthogonal experimentaldesign)是研究多因素多水平的一种设计方法,它是根据正交性,由试验因素的全部水平组合中挑选出部分有代表性的点进行试验,
- 通过对这部分试验结果的分析了解全面试验的情况,找出最优的水平组合。
- 正交试验设计是一种基于正交表的、高效率、快速、经济的试验。
可以理解为正交求的是组合,而因果法求的是排列
正交表:
如图最简单的正交表是 L(4)(2(3))
含意如下:
- “L” 代表正交表;L 下角的数字 “4” 表示有 4 横行,简称行,即要做四次试验;
- 括号内的指数 “3” 表示有 3 纵列,简称列,即最多允许安排的因素是 3 个;
- 括号内的数 “2” 表示表的主要部分只有 2 种数字,即因素有两种水平 1 与 2。
(原本可能要 2*2*2==8种,但通过正交表的话4种(组合)就够了)
- 因素(Factor):对指标的影响条件,通常是正交表中的⼀列。 在一项试验中,凡欲考察的变量称为因素(变量)。
- 水平(位级)(Level):因素对应的可选项。在试验范围内,因素被考察的值称为水平(变量的取值)。
正交表的构成:因素数、水平数、行数。
- 行数(Runs):正交表中的行的个数,即试验的次数,用 N 代表。
- 水平数( Levels) : 任何单个因素能够取得的值的最大个数。正交表中的包含的值为从 0 到数 “ 水平数 -1” 或从 1 到 “ 水平数 ” ,用 T 代表。
- 因素数(Factors):正交表中列的个数,用 C 代表。
A. 正交表的表示形式
L= 行数 ( 水平数^ 因素数 ) L=N(TC)
B. 正交表的两条性质
- 每一列中,不同的数字出现的次数都一样多。(见荧光笔点)
- 任何两列中的各有序数对出现的次数都一样多(数字的排列方式齐全而且均衡)。(见横向举例)
根据正交表的性质,⼀般人很难通过手动设计出正交表。
C. 正交法设计测试用例的步骤
- 找到因素和⽔平
- ⽤ allparis ⼯具⽣成正交表
- 将因素和水平写入 Excel 表格中
- allparis 目录下创建新的文本文件 new.txt,复制 Excel 中的因素和水平,直接粘贴到文本中保存并退出。
- 使用 allparis 命令生成正交表:allparis.exe new.txt>zhengjiao.txt
- 根据正交表编写测试用例
- 补充遗漏的重要测试用例
充分理解需求(有哪些元素(变量))
- -> 确定因素水平(每个因素有哪几个水平(变量的取值))
- -> 画正交表(选择一个合适的正交表,把变量的值映射到表中)
- -> 补充正交表
- -> 将正交表转换成测试用例(把每一行的各因素水平的组合作为一个测试用例,加上你认为可疑且没有在表中出现的用例组合)
【注册的需求】
以注册为例,采用正交法补全剩下的测试用例。
- 姓名、邮箱、密码、确认密码、验证码必须全部输入,才能进行注册。
A. 因素和水平
因素:姓名、邮箱、密码、确认密码、验证码。
水平:填写、不填写
B. 利用 allpairs 画正交表
a. 先将水平和因素填写到 Excel 表格中
b. 将 Excel 表格内容复制到 .txt 文件中
allparis 目录下创建新的文本文件 20240506.txt,复制 Excel 中的因素和水平,直接粘贴到文本中保存并退出。
c. Ctrl+S 保存到 allpairs 的下载路径
d. 进入 cmd(windows+R)将路径切换到 allpairs 安装路径下
进入到 allpairs 的目录下,执行命令:allpairs.exe 文件名 > 结果文件名(将⽣成的正交表数据放入20240506_result.txt 文件中)
⭕ 没有任何的提示表示生成成功。
至此,就可以看到生成了 2025524_result.txt:
查看
根据生成的正交表来编写测试用例,继续将重要的用例补全(例如:全部填写 / 全部不填写)
注意:~ 意味着此时这个取值可以是任意的选项:可以填写,也可以不填写。
使用 allparis 生成的正交表和预期有出入,但是不影响我们用来设计测试用例。