从黑盒测试延伸到等价类划分法
一,黑盒测试
话不多说,先上黑盒测试的定义:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
其实上面那冗长的一段话总结起来就一个意思:就是测试软件的时候,不用管软件内部到底是怎么写的,有没有错误,布局排版有没有问题,测试人员就开始根据要求尽量把要求的输入试个遍,看看结果有没有问题,属于傻瓜都能做的工作。
既然是这个样子,短小,功能较少的程序可能让测试人员测试一下午就搞定了,但是程序很大呢,输出是1到1亿呢,还能一个个试么,当然不能,因此就引入了简化黑盒测试的方法,下面就要介绍。
二,等价类划分
等价类划分就是解决如何选择适当的数据子集来代表整个数据集的问题,通过降低测试的数目去实现“合理的”覆盖,覆盖了更多的可能数据,以发现更多的软件缺陷。
这个介绍言简意赅了好多,优化,一直是人类进步的主旋律,在黑盒测试的优化上,就是通过选择适当的数据子集来代替全体,放在概率论上这就是抽样调查。
既然是抽样调查,不是,是选择适当的数据子集,那么问题来了,如何选择呢?
来,首先了解下什么是等价类,既然等价嘛,就是基本上没有太大的区别,测试的时候,从一个没有什么大的区别的等价类中选择一个测试即可代表整个等价类。
等价类都有什么呢,大体上可以分成有效等价类和无效等价类。
上定义:
1有效等价类
是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
2无效等价类
与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。 设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。
简单来说,有效等价类就是功能上要求的,而无效等价类都是意外情况。
划分等价类的方法有很多,在此不赘述,因为这并不是我的重点,举个例子,大家理解下就好。
学生能选四到七门课,这是个区间,而四到七的整数就成了有效等价类,而其他的任何数字都是无效等价类,这个例子就是按照区间划分的。
好,既然已经开始划分了,那么究竟怎么测试呢,在之前我也一头雾水,知道我看到了一篇去年的博客,一个例子深深打动了我,我自认除了在幽默方面外,并不能讲解得比原作者更加明了,特此转载其中的一个例子,多谢前辈。
上例子:
某程序规定:"输入三个整数 a 、 b 、 c 分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算 … "。用等价类划分方法为该程序进行测试用例设计。(三角形问题的复杂之处在于输入与输出之间的关系比较复杂。)
分析题目中给出和隐含的对输入条件的要求:
(1)整数 (2)三个数 (3)非零数 (4)正数 (5)两边之和大于第三边 (6)等腰 (7)等边
如果 a 、 b 、 c 满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一:
1)如果不满足条件(5),则程序输出为 " 非三角形 " 。
2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。
3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。
4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。
列出等价类表并编号
覆盖有效等价类的测试用例:
a b c 覆盖等价类号码
3 4 5 (1)--(7)
4 4 5 (1)--(7),(8)
4 5 5 (1)--(7),(9)
5 4 5 (1)--(7),(10)
4 4 4 (1)--(7),(11)
覆盖无效等价类的测试用例:
功成名就,万事大吉,此处应有喝彩,掌声。
给这位前辈~