第十三章的内容是关于各种测试方法和测试的设计方法。
一个软件开发团队统一思想首先要从基本名词解释开始,第一节为我们解释了一些基本名词并进行分类(例:Bug是指软件的缺陷,可以分解为症状(Symptom)、程序错误(Fault)、根本原因(Root Cause));在对这些基本名词进行分类时,可以按测试设计的方法分类(分为黑箱和白箱),也可以按测试的目的(分为功能测试和非功能测试)或者测试的时机和作用分类。
在第二节中,详细介绍了各种测试方法——单元测试、代码覆盖率测试、构建验证测试、验收测试.....
第三节介绍了实战中的测试,实战中的测试是在项目的稳定阶段执行的。这一节为我们纠正了几个似是而非的测试观念;在测试工作的过程中,要写很多的文档——计划阶段的测试计划(Test Plan)、测试设计说明书(TDS)、测试用例(Test Case)、程序错误报告(Bug Report)和测试报告(Test Report)。
第四节向我们介绍了该如何运用测试工具。利用测试工具,我们可以记录手工测试、记录自动测试,还可以进行效能测试、负载测试、压力测试。
第五节向我们说明了在软件开发的不同阶段我们该做的测试工作并介绍了测试工作中可能遇到的一些问题。
第十四章的内容是关于软件的质量保障。
第一节说明了什么是软件的质量,根据国际标准组织最近的定义可知软件要符合用户以及利益相关者的需求,用一个公式表示就是:软件质量=程序质量+软件工程质量。其中,程序的质量体现在软件外在功能的质量:而软件工程方面的质量就与“快”“便宜”比较相关,它体现在软件开发过程中的可见性、风险控制、成本控制等等,软件工程的质量需要长期的过程来提高;衡量软件工程质量的一套比较成熟的理论是CMMI,它的实施能够提高企业的管理水平降低企业的成本,CMMI分为五个等级,每一个级别都是更高一级的基石;SWEBOK定义了软件质量成本,包括预防、评审、内部故障、外部故障,还有流程分析改进、投资改进等等,这些成本既有被动响应的,也有主动行动的。
第二节介绍的是软件质量保障工作的相关内容。软件的质量保障(QA)和软件测试(Testing)是有很大的区别的,但目前IT业界还是有很多人将它们混在一起。软件测试(Test)是指运用一定的流程和工具,验证软件能实现预先设计的功能和特性,工作的流程和结果通常是可量化的;软件质量保障(Quality Assurance)是指软件团队为了让软件达到事先定义的质量标准而进行的所有活动,包括测试工作。在本节当中,对“测试的角色要独立出来吗”进行了讨论,同时也介绍了和测试角色有关的一些问题。