在软件发布之前,如果没有测试的结束点(或称为 软件测试的结束标准),那么软件测试将永无休止。软件测试的结束点,要依据所在公司具体情况来制定,不能一概而论!
个人认为软件测试的结束点可以由以下10个原则(条件)确定:
1、基于“测试阶段”的原则
每个软件的测试一般都要经过单元测试、集成测试、系统测试这几个阶段,我们可以分别对单元测试、集成测试和系统测试制定详细的测试结束点。每个测试阶段符合结束标准后,再进行后面一个阶段的测试。举个例子来说:单元测试,我们要求测试结束点必须满足“核心代码100%经过Code Review”、“功能覆盖率达到100%”、“代码行覆盖率不低于80%”、“不存在A、B类缺陷”、“所有发现缺陷至少60%都纳入缺陷追踪系统且各级缺陷修复率达到标准”等等标准。集成测试和系统测试的结束点也应这样制定。
2、基于“测试用例”的原则
测试设计人员设计完测试用例,并邀请项目组成员参与评审,测试用例一旦评审通过,后面测试时,就可以作为测试结束的一个参考标准。比如说在测试过程中,如果发现测试用例通过率太低,可以拒绝继续测试,待开发人员修复后再继续。在功能测试用例通过率达到100%,非功能性测试用例达到95%以上,允许正常结束测试。
使用该原则作测试结束点时,把握好测试用例的质量,非常关键。
3、基于“缺陷收敛趋势”的原则
软件测试的生命周期中随着测试时间的推移,测试发现的缺陷图线,首先成逐渐上升趋势,然后测试到一定阶段,缺陷又成下降趋势,直到发现的缺陷几乎为零或者很难发现缺陷为止。我们可以通过缺陷的趋势图线的走向,来定测试是否可以结束,这也是一个判定标准。
这个原则对迭代测试版本控制有较高的要求,如不建议超过5次迭代,否则在时间上得不偿失。
4、基于“缺陷修复率”的原则
软件缺陷(bug)在测试生命周期中我们分成几个严重等级,如:致命级、严重级、主要、较小和测试建议5种。那我们在确定测试结束点时,严重bug和致命bug的缺陷修复率必须达到100%;主要bug和较小bug的缺陷修复率必须达到85%以上,允许存在少量功能缺陷,后面版本解决;测试建议的缺陷修复率最好达到50%~70%以上。
该原则的使用,按具体公司具体项目的实际情况而定。比如测试建议,有的公司(或项目)相当重视,可能会有较高修复率的要求,而一些公司(或项目)可能不会做要求。bug等级划分上,各公司的划分也不尽相同。
5、基于“验收测试”的原则
很多公司都是做项目软件,如果这种要确定测试结束点,最好测试到一定阶段,达到或接近测试部门指定的标准后,就递交用户做验收测试。如果通过用户的测试验收,就可以立即终止测试部门的测试;如果客户验收测试时,发现了部分缺陷,就可以针对性的修改缺陷后,验证通过后递交客户,相应测试也可以结束。
此原则适用于非自主性开发项目,或有明确客户的项目。
6、基于“覆盖率”的原则
对于测试“覆盖率”的原则,个人觉得只要测试用例的“覆盖率”覆盖了客户提出全部的软件需求,包括行业隐性需求、功能需求和性能需求等等,只要测试用例执行的覆盖率达到100%,基本上测试就可以结束。如果你不放心,非得要看看测试用例的执行效果,检查是否有用例被漏执行的情况,可以对常用的功能进行“抽样测试 ”和“随机测试”。对于覆盖率在单元测试、集成测试和系统测试,每个阶段都不能忽略。
7、基于“项目计划”的原则
大多数情况下,每个项目从开始就要编写开发和测试的计划,相应的在测试计划中也会对应每个里程碑,对测试进度和测试结束点做一个限制,一般来说都要和项目组成员(开发、管理、测试、市场、销售人员)达成共识,团队集体同意后制定一个标准结束点。如果项目的某个环节延迟了,测试时间就相应缩短。大多数情况下是所有规定的测试内容和回归测试都已经运行完成,就可以作为一个结束点。很多不规范的软件公司,都是把项目计划作为一个测试结束点。
如果把它作为一个结束点,测试风险较大,软件质量很难得到保证。此种情况,建议遵循“2·8”定律,优先级较高的功能模块测试覆盖率应尽量达到100%。
8、基于“缺陷度量”的原则
这个原则也许大家用的不是很多,了解比较少。我们可以对已经发现的缺陷,运用常用的缺陷分析技术和缺陷分析工具,用图表统计出来,方便查阅,分时间段对缺陷进行度量。我们可以把 “测试期缺陷密度”和 “运行期缺陷密度”作为一个结束点。当然,最合适的测试结束的准则应该是“缺陷数控制在一个可以接受的范围内”。比如说:一万行代码最多允许存在多少个什么严重等级的错误,这样比较好量化,比较好实施,成为测试缺陷度量的主流。
9、基于“质量成本”的原则
一个软件往往要从“质量、成本、进度”三方面取得平衡后就停止。至于这三方面哪一项占主要地位,就要看是什么软件了。比如说是:人命关天的航天航空软件, 那还是质量重要些,就算多花点钱、推迟一下进度,也要保证较高质量以后才能终止测试,发布版本。如果是一般的常用软件,由于利益和市场的原因,哪怕有bug,也必须得先推出产品。通常最主要的参考依据是:“找缺陷耗费的代价和这个缺陷可能导致的损失做一个权衡”。
具体操作的时候,可以根据公司实际情况来定义什么样的情况下算是“测试花费的代价最划算、最合理”,同时保证公司利益最大化。如果找bug的成本比用户发现bug的成本还高,也可以终止测试。
10、基于“测试行业经验”的原则
很多情况下,测试行业的一些经验,也可以为我们的测试提供借鉴。比如说测试人员对行业业务的熟悉程度,测试人员的工作能力,测试的工作效率等等都会影响到整个测试计划的执行。如果一个测试团队中,每个人都没有项目行业经验数据积累,拿到一个新的项目,自然是一头雾水,不知道从何处开始,测试质量自然不会很高。因此通过测试者的经验,对确认测试执行和结束点也会起到关键性的作用。
这条原则谨慎使用,在创业性项目可以考虑。
通常自主产品研发项目会采用1、2、4、6、9;非自主产品项目会采用1、2、4、5、6、7;以前的传统模式开发项目还会加上3。当然,这些原则是可以根据具体情况自由组合的。