第七周作业

黑盒测试

很多时候,黑盒测试比百合测试更加有效并且更加高效。

在白盒测试中,要求对程序中每个分支逻辑进行测试,实际上这是不必要的。在绝大多数情况下,bug是隐藏在在极少的分支里,如果测试不够还有可能根本找不到bug。这样的情况是极其坏的,既浪费了时间又没有达到预期的效果。

在真正的测试过程,使用黑盒测试的情况更加常见。黑盒测试的基本思想就是事先不了解程序内部构造,然后自己设定一些值去测试程序是否达到预定输出。

常用的黑盒测试方法有等价类划分法,边界值测试法之类的,其中边界值测试法是最好理解的,可以用下面实际的例子来说明:

比如现在测试一个API: GraphSetPos(uint object, int x, int y);

这是用于设定一个图像坐标的API,其中 object代表一个图像编号,x和y代表坐标汁。

其中x和y是可以可以任意取值的,但是object的值是有范围的,引擎中规定为[0, 0xFFF],那么不在这个返回之内都是不合法的。

现在,我们就有两个边界值测试用例:

第一个可以是object = 0xFFE,

第二个可以是object = 0x1000

假设0xFFE位置已经加载了图片,那么当object > 0xFFF的时候,引擎应该报错“Invalid Param”,提示输入的参数错误。

这个就是最简单的边界值测试。

 

根据我个人理解,等价类划分大致算边界值测试的一个升级版本。等价类划分具体来说,就是将测试用例中相同的划分成一类,再在其中划分划分子类,做到有目的去测试。

比如上面的例子里,我们只是测试一个object的值,从声明上来看,是一个非负的整数,那么我们的等价类可以这样划分:

非负数 : 1.object是一个负数

负数:   1.在[0, 0xFFF]范围之内的    2.在上面那个范围之外的、

这三种情况,并且我们可以线确定下来预先期望的输出,

比如当object是一个负数的时候,这里的uint其实是会强制转换的,那么得到的还是一个非负数整数,假设int的长度为4 bytes,那么我们会等到一个大于0x7FFFFFFF的值。那么预期提示应该是“非法的参数”。

当object是一个非负数并且在合法范围之类的时候,还是分为两种情况,第一种就是对应的object为空,此时应该提示“对象为空”,当对应对象不为空的时候,直接执行,没有任何提示。

第三种情况和第一种情况相同,都是不在范围之内。

由此可见,黑盒测试是有目的性地测试项目,相对与白盒测试来说,更加省时并且更加有效。

posted on 2016-04-16 21:26  2013551815  阅读(95)  评论(0编辑  收藏  举报