【IT168 技术文章】
第一部分:黑盒测试技术
章节列表
第三章:等价类测试
第四章:边界值测试
第五章:决策表测试
第六章:Pairwise测试
第七章:状态转移测试
第八章:域分析测试
第九章:Use Case测试
部分概要
定义
黑盒测试是一种仅仅基于需求和规格说明书进行测试的测试策略。不同于它的补充物白盒测试,黑盒测试不需要了解被测软件的内部结构、逻辑以及实现。
通常黑盒测试的流程是这样的:
分析需求或者规格说明
根据规格说明确定有效的输入值以确定被测系统能够正确的处理这些输入值。测试时还必须选择一些无效的输入以确定 被测系统能够检测到这些无效输入并合理的处理他们。
确定不同输入值所对应的预期输出值
基于这些被选的输入值构建测试
执行测试
比较实际的输出结果和预期的输出结果
确定被测系统相应的功能
适用性
黑盒测试能够应用于系统开发的不同阶段——单元测试、集成测试、系统测试、接收测试。
从上图可以看出,随着开发过程从单元到子系统到系统的不断深入,上面的黑盒变的越来越大,系统的输入和输出变得更加复杂,但是测试的方法是一样的。同时,随着系统规模的不断变大,我们将不得不采用黑盒测试方法,因为对白盒测试有大多的路径需要覆盖。
缺点
使用黑盒测试,使用黑盒测试,测试者永远不能确定被测系统被测到了什么程度。不管测试者是多么的聪明和勤劳,总有一些路径是不可能被测试到的。例如,在以下的例子中,测试者会选择选择一条用例去发现问题的可能性有多大呢?
if (name=="Lee" && employeeNumber=="1234" && employmentStatus=="RecentlyTerminatedForCause") { send Lee a check for $1,000,000; }
关键点 使用黑盒测试,测试者永远不能确定被测系统被测到了什么程度。
为了使用黑盒测试检测出被测系统的每一个缺陷,测试必须尽可能的测试被测系统的各种合法的以及不合法的输入值的组合。然而,穷尽所有输入值的测试几乎是完全不可能的,因此我们只能选取这些组合输入值的子集(通常是非常小的子集)。
在《测试的艺术》一书中,Glenford Myers为彻底测试的无用性举了一个很好的例子:你怎么去完全测试一个编译器?难道通过编写每一种可能的合法以及不合法的程序吗?而且对那些必须记住以前的状态的系统(例如,记住他们的状态)这个问题会变得更加难办,因为对这些系统你不但要测试每种可能的输入值,而且你还必须测试每种可能的输入值的每种可能的顺序。
关键点 尽管我们不可能穷尽所有的测试。但是黑盒测试可以给测试者提供一些指导以选择那些能够更快、更有效发现系统缺陷的测试子集。
优点
管我们不可能穷尽所有的测试。但是黑盒测试可以给测试者提供一些指导以选择那些能够更快、更有效发现系统缺陷的测试子集。这些测试子集比相同数量的随机测试能够找出更多的缺陷,因此黑盒测试能够使我们最大可能的提高测试投入的回报值。
参考
Myers, Glenford J. (1979). The Art of Software Testing. John Wiley & Sons.