1.4.1 测试是必需的吗

在讨论软件测试最佳实践的时候,明星公司的做法得到广泛赞誉,比如微软有完善的软件测试流程,有大量优秀的测试工程师,还有更细分的软件测试开发工程师(Software Development Engineer in Test,SDET),这些工程师了解测试,也熟悉编程,技术全面,综合素质高,他们能做到极高质量的软件测试自动化和软件质量保证。

但是,对于大量小微软件公司而言,这是可望而不可即的。事实上,很多小微软件公司甚至没有专门的软件测试职位,测试的工作由开发工程师、产品经理甚至用户来完成。这些小微软件公司的做法看似“刀耕火种”,但是它们在市场上非常活跃,创造了大量优秀的软件产品,这是不是说明软件测试并不是软件工程中的必要因素?

不管是在传统瀑布式开发模式中,还是在当前主流的敏捷开发模式中,软件测试本身的必要性已被广泛讨论,在业界达成了共识。在很多软件团队中,没有专职的测试人员,是因为测试工作被其他角色分担了。对于软件工程来说,专职的测试角色不是必需的,但测试是必需的[1],因为这直接关系到软件产品的质量。如果质量问题会导致软件失去市场竞争力,或者会带来不能被忽视的经济损失,软件测试在软件工程中的必要性就更加明显。