黑盒测试(black-box testing)和白盒测试(white-box testing)
黑盒测试(功能性测试或行为测试)
黑盒测试将受测软件视为一个黑盒,无需知道其内部构造。这种测试是通过软件界面进行的,旨在确认它们像预期的那样工作。只要界面的功能未变,测试就应该通过——即便内部构造发生了变化。测试人员只需知道程序做了什么,不需要知道软件是如何运行的、为什么会这样。适用于测试人员不熟悉编程、难以理解代码尤其如此。
用于驱动开发的测试通常是根据验收标准进行的,而验收标准决定了要开发哪些功能。
优点:
- 可高效测试大块代码段;
- 无需访问和理解代码,也不需要测试人员知道编写代码;
- 将用户角度和开发人员角度分离。
缺点:
- 覆盖率有限,因为只执行部分测试场景;
- 测试效率低下,因为测试人员对软件内部构造一无所知。
- 测试缺乏针对性,因为测试人员对应程序的了解有限。
白盒测试(透明盒测试、玻璃盒测试和结构测试)
软件测试员可以访问程序的代码,并通过检查代码的线索来协助测试——可以看到盒子里面。测试员根据代码检查结果判断可能出错的数目,并据此制定测试。要求测试人员了解系统的内部结构,同时具备编程技能。
白盒测试几乎都是自动化测试,且在大多数情况下都是单元测试。
优点:
- 可高效找出错误和问题;
- 知道受测软件的内部构造有助于进行详细测试;
- 能够发现隐藏的错误;
- 可帮助程序员反省;
- 有助于优化代码;
- 由于知道软件的内部结构,因此可最大限度地提高测试覆盖率。
缺点:
- 可能无法发现未实现或缺陷的功能;
- 需要对受测软件的内部构造有大致认识;
- 需要访问代码;
- 测试通常与产品代码的实现细节紧密耦合,导致重构代码后原本应该通过的测试未能通过。
问题:
软件测试员可以根据产品说明书进行白盒测试吗?
是的。白盒测试就是使用如何设计影响如何测试的概念进行的。测试员可以参加焦点人群、易用性研究和市场会议,了解用于定义功能特性和整个产品的过程。但这存在一定的风险,因为这些信息诱使测试员倾向于假定说明书是正确的。
静态测试(static testing)和动态测试(dynamic testing)
静态测试是指测试不运行的部分——只是检查和审核;
动态测试是指通常意义上的测试——使用和运行软件。
静态黑盒测试——测试产品说明书
测试产品说明书属于静态黑盒测试。产品说明书是书面文档,不是可执行程序,因此是静态。软件程序员利用书面文档进行静态黑盒测试,不需要关注文档内容是通过什么渠道获得的。
动态黑盒测试
动态黑盒测试指不深入代码细节测试软件的方法。它是动态的,因为程序在运行——软件测试员像用户一样使用它。它是黑盒,因为测试时不知道程序如何工作。程序员输入数据、接受输出、检验结果。动态黑盒测试常常被称为行为测试,因为测试的是软件在使用过程中的实际行为。
有效的动态测试需要关于软件行为的一些定义——需求文档或产品说明书。
拓展
审查和测试类似定义软件应注意以下几种方面:
- 规模。软件功能强大还是单一?代码多还是少?这些差别与测试有关吗?
- 复杂性。软件简单还是复杂?这回影响测试吗?
- 测试性。是否有足够的资源、时间和经验来测试软件?
- 质量和可靠性。软件是否完全满足质量要求?可靠性高还是低?
- 安全性。竞争对手软件的安全性和自身的比较起来如何?
优秀的产品说明书应具有以下8点属性:
(1)完整 (2)准确 (3)精确、不含糊、清晰 (4)一致 (5)合理 (6)代码无关 (7)可测试性 (8)贴切