1.2.3 按执行阶段划分

按照执行的时间阶段和目的来划分,测试可以大致分为冒烟测试(Smoke Testing)和回归测试(Regression Testing)。

冒烟测试的目的是验证一个新的软件版本是否稳定,是否值得继续后续更全面的测试。它一般是测试用例全集的一个小的子集,只覆盖软件的主要功能,能在较短的时间内执行完毕,快速得到测试结果,以决定后续流程走向。冒烟测试通常也称为版本验证测试。

回归测试的目的是确保对已有代码的改动或新功能的集成没有引入新的bug、已有功能没有受到影响。回归测试会根据引入代码的影响范围来选择测试用例,有可能是测试用例的一个子集,也可能是整个测试用例全集。回归测试在软件测试过程中占很大的工作量比重。

回归测试在工程实践中并不容易做好,表现在以下几个方面:

1)执行成本。因为需要被反复执行,这需要花费大量的时间,也会消磨测试人员的耐心。

2)测试范围。随着软件产品变得更复杂,测试用例的数量变得更大,决定回归测试应该包含哪些测试用例变得越来越困难。

3)测试用例集合的维护。软件需要适应市场和客户需求,需要不断进化,比如,有一些早期设计的功能在后期可能被放弃,或者早期认为很重要的功能在后期变得不那么重要,这要求测试用例做相应的调整。但是在工程实践中,做好这一点很不容易,测试工程师往往更专注于保证回归测试顺利通过,而忘记了审视测试用例的有效性,忽视了回归测试集合的更新和维护。

4)项目历史传承。回归测试往往需要长期重复执行,时间跨度比较大。如果项目团队人员流动较大而工作交接没有做到位的话,一些测试用例的设计背景和意义可能会变得无人知晓,测试用例的更新和优先级重新评估变得非常困难。

这些问题需要从很多不同的角度去解决和改进。比如,有效的文档和工作交接,用自动化测试来代替手工测试,等等。