1
 软件工程
1.7.2 5.2 软件测试

5.2 软件测试

无论怎么强调软件测试的重要性和它对软件可靠性的影响都不过分。在开发大型软件系统的漫长过程中,面对极其错综复杂的问题,人的主观认识不可能完全符合客观现实,与工程密切相关的各类人员之间的通信和配合也不可能完美无缺,因此,在软件生存周期的每个阶段都不可避免地会产生差错。我们力求在每个阶段结束之前通过严格的技术审查,尽可能早地发现并纠正差错;但是,经验表明审查并不能发现所有的差错,此外在编码过程中还不可避免地会引入新的错误。如果在软件投入生产性运行之前,没有发现并纠正软件中的大部分差错,则这些差错迟早会在生产过程中暴露出来,那时不仅改正这些错误的代价更高,而且往往会造成恶劣的后果。软件测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后审查。图5-1揭示了生存周期中开发与测试的关系,进一步说明了软件测试的重要性。

软件测试在软件生存周期中横跨两个阶段。通常在编写出每个模块之后就对它做必要的测试(单元测试),模块的编写者和测试者是同一个人,编码和单元测试属于软件生存周期的同一个阶段。在这个阶段结束后,还应该对软件系统进行各种综合测试,这是软件生存周期中的另一个独立的阶段,通常由专门的软件测试人员承担该项工作。

大量统计资料表明,软件测试的工作量往往占软件开发总工作量的40%以上,在极端情况,测试某些关系人的性命安全的软件所花费的成本,可能相当于软件工程其他开发步骤总成本的3~5倍。因此,软件测试是软件工程中极为重要的一环。

img53

图5-1 开发与测试的关系