测试开发
测试驱动开发(TDD)
驱动这个流程前行的开发周期称为“红灯-绿灯-重构”。具体如下;
- 编写一个测试;
- 运行所有测试;
- 编写实现代码;
- 运行所有测试;
- 重构;
- 运行所有测试。
编写测试期间处于绿灯状态昭示着存在错报的问题,对于这样的测试,应将其删除或重构。
注意:编写测试时,应处于红灯状态。完成测试要求后,所有测试都应通过,此时将处于绿灯状态。
测试驱动开发的主要目标是提供可测试的代码设计,测试只是一项很有用的副产品。
黑盒测试
黑盒测试(也叫功能测试)将受测试软件视为一个黑盒,无需知道其内部结构。这种测试是通过软件界面进行的,旨在确认他们像预期的那样工作。
优点:
- 可高效测试大块代码段;
- 无需访问和理解代码,也不要求测试人员知道如何编写代码;
- 将用户角度和开发人员角度分离。
缺点:
- 覆盖率有限,因为执行部分测试场景;
- 测试效率低下,因为测试人员对软件内部构造一无所知;
- 测试缺乏针对性,因为测试人员对应程序的了解有限。
白盒测试
白盒测试(也叫透明盒测试,玻璃盒测试和结构测试)查看受测试软件的内部,并将由此获得的知识用于测试过程。白盒测试要求测试人员了解系统的内部结构,同时具备编程技能;它提供了从内部观测软件的结果。
优点:
- 可高效找出错误和问题;
- 知道受测软件的内部结构有助于进行详细测试;
- 能够发现隐藏的错误;
- 可帮助程序员反省;
- 由于知道软件的内部构造,因此可最大限度地提高测试覆盖率。
缺点:
- 可能无法发现未实现或缺失的功能;
- 需要对受测软件的内部构造有大致认识;
- 需要访问代码;
- 测试通常与产品代码的实现细节紧密耦合,导致重构代码后原本应该通过的测试未能通过。
质量检查(QC)面向产品,旨在确保结果符合预期,重点是发现缺陷。
质量保证(QA)专注过程以确保制造质量,即力图确保以正确的方式做正确的事情,将缺陷消灭在萌芽状态。
传统软件文档存在主要问题是,他们通常都不是最新的。一部分代码发生变化后,文档便不再反映实际情况,几乎任何类型的文档都是如此,需求和测试用例受到的影响最大。
采用某种持续集成(CI)时,不正确的测试文档将失败并迅速得到修复。CI能够解决测试文档不正确的问题,但无法确保所有功能都有相关文档,可使用TDD的方式创建测试文档。
相位驱动开发(BDD)可在保留TDD和自动化的优点的同时,提供非程序员所需要的文档。BDD故事可作为验收标准(在代码之前编写的),可频繁执行(最好每次提交时都执行),还是使用自然语言编写的,因此不担在任何情况下都是最新的,而且可供那些不想研究代码的人使用。
要提供即准确有最新的信息,唯一划算的方式使使用可集成到持续集成系统的可执行文档。