软件测试之黑盒测试(等价类、边界值、因果图、功能图)
软件测试之黑盒测试
一、黑盒测试的基本概念
黑盒测试也称功能测试,通过测试来检测每个功能是否都
能正常使用。
在测试中,黑盒测试完全不考虑程序内部结构,仅对程序接口进行测试。只检查程序功能是否能够按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。进行黑盒测试的目的是试图发现以下类型的错误:
功能错误
数据结构或外部数据库访问错误
性能错误
界面错误
初始化和终止错误
二、等价类划分
等价类类别
等价类划分是一种黑盒测试的技术,其不考虑程序内部的结构,仅将所有可能的输入数据划分为若干子集,然后在 每一子集中选取少数具有代表性的数据作为测试用例。
等价类分为:
1、有效等价类:
顾名思义,有效等价类是指对于程序的需求规格说明来说是合理的,有意义的输入数据构成的集合。
2、无效等价类
不符合需求规格说明的数据所构成的集合,
划分等价类的基本方法
等价类划分依托于以下六条原则:
1、在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。
eg:输入条件为( x>=3 && x<5 ),则可以确定一个有效等价类为(3<=x<5);两个无效等价类为(x<3)、(x>=5)。
2、在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。
eg:输入条件为( x=3 ),则可以确定一个有效等价类为(x=3);一个无效等价类为(x!=3)。
3、在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
eg:输入条件为(x),则可以确定一个有效等价类为(x);一个无效等价类为(!x)。
4、在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
eg:输入条件为(x= =3|x= =4),则可以确定n个有效等价类为(x= =3)、(x==4);一个无效等价类为(x!=3 && x!=4)。
5、在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
6、在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。
设计测试用例
对于一个100以内乘法计算器来说,已知其输入条件为(1<= x1 <=100)、(1<= x2 <=100)。则其测试用例应划分为:
对于x1而言:
1、划分等价类
有效等价类:(1<= x1 <=100)
无效等价类:(x1<1)、(x1>100)
2、从等价类中设计测试用例
用例编号 | 所属等价类 | 乘数1 | 乘数2 | 乘积 |
---|---|---|---|---|
1 | 2 | 3 | 20 | 60 |
2 | 1 | -10 | 2 | 提示:输入错误 |
3 | 3 | 200 | 3 | 提示:输入错误 |
x2同x1。
三、边界值分析法
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法,其测试用例来自等价类的边界。
边界值设计测试用例的基本原则
1、如果输入条件规定了值的范围,则应以该范围边界以及边界范围外的相邻值作为测试输入数据。
2、如果输入条件规定了值的个数最大为M、最小为m个,则用M、M+1、m、m-1的个数作为测试数据。
3、如果程序的规格说明给出的输入域或输出域是有序集合,应选取集合的第一个元素和最后一个元素作为测试用例。
四、因果图法
因果图设计方法
因果图的基本图形符号
1、恒等:若原因出现,则结果出现;若原因不出现,则结果也不出现。
2、非(~):若原因出现,则结果不出现;若原因不出现, 则结果出现。
3、或:若几个原因中有1个出现,则结果出现;若几个原因都不出现,则结果不出现。
4、与:若几个原因都出现,结果才出现。若其中有1个原因不出现,则结果不出现。
因果图的约束符号
E(互斥):表示a、b两个原因不会同时成立,两个中最多有一个可能成立。
I (包含):表示a、b、c这3个原因中至少有一个必须成立。
O(惟一):表示a和b当中必须有一个,且仅有一个成立。
R(要求):表示当a出现时b必须也出现。
M(屏蔽):表示当a是1时,b必须是0.而当a为0时,b的值不定。
因果图测试用例
自动售卖机测试用例:
现有一自动售卖机程序规格说明如下:
1、若投入5角钱或1元钱的硬币,押下〖橙汁〗或 〖啤酒〗的按钮,则相应的饮料就送出来。
2、若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;
3、若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。
分析如下:
一、列出原因、结果:
原因:
1、售货机有零钱找
2、投入一元硬币
3、投入五角硬币
4、按下橙汁按钮
5、按下啤酒按钮
结果 :
21、〖零钱找完〗的红灯亮
22、退还一元硬币
23、退还五角硬币
24、送出橙汁
25、送出啤酒
二、建立中间节点,表示处理的中间状态
11、投入一元硬币且按下饮料按钮
12、按下橙汁或者啤酒按钮
13、应当找5角零钱并且售货机有零钱找
14、钱已付清
由于 2 与 3 ,4 与 5 不能同时发生,分别加上约束条件E。
三、画出因果图:
五、功能图法
功能图方法是一种黑盒、白盒混合用例设计方法,用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例。
功能图设计方法
功能图模型由状态迁移图和逻辑功能模型构成。
状态迁移图
状态指出数据输入的位置或时间,而迁移则指明状态的改变;
用节点表示状态,用弧度代替迁移,则状态迁移图就可转化成一个程序的控制流程图形式。
逻辑功能模型
逻辑功能模型表示在状态中输入条件和输出条件之间的对应关系,只适合于描述静态说明,输出数据仅由输入数据决定。
测试用例则是由测试中经过的一系列状态和在每个状态中必须依靠输入/输出数据满足的一对条件组成。
输入 | 正确的用户名 | 错误的用户名 | 错误的用户名 | 正确的用户名 |
---|---|---|---|---|
输入 | 错误的密码 | 正确的密码 | 错误的密码 | 正确的密码 |
输出 | 0 | 0 | 0 | 1 |
输出 | 错误提示 | 错误提示 | 错误提示 | |
状态 | 等待重新输入 | 等待重新输入 | 等待重新输入 | 进入新的状态 |
六、总结
测试方法选择策略
1、首先进行等价类划分,包括输入条件和输出条件的等价划分,将无限测试变成有限测试,这是减少工作量和提高测试效率最有效的方法。
2、在任何情况下都必须使用边界值分析方法。经验表明,用这种方法设计出的测试用例发现程序错误的能力最强。
3、可以用错误推测法追加一些测试用例,这需要依靠测试工程师的智慧和经验。
4、对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。如果没有达到要求的覆盖标准,应当再补充足够的测试用例。
5、如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法和判定表驱动法。
6、对于参数配置类的软件,要用正交试验法选择较少的组合方式达到最佳效果。
7、功能图法也是很好的测试用例设计方法,我们可以通过不同时期条件的有效性设计不同的测试数据。
8、对于业务流清晰的系统,可以利用场景法贯穿整个测试案例过程,在案例中综合使用各种测试方法。