目录
一、测试用例的基本要素
二、测试用例
1,等价类
2,边界值
3,因果图
4,正交排列
5,错误猜测法
6,场景设计法
测试用例:测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步 骤、测试数据、预期结果等要素。
评价测试用例的标准:对比好坏代码的评价标准
用例表达清楚,无二义性
用例可操作性强。
用例的输入与输出明确。一条用例只有一个预期结果。
用例的可维护性好。
用例对需求的覆盖率高, 暴露程序Bug的能力强力。
依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用 例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能 穷举测试的问题。
有效等价类:对于程序的规格说明书是合理的、有意义的输入数据构成的集合,利用有效等价类验证程序是 否实现了规格说明中所规定的功能和性能
无效等价类:根据需求说明书,不满足需求的集合。
用户需求
用户名 (6-15)|字符型A-Z,不区分大小写|
有效等价类:A-Z, a-z,大小写混合
无效等价类:小于6位,大于15位
public static void main(String[] args) {
int a = 0;
if (a > 10){
System.out.println("a大于10");
}else {
int b = 0;
b = a;
System.out.println("b等于a");
}
}
输入:
a > 10大于10的所有数据归为一个等价类
a < 10小于10的所有数据归到一个等价类
1. 输入框长度为1-11,取边界值为:1、11、12、0
2. 运动员的参赛项目为1-3项,取边界值为:0项、1项、3项、4项
3. 查询面页面有999行,每50行为一页,取边界值为:输出0行、1行、50行、51行、999行
假设业务单据的处理规则为:“淘宝618活动,提单已提交,订单合计金额大于300元或有红包,则进优惠”。
1. 对于这条业务规则,首先通过分析所有可能的输入和可能的输出,可以得到如下结果:
● 输入:订单已提交、金额大于300、有红包。
● 输出:优惠、不优惠。
2. 然后,进行第二步,找出输入与输出之间的对应关系。通过分析,可以看出有以下的对应关系。
(1)订单已提交,订单金额大于300元,则优惠。
(2)订单已提交,订单金额小于等于300元,无红包,不优惠
(3)订单已提交,有红包,则优惠。
(4)订单已提交,订单金额大于300元,有红包,则优惠。
(5)订单未提交,不优惠。
3. 为了方便画出因果图和判定表,需要对所有输入和输出编号,现在编号如下。
1:订单已提交。 2:订单金额大于300元。 3:有红包 21:优惠 22:不优惠
4. 画因果图
5. 画判定表:有3个条件,输出有2个取值,所以表的列数为2x2x2=8
6. 最终的测试用例
1,2,3,4,5(包含6,7,8)。
正交法的目的是为了减少用例数目。用尽量少的用例覆盖输入的两两组合。
因素(Factor):在一项试验中,凡欲考察的变量称为因素(变量)
水平(位级)(Level):在试验范围内,因素被考察的值称为水平(变量的取值)
正交表的构成:
行数(Runs):正交表中的行的个数,即试验的次数,用N代表。
因素数(Factors):正交表中列的个数,用C代表。
水平数(Levels):任何单个因素能够取得的值的最大个数。正交表中的包含的值为从0到数“水平数-1”或从1到“水平 数”,用T代表。
正交表的表示形式: L=行数(水平数*因素数) L=N(TC)
正交法设计测试用例的步骤:
1、有哪些因素(变量)
2、每个因素有哪几个水平(变量的取值)
3、选择一个合适的正交表
4、把变量的值映射到表中
5、把每一行的各因素水平的组合作为一个测试用例 6、加上你认为可疑且没有在表中出现的用例组合
邮箱注册
姓名,email,密码,确认密码,验证密码,验证码
2*2*2*2*2 = 32,选几个输入的最优的取值组合进行测试较少的测试用例去判断整个功能的情况
(1)姓名,email,密码,确认密码,验证码
(2)填写,不填写
(3)因素数:5,水平数:2
(4)列 = 因素数=5,行=(水平数-1)*因素数 + 1 = 6
(5)填充数据
(6)根据正交表的每一行设计测试用例
姓名填写,email不填写,密码填写,确认密码填写,验证码不填写,注册失败
姓名不填写,email填写,密码不填写,确认密码不填写,验证码不填写,注册失败
姓名填写,email不填写,密码填写,确认密码,验证码填写,注册失败
姓名填写,email不填写,密码不填写,确认密码填写,验证码不填写,注册失败
姓名不填写,email填写,密码填写,确认密码不填写,验证码填写,注册失败
姓名不填写,email不填写,密码填写,确认密码填写,验证码填写,注册失败
(7)补充测试用例
姓名填写,email填写,密码填写,确认密码填写,验证码填写,注册成功
姓名不填写,email不填写,密码不填写,确认密码不填写,验证码不填写,注册失败
把各个孤立的功能点按照一定的策略合起来,形成一个场景
ATM取钱
插卡——选择语言——输入密码——输入存款金额——取钱——推开
1,成功插卡进ATM机,选择适合的语言,密码输入正确,输入小于银行卡余额的钱数,成功取钱,退卡(以上所有操作都在银行限定的长时间不操作吞卡时间范围之内)
2,卡插反了,ATM机给出“请重新插卡!”提示,重新正确插卡,选择合适的语言,密码输入正确,金额输入正确,成功取钱,退卡;
3,插入无效卡,ATM机给出“请插入有效的银行卡!”提示,重新正确插卡,选择合适的语言,密码输入正确,金额输入正确,成功取钱,退卡;
4,插入消磁的银行卡,ATM机给出“该银行卡无效!”取款失败;
5,插入注销后的银行卡,ATM机给出“该银行卡无效!”取款失败;
现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处 理结果就形成事件流。该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,是测试 用例更容易理解和执行。
典型的应用是是用业务流把各个孤立的功能点串起来,为测试人员建立整体业务感觉,从而避免陷入功能细节忽视 业务流程要点的错误倾向