测试用例的基本要素
测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。
万能公式:功能测试+性能测试+界面测试+兼容性测试+易用性测试+安全性测试
-
功能测试:可能来自于需求文档,也可能来自生活经验
-
性能测试:功能没问题不代表性能一定好,性能往往体现在极端情况下。
-
界面测试:工作中参考设计图设计界面测试用例。颜色,形状,大小,材质,文字,输入框,图片,下拉框等等
-
兼容性测试:浏览器的兼容性,版本兼容性,系统兼容性,数据兼容性
-
易用性测试:软件是否具备简单易上手的属性
-
安全性测试:密码是否加密,数据库里是否对隐私数据加密,SQL注入
案例
水杯的测试用例
登陆页面测试用例
设计测试用例的具体设计方法
基于需求进行测试用例的设计
基于需求设计测试用例是测试设计和开发测试用例的基础。
第一步就要分析测试需求,验证需求是否正确、完整、无二义性,并且逻辑自洽。在需求正确的基础上细化测试需求,从测试需求提炼出一个个测
试点或者测试项,然后根据每一个测试点进行测试用例的设计。
在分析测试需求时,一般分为功能测试需求和非功能测试需求
下面以我们常用的百度云盘手机端为例进行分析功能
在进行需求分析的时候,我们还要考虑业务规则如,上传文件的大小有没有限制;一次性最多上传多少数量的文件,比如小于100个;文件夹最多有多少层等等;
等价类
依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题。
- 有效等价类:对于程序的规格说明书是合理的、有意义的输入数据构成的集合,利用有效等价类验
证程序是否实现了规格说明中所规定的功能和性能
- 无效等价类:根据需求说明书,不满足需求的集合。
等价类只考虑输入域的分类,没有考虑输入域的组合,需要其他的设计方法和补充。
边界值
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。
通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
边界值=无效边界+有效边界
- 输入框长度为1-11,取边界值为:1、11、12、0
- 运动员的参赛项目为1-3项,取边界值为:0项、1项、3项、4项
- 查询面页面有999行,每50行为一页,取边界值为:输出0行、1行、50行、51行、999行
判定表(因果图)
判定表(Decision table)是另一种表达逻辑判断的工具,是一种简化了的逻辑图,能直观地表明程序输入条件(原因)和输出动作(结果)之间的相互关系。判定表法是借助图形来设计测试用例的一种系统方法,特别适用于被测试程序具有多种输入条件、程序的输出又依赖于输入条件的各种情况。
判定表设计测试用例的步骤:
- 确认输入条件和输出条件
- 找出输入条件和输出条件之间的关系
- 画判定表
- 根据判定表编写测试用例
案例一:
假设业务单据的处理规则为:“淘宝618活动,订单已提交,订单合计金额大于300元或有红包,则为优惠订单”。
- 对于这条业务规则,首先通过分析所有可能的输入和可能的输出,可以得到如下结果:
● 输入:订单已提交、金额大于300、有红包。
● 输出:优惠、不优惠。
- 找出输入与输出之间的对应关系。通过分析,可以看出有以下的对应关系。
(1)订单已提交,订单金额大于300元,则优惠。
(2)订单已提交,订单金额小于等于300元,无红包,不优惠
(3)订单已提交,有红包,则优惠。
(4)订单已提交,订单金额大于300元,有红包,则优惠。
(5)订单未提交,不优惠。
(6)订单未提交,订单金额小于等于300元,无红包,不优惠
- 为了方便画出因果图和判定表,需要对所有输入和输出编号,现在编号如下。
1:订单已提交。
2:订单金额大于300元。
3:有红包
21:优惠
22:不优惠
- 画因果图
- 画判定表:有3个条件,输出有2个取值,所以表的列数为2x2x2=8
- 根据判定表编写测试用例
1)有红包并提交订单,则该订单为有优惠订单。
2)金额大于300元并提交订单,则该订单为有优惠订单。
3)有红包,金额大于300元,提交订单,则该订单为有优惠订单。
4)有红包,金额小于300元,不提交订单,则该订单为无优惠订单。
5)无红包,金额小于300元,不提交订单,则该订单为无优惠订单。
6)无红包,金额小于300元,提交订单,则该订单为无优惠订单。
7)有红包,金额大于300元,不提交订单,则该订单为无优惠订单。
8)无红包,金额小于300元,不提交订单,则该订单为无优惠订单。
因果图需要掌握的基本知识
- 恒等
恒等:如果原因为真,那么结果必定为真。 例如:动物园运来大熊猫,动物园一定有大熊猫
- 与
只有2个原因都为真,那么结果为真 例如:北京姑娘,必须有车且有房
- 或
2个原因中有一个为真时,结果就为真。 例如:长沙姑娘,你有车或者有房
- 非
只有原因为假,结果才为真。 例如:你不好好学习,找到好工作
因果法设计测试用例可以帮助测试人员理清输入和输出的关系,但是对于比较复杂的输入和输出,会耗费大量时间。
场景设计法
现在的软件几乎都是用 事件 触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,是测试用例更容易理解和执行。
典型的应用是是用业务流把各个孤立的功能点串起来,为测试人员建立整体业务感觉,从而避免陷入功能细节忽视业务流程要点的错误倾向。
案例:
以注册为例
想象注册的场景来设计用例,这与根据需求的业务流来设计差不多。主要是想象各种业务流来设计用例
错误猜测法
错误猜测法是对被测试软件设计的理解,过往经验以及个人直觉,推测出软件可能存在的缺陷,从而针对性地设计测试用例的方法。
这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握,还有个人的经验和直觉。
错误推测法和目前流行的“探索式测试方法”的基本思想一致,这类方法在敏捷开发模式下的投入产出比很高,被广泛应运于测试。
这个方法的缺点是难以系统化,并且过度依赖个人能力。
以注册为例
1、校验中特殊字符空格的处理?
2、密码校验中的大小写?
3、姓名中的特殊字符?
4、密码发送是否明文
正交排列
因果法设计用例太多怎么办?
正交法的目的是为了减少用例数目。用尽量少的用例覆盖输入的两两组合。
正交试验设计(Orthogonal experimentaldesign)是研究多因素多水平的一种设计方法,它是根据正交性,由试验因素的全部水平组合中挑选出部分有代表性的点进行试验,通过对这部分试验结果的分析了解全面试验的情况,找出最优的水平组合。正交试验设计是一种 基于正交表 的、高效率、快速、经济的试验。
正交法一般用的比较少,基本不可见。
- 因素(Factor):在一项试验中,凡欲考察的变量称为因素(变量)
- 水平(位级)(Level):在试验范围内,因素被考察的值称为水平(变量的取值)
最简单的正交表是 L4(23)
含意如下:
“L”代表正交表;
L 下角的数字“4”表示有 4 横行,简称行,即要做四次试验;
括号内的指数“3”表示有3 纵列,简称列,即最多允许安排的因素是3 个;
括号内的数“2”表示表的主要部分只有2 种数字,即因素有两种水平1与2。
正交表的特点是其安排的试验方法具有均衡搭配特性。
正交表的构成:
-
行数(Runs):正交表中的行的个数,即试验的次数,用N代表。对应测试用例个数。
-
因素数(Factors):正交表中列的个数,用C代表。对应测试中的输入条件。
-
水平数(Levels):任何单个因素能够取得的值的最大个数。正交表中的包含的值为从0到数“水平数-1”或从1到“水平数”,用T代表。对应测试中输入条件的可能选项。
正交表的表示形式:
L=行数(水平数*因素数) L=N(TC)
正交表的两条性质:
- 每一列中各数字出现的次数相同。
- 任意两列中数字的排列方式齐全且均衡。
一个正交表中也可以各列的水平数不相等,我们称它为混合型正交表,如L8(42×24)
根据正交表设计测试用例的步骤:
- 找出因素和水平
-
生成正交表(需要借助生成正交表的工具:allparis)
- 根据正交表来编写测试用例
- 补充可能存在遗漏但是非常重要的测试用例
案例:
1) 找出因素和水平
- 因素:姓名、电子邮箱、密码、确认密码、验证码
- 水平:填写、不填写
2) 使用allparis工具生成正交表
1> 在Excel中填写因素、‘全1’ 和 ‘全0’ 情况
2>在allparis文件目录下,新建 txt 文件,建Excel表中的内容复制进去并保存。
3>打开终端,找到allparis文件路径,执行01.txt,并将正交表结果保存到新文件中。
这里01result.txt文件已经生成
~填写: 表示可以任意填写或者不填写
这里我们可以发现allparis生成的正交表不满足正交表的第二点性质:任意两列中数字的排列方式齐全且均衡
allparis生成的正交表跟实际的正交表有出入,但是不影响我们使用allparis生成正交表。
3) 根据正交表编写测试用例
- 全部填写姓名、电子邮箱、密码、确认密码、验证码
- 填写姓名,不填写电子邮箱、密码、确认密码、验证码
- 不填写姓名、密码、验证码,填写电子邮箱、确认密码
- 不填写姓名、电子邮箱、确认密码,填写密码、验证码
- 填写姓名、电子邮箱、密码,不填写确认密码、验证码
- 不填写姓名、电子邮箱、密码,填写确认密码、验证码
4)补充可能存在遗漏但是非常重要的测试用例
- 全部不填写姓名、电子邮箱、密码、确认密码、验证码