黑盒: 等价类划分、边界值分析、流程图、错误推测法等……
白盒: 静态(代码审查……)、动态(边界值测试、逻辑驱动测试……)
黑盒测试
包括:等价类划分法、边界值分析法、因果图法、决策表法、错误推测法、正交试验法、场景法。
1、黑盒测试的目的
–功能错误或者遗漏;
–界面错误,或者不美观;
–外部信息访问错误;
–初始化和终止错误;
–接口上,能否正确接收输入数据,并产生正确的输出信息;
–性能错误。
2.等价类划分法
等价类划分法: 依据需求对输入的范围进行细分,然后再分出的每一个区域内选取一个代表性的测试数据开展测试。
{
1.有效等价类
2.无效等价类
}
比如:软件需求是,计算两个1-100之间整数的和
那么:有效等价类则是x(x属于1-100),无效等价类则是y(y<1或y>100或y不是整数或y不是数字等等……)
因此,在设计测试用例时:
测试用例表
用例编号 | 所属等价类 | 加数1 | 加数2 | 结果 |
---|---|---|---|---|
1 | 2 | 1 | 2 | 3 |
2 | 1 | 0 | -1 | wrong input |
3 | 3 | 111 | 112 | wrong input |
4 | 4 | 1.1 | 1.2 | wrong input |
5 | 5 | a | b | wrong input |
6 | 6 | @ | # | wrong input |
7 | 7 | 空格 | 空格 | wrong input |
8 | 8 | wrong input | ||
…… | …… | …… | …… | …… |
等价类划分法的步骤:
1.列出等价类表,为等价类表中的每一个等价类分别规定一个唯一编号。
2.设计一个新的测试用例,是他尽可能多的覆盖尚未覆盖到的有效等价类。(重复步骤2直至所有的有效等价类被覆盖)
3.设计一个新的用例,仅覆盖一个尚未覆盖到的无效等价类。(重复3直至所有无效类被全部覆盖)
深入讨论……
等价类测试用例的分类 弱和强、健壮与一般。
单缺陷假设与多缺陷假设产生弱等价类与强等价类之分;
是否进行无限小数据的处理则产生了健壮与一般等价类之分。
关系是对应的:单缺陷->弱;多缺陷->强;处理无效数据->健壮;不处理无效数据->一般;
所以组合起来就是2*2=4种: 强一般;弱一般;强健壮;弱健壮;
不细说了,多缺陷的话,将每个变量的有效等价类做笛卡尔积,测试用例需要覆盖笛卡尔积的每个元素。
还拿1-100整数和例子来说吧。
加数1和加数2可以作为两个可能的缺陷。
比较直观的方式:看图!
另外话说这个思考问题,测试用例的数量不应该是和每个变量的可能取值相关的么?假如有三个变量,可能的取值分贝时3种,3种,2种,那数量就是3*3*2=18.种。
那么,该如何选择等价类测试的类型呢?
1)弱形式不如对应的强形式的测试全面。
2)如果实现语言是强类型,则没有必要使用健壮形式的测试。
3)如果错误条件非常重要,则进行健壮形式的测试。
4)强等价类测试假设变量是独立的,相应的测试用例相乘会引起冗余问题。如果存在依赖关系,则常常会生成错误测试用例。
下面举几个简单例题:
1.qq登录器需要输入正确的账号(暂不考虑密码)
* | 有效等价类 | 无效等价类 |
---|---|---|
qq账号 | 1、长度在6-10位之间 | 3、长度小于6 4、长度大于10 |
2、数据类型是自然数 | 5、负数 6、小数 7、英文字母 8、字符 9、中文 10、空 …… |
用例编号 | 所属等价类 | 账号 | 结果 |
---|---|---|---|
1 | 1、2 | 20200606 | right |
2 | 3 | 20 | wrong input |
3 | 4 | 12345678910 | wrong input |
…… | …… | …… | …… |
2.卖保险的保险费计算程序。
某保险公司人寿保险的保费计算方式为:
保险费=投保额*保险费率
其中,保险费率根据投保人的个人信息的不同(年龄、性别、婚姻状况、抚养人数)而有所不同。体现在不同的上述条件下对应的点数设定不同,10点及10点以上保险费率为0.6%,10点一下保险费率为0.1%,具体规则见下表。
需求分析:谁是输入、谁是输出?
输入:投保人个人信息+投保额
中间输出:投保率
最终输出:保险费
输入有几个变量?
年龄;性别;婚姻状况;抚养人数;4变量。
等价类划分测试用例还是采用的弱(多缺陷)健壮(处理无效数据)等价类测试比较合适。
因为没有不留余漏的全部覆盖,所以是弱类型。
设计测试用例
3.三角形问题
主要想表达的意思:等价类划分的角度和方式不唯一。
以不同的角度划分等价类:
输出值域等价类
输入条件(数据范围)的等价类
以“整数相等”关系划分的等价类
以两边之和与第三边之间的关系
其他习题
电话号码
某城市电话号码由三部分组成,分别是:
地区码—— 空白或4位数字;
前 缀——为三位数字,但不能为“0”,“1”;
后 缀——4位数字。
假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。请用强一般等价类方法进行测试,设计测试用例。
答
等价类划分表
* 条件 | 有效等价类 | 无效等价类 |
---|---|---|
地区码 | 1、空白 2、四位数字 | 3、非四位的数字 4、非数字 |
前缀 | 5、不含0或1的三位数字 | 6、含0或1的3位数字 7、非三位 8、非数字 |
后缀 | 9、四位数字 | 10、非四位的数字 11、非数字 |
其实我觉得这个等价类可以再细分,亦可以再粗略。
强一般等价类测试用例表
用例编号 | 覆盖范围 | 电话号 | 预期结果 |
---|---|---|---|
1 | 1、5、9 | +234+0000 | 接收 |
2 | 2、5、9 | 0000+234+0000 | 接收 |
3 | 3 | 000+234+0000 | 拒绝 |
4 | 4 | asd+234+0000 | 拒绝 |
5 | 6 | 0000+111+0000 | 拒绝 |
6 | 7 | 0000+2345+0000 | 拒绝 |
7 | 8 | 0000+asd+0000 | 拒绝 |
8 | 10 | 0000+234+000 | 拒绝 |
9 | 11 | 0000+234+asdf | 拒绝 |