1.1 黑盒测试
概念:测试者在不考虑程序内部结构的情况下,仅依据程序功能的需
求规范来设计测试用例。
黑盒测试的方法
1.1.1等价类划分
原理:等价类划分吧程序划分为若干个部分,从每个部分选取少 许代表性数据当测试用例。
等价类划分的情况
有效等价类,即合理的,有意义的输入数据结构的集合。
无效等价类,即不合理的,无意义的输入数据结构的集合。
按等价类划分设计测试用例的原则
1 为每个等价规定唯一的编号。
2 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等 价类,重复这一步,直到所有的有效等价类都被覆盖为止。
3设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类, 重复这一步,直到所有的无效等价类都被覆盖为止。
等价类划分案例
案例场景
某城市电话号码由三部分组成。它们的名称和内容分别是:
(1)地区码:空白或3位数字;
(2)前 缀:非‘0’或非'1'的3位数字;
(3)后 缀:4 位数字。
假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码
等价类表
需求 |
有效等价类 |
编号 |
无效等价类 |
编号 |
地区码:空白或3位数字 |
空白 |
1 |
大于3位数字 |
5 |
000<=输入数值<=999 |
2 |
小于3位数字 |
6 |
|
存在非数字字符 |
7 |
|||
前缀:非'0'或非'1'的3位数字 |
200<=输入数值<=999 |
3 |
首字为1 |
8 |
大于3位数字 |
9 |
|||
小于3位数字 |
10 |
|||
首字为0 |
11 |
|||
存在非数字字符 |
12 |
|||
后缀:4 位数字 |
0000<=输入数值<=9999 |
4 |
大于4位数字 |
13 |
小于4位数字 |
14 |
|||
存在非数字字符 |
15 |
|||
|
|
注意点:这里第二个需求中写的是前缀非“0”或“1”的3位数,需求不是很明确,无法确定是开头不能还是3为书中都不能出现,所以需要跟“客户(老师)”明确需求。
具体的覆盖数据
测试用例标识 |
输入 |
期望输出 |
用例描述 |
覆盖等价类 |
1 |
-233-5655 |
接受 |
地区码为空,3个部分均在有效区间内 |
1,3,4 |
2 |
554-545-5454 |
接受 |
3个部分均在有效区间内 |
2,3,4 |
3 |
45-878-5645 |
拒绝 |
地区码少一位数字 |
6,3,4 |
4 |
5466-654-8785 |
拒绝 |
地区码多一位数字 |
5,3,4 |
5 |
d54-455-5686 |
拒绝 |
地区码中有非数字字符 |
7,3,4 |
6 |
456-056-5645 |
拒绝 |
前缀首字为0 |
2,4,1 |
7 |
452-165-5645 |
拒绝 |
前缀首字为1 |
2,4,11 |
8 |
455-6545-6466 |
拒绝 |
前缀多一位数字 |
2,4,9 |
9 |
456-54-5645 |
拒绝 |
前缀少一位数字 |
2,4,10 |
10 |
456-f54-4656 |
拒绝 |
前缀中有非数字字符 |
2,4,12 |
11 |
452-564-645 |
拒绝 |
后缀少一位数字 |
2,4,14 |
12 |
654-564-65566 |
拒绝 |
后缀多一位数字 |
2,4,13 |
13 |
455-654-654f |
拒绝 |
后缀中有非数字字符 |
2,4,15 |
1.1.2边界值方法
原理:边界值分析法是对等价类划分的进一步补充,通过选择等价类边界值的测试用例来发现更多的错误,因为大量的错误大多发生在输入输出与辩解而不使其取值范围内。
边界值分析法选则测试用例的原则
1 如果输入条件规定取值的范围,则选取刚好达到该范围的边界值,以及刚刚超过和刚刚低于这个范围的边界值。
2 如果规定的是输入值的个数,则选取最大个数,最小个数,以及比最大个数大一个的数和比最小个数小一个的数。
3 如果规定的是输入域或输出域的有序集合,则选取集合的第一个元素和最后一个元素作为测试用例。
4 分析规格说明书,找出其他可能的边界值条件。
5 根据规格说明书的每个输出条件,按照第一条原则选取测试用例
边界值方法案例
持卡人*消费交易单笔金额满2000元人民币或等值外币,即可享20元人民币或等值外币返现;
*消费单笔满3000元人民币或等值外币,即可享30元人民币或等值外币返现;
*消费单笔满5000元人民币或等值外币,即可享50元人民币或等值外币返现;
每张卡片每个自然月最高返现500元人民币或等值外币.每笔消费交易返现一次,并且单笔消费额不包含货币转换费。
覆盖数据表
测试用例标识 |
输入(消费RMB) |
期望输出 |
Test1 |
1999 |
没有返现 |
Test2 |
2000 |
返现20元 |
Test3 |
2001 |
返现20元 |
Test4 |
2999 |
返现20元 |
Test5 |
3000 |
返现30元 |
Test6 |
3001 |
返现30元 |
Test7 |
4999 |
返现30元 |
Test8 |
5000 |
返现50元 |
Test9 |
5001 |
返现50元 |
Test10 |
单月消费50000,分10笔,每笔5000 |
每月返还500 |
Test11 |
单月消费49000,8笔5000,3笔3000 |
每月返回490 |
注意点:本来按照测试用例的原则,只需要取小于边界值和刚好边界值这两个测试用例的数据就够了,但是像这种和金钱有关的系统测试都必须谨慎谨慎再谨慎,所以也要把刚超过边界值的测试用例也取上。
1.1.3因果图法
原理:因果图法考虑了等价类划分法和边界值法所没有考虑到的输入情况之间的各种组合以及输入条件之间的相互制约关系。
因果图中主要原因与结果之间的关系
1 恒等:原因出现,则结果一定出现,反之,则结果不出现。
2 非:原因出现,则结果一定不出现,反之,则结果出现。
3 或:当有好几个原因是,只要有其中一个出现,则结果就会出现,一个原因都不出现时,结果才不会出现。
4 与:当有好几个原因时,只要有一个原因不出现,则结果不会出现,只有所有原因出现,结果才会出现。
因果图中原因和原因以及结果和结果之间的约束条件
1 互斥:表示两个原因不会同时成立。
2 包含:表示3个原因中至少有一个会成立。
3 唯一:表示两个原因当中必须有一个成立且有且仅有一个成立。
4要求:两个原因中一个出现时另一个必须出现,不可能一个出现而另一个不出现。
5 屏蔽(结果):两个结果a,b,a是1时,b必须是0,而a是0时,b的值不确定。
因果图案例
某软件的一个模块的需求规格中描述:
年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。
非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。
原因结果示意图
原因 |
结果 |
年薪制员工过失 |
扣年终风险金的2% |
年薪制员工严重过失 |
扣年终风险金的4% |
非年薪制员工过失 |
扣当月薪资的4% |
非年薪制员工严重过失 |
扣当月薪资的8% |
因果图视图
真值表