一、定义
黑盒测试是软件测试的主要方法之一。它把软件系统看成一个“黑盒子”,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。简单来说,就是在不知道软件内部是如何实现的情况下,通过输入各种数据,观察软件的输出结果,来验证软件是否满足用户需求。
二、测试用例设计方法
-
等价类划分法
- 概念:将输入数据域(包括有效和无效的输入)划分为若干个等价类。等价类是指某个输入域的子集合,在这个子集合中,各个输入数据对于揭露程序中的错误是等效的。例如,对于一个接受1 - 100之间整数输入的程序,我们可以划分出一个有效等价类(1 - 100之间的整数)和两个无效等价类(小于1的整数和大于100的整数)。
- 示例:如果有一个软件功能是计算一个正整数的平方根。有效等价类可以是大于0的整数,比如1、4、9等;无效等价类可以是0(边界情况)、负数(如 - 1、 - 2)和非整数(如1.5、2.3)。通过对这些等价类进行测试,可以用较少的测试用例覆盖更多的可能输入情况。
-
边界值分析法
- 概念:大量的软件测试实践表明,软件在处理边界情况时最容易出错。边界值分析法是对等价类划分法的补充,它主要关注输入或输出的边界值。例如,对于一个要求输入1 - 100之间整数的程序,边界值就是1和100,以及刚好超出边界的值0和101。
- 示例:假设一个程序要求用户输入密码,密码长度要求在6 - 12位之间。那么测试用例就应该包括边界值6位密码、12位密码,以及刚好小于6位(如5位)和刚好大于12位(如13位)的密码,通过测试这些边界情况,能有效地发现程序在边界处理上的错误。
-
决策表法
- 概念:当软件的逻辑比较复杂,输入条件之间存在多种组合关系时,决策表法是一种有效的测试用例设计方法。它可以把复杂的逻辑关系和多种组合情况以表格的形式清晰地表示出来。决策表通常由条件桩(输入条件)、动作桩(输出结果)、条件项(输入条件的取值组合)和动作项(针对不同条件组合的输出动作)组成。
- 示例:考虑一个简单的购物折扣系统。条件桩包括是否是会员、购物金额是否大于1000元;动作桩包括是否享受折扣以及折扣比例。如果是会员且购物金额大于1000元,享受8折优惠;如果是会员但购物金额小于等于1000元,享受9折优惠;如果不是会员且购物金额大于1000元,享受9.5折优惠;如果不是会员且购物金额小于等于1000元,不享受折扣。通过构建决策表,可以清晰地设计出测试用例来覆盖所有这些情况。
-
因果图法
- 概念:因果图是一种用于描述输入条件(因)和输出结果(果)之间因果关系的图形工具。它可以帮助测试人员把软件规格说明书中的功能描述转换为判定表,从而设计测试用例。因果图主要由原因节点(输入条件)、结果节点(输出结果)、因果关系(如恒等、非、或、与)等组成。
- 示例:以一个自动售货机系统为例,原因可能包括投入足够的硬币、选择了商品等;结果可能包括售货机出货、找零等。如果投入足够的硬币并且选择了商品,那么售货机应该出货并且可能需要找零。通过绘制因果图,可以更清晰地分析这些复杂的因果关系,设计出全面的测试用例。
三、优点和缺点
- 优点
- 用户视角:黑盒测试是从用户的角度进行测试,能够直观地验证软件是否满足用户需求,因为用户在使用软件时也不关心软件内部的实现细节。
- 适用于多种系统:可以用于测试各种类型的软件系统,无论是简单的工具软件还是复杂的企业级信息系统。
- 发现功能问题:能够有效地发现软件的功能错误、界面错误、数据处理错误等,对于保证软件的功能完整性非常重要。
- 缺点
- 测试覆盖不全面:由于不了解软件内部结构,可能会遗漏一些隐藏在代码内部的深层次问题,如某些特定代码路径的错误。
- 测试用例设计依赖规格说明书:如果需求规格说明书不准确或者不完整,会导致测试用例设计出现偏差,影响测试效果。
- 难以定位问题根源:当发现软件出现错误时,由于黑盒测试不涉及内部代码,很难准确地定位问题出现在软件的哪一部分代码中。