按测试技术分类:白盒测试与黑盒测试
从完全不同的角度出发,2种测试思路适用于不同的测试阶段
这2种技术,是各有所长,相互补充的关系。可以发现不同类型的错误!
黑盒测试的概念
如何理解“黑盒子”?
1、关注程序外部结构,不考虑内部逻辑结构,不知道程序如何工作。
2、注重软件的功能性需求,主要针对软件界面和软件功能进行测试。
黑盒测试定义:黑盒测试又称功能测试。黑盒测试就是把测试对象看成一个不能打开的黑盒子,在完全不考虑程序的内部结构和处理过程的情况下,只依据程序的需求规格说明书,检查程序的功能是否符合他的功能说明。
黑盒测试发现的主要错误类型:
1、功能错误或遗漏;
2、界面错误;
3、数据库错误;
4、性能错误;
5、初始化和终止错误。
黑盒测试基本思路:
黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的,又称为数据驱动测试。
黑盒测试是在程序外部接口进行的测试。
如何选择测试数据?
1、理论上,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出程序中所有的错误。
2、实际上,测试情况有无穷多个,我们不仅要测试所有正常的输入,而且还要对那些不合法但可能的输入进行测试,穷举是不可能的。
3、因此,要有针对性的进行测试,必须精心设计测试用例,从数量极大的可用测试数据中挑选典型的测试数据,使用这些测试数据高效率地把隐藏的错误揭露出来。
黑盒测试的方法:
等价类划分法、边界值分析法、判定表法、因果图法、场景法、错误推测法、正交表法、功能图法
等价类划分法
什么是等价类?
等价类:是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。测试某等价类的代表值就等价于对这一类其他值的测试。
有效等价类与无效等价类
对于程序的规格来说,是输入数据构成的集合。
等价类 |
输入 |
关注点 |
有效等价类 |
合理的、有意义的 |
功能和性能 |
无效等价类 |
不合理的、无意义的 |
异常处理 |
设计测试用例时,要同时考虑有效等价类和无效等价类的设计。软件不能只接收合理的数据,还要经受意外的考验,接受无效的或不合理的数据,这样软件才能具有较高的可靠性。
把所有可能的输入数据划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。
它是一种典型的、常用的黑盒测试方法。
等价类划分法步骤
1、划分等价类(有时需细化)
2、建立等价类表,等价类进行编号
3、通过等价类导出测试用例
1、如何划分等价类——等价类种类
1、按双边区间划分:如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类
2、按取值划分:如果规定了输入数据的一组值(假定n个),且程序要对每一个输入值分别进行处理的情况下,可确定n个有效等价类(每个值确定一个有效等价类)和一个无效等价类(所有不允许的输入值的集合)。
3、按单边区间划分:如果输入条件规定了输入值的集合,这时可确立一个有效等价类和一个无效等价类。
4、按限制条件/ 规则划分:如果规定了输入数据必须遵守的规则或限制条件,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)
按处理方式细分等价类
在已划分的等价类中,各元素在程序中的处理方式不同的情况下,则应再将该等价类进一步划分为更小的等价类,并建立等价类表。
2、建立等价类表,并对等价类编号
在确认等价类之后,建立等价类表,列出所有划分出的等价类,如下表:
等价类表
3、等价类导出测试用例
编号 |
有效输入 |
覆盖有效等价类 |
U01 |
50 |
E01、E02、E03 |
编号 |
无效输入 |
覆盖无效等价类 |
U02 |
-40 |
E04 |
U03 |
10.3 |
E05 |
U04 |
“G” |
E06 |
U05 |
“*” |
E07 |
U06 |
“年” |
E08 |
U07 |
150 |
E09 |
U08 |
0 |
E10 |
U09 |
空 |
E11 |
导出测试用例的原则:
从划分出的等价类中按以下原则设计测试用例:
1、编号唯一;
2、尽可能多地覆盖尚未覆盖的有效等价类;
3、仅覆盖一个尚未覆盖的无效等价类;
4、覆盖所有的有效和无效等价类
案例1--多输入条件
对于函数x∈[a,b)∪[b,c)∪[c,d];y∈[e,f)∪[f,g] ,可得到x,y的等价类如下表
试用前述几种等价类测试用例设计法设计测试用例:
测试用例 |
编号 |
X |
Y |
F(x,y) |
|
1 |
x_ab |
y_ef |
正常输出 |
|
2 |
x_bc |
y_fg |
正常输出 |
|
3 |
x_cd |
y_ef |
正常输出 |
|
4 |
x<a |
y_ef |
非正常输出 |
|
5 |
x>d |
y_fg |
非正常输出 |
|
6 |
x_ab |
y<e |
非正常输出 |
|
7 |
x_bc |
y>g |
非正常输出 |
弱健壮等价类测试用例设计法
1、对于有效等价类,从每个有效等价类选取一个值。
2、对于无效等价类,使用一个无效值,并保持其余的值都是有效的。
为什么两种等价类的覆盖方式不一样?
1、对于有效等价类,采取尽量覆盖的方式是为了全面考察软件的功能。
2、对于无效等价类、采取每次只覆盖一个的方式是因为:通常程序发现一类错误后就不再检查是否还有其他错误。