我们现在所能感受到、接触到的软件产品都可以归纳为:
软件(software)=程序(program)+数据库(DB)+文档(document)+服务(service)
因此,在软件的整个生命周期内,软件的测试不但包含传统意义的可执行程序或源代码的测试,还需包括数据、文档、服务的测试。
IEEE给出了关于软件测试的标准定义:软件测试是使用人工和自动手段来运行或测试某个系统的过程,其目的在检验被测软件系统是否满足规定的需要,或是弄清楚被测系统的预期结果与实际结果直接的差别。
从定义出发,反映了如下核心内容:
- 测试目的:为满足规定的需求和预期;
- 准确的理解和表达客户的需求是前提必要条件。有了准确的需求、设计类文档才可能顺利进行软件测试的计划安排,否则将缺失测试标准和范围,导致无法判断各类缺陷是否可接受和应当做何处理。
- 测试手段:人工和自动化;
- 人工测试和自动化测试工具均是目前测试环节不可或缺的组成部分。自动化工具有良好的可重复、便于操作、高效的特点,可提高测试覆盖率和可靠性,且可提供测试成功的经验、测试指标的提取、质量的实时监控、支持每个迭代周期的增量测试和回归测试等。
- 缺陷差异;
- 经测试认为难以理解、不易使用、运行速度过慢、最终用户认为不好的内容均算缺陷。
- 软件未达到需求规格说明书中指定的功能,算做缺陷。
- 软件出现了需求规格说明书中指明不能出现的错误,算作缺陷。
- 软件功能超出需求规格说明书中指明的范围,算作缺陷。
- 软件未达到需求规格说明书中虽未指出但应实现的目标,算作缺陷。
软件测试是一个持续推进的过程,不能一蹴而就,而且软件测试的过程管理则需要贯穿软件测试的全过程,以起到监督、管控的作用,最终要使整个软件测试顺利、高效的开展。