软件开发与软件测试都是软件项目中非常重要的组成部分,软件开发是生产制造软件产品,软件测试是检验软件产品是否合格,两者密切合作才能保证软件产品的质量。
软件中出现的问题并不一定都是由编码引起的,软件在编码之前都会经过问题定义、需求分析、软件设计等阶段,软件中的问题也可能是前期阶段引起的,如需求不清晰、软件设计有纰漏等,因此在软件项目的各个阶段进行测试是非常有必要的。测试人员从软件项目规划开始就参与其中,了解整个项目的过程,及时查找软件中存在的问题,改善软件的质量。软件测试在项目各个阶段的作用如下所示。
(1)项目规划阶段:负责从单元测试到系统测试的整个测试阶段的监控。
(2)需求分析阶段:确定测试需求分析,即确定在项目中需要测试什么,同时制订系统测试计划。
(3)概要设计与详细设计阶段:制订单元测试计划和集成测试计划。
(4)编码阶段:开发相应的测试代码和测试脚本。
(5)测试阶段:实施测试并提交相应的测试报告。
软件测试贯穿软件项目的整个过程,但它的实施过程与软件开发并不相同。软件开发是自顶向下、逐步细化的过程,软件计划阶段定义软件作用域,软件需求分析阶段建立软件信息域、功能和性能需求等,软件设计阶段选定编程语言、设计模块接口等;软件测试与软件开发过程相反,它是自底向上、逐步集成的过程,首先进行单元测试,排除模块内部逻辑与功能上的缺陷,然后按照软件设计需求将模块集成并进行集成测试,检测子系统或系统结构上的错误,最后运行完整的系统,进行系统测试,检验其是否满足软件需求。
软件测试与软件开发的关系可用图1-11表示
图1-11 软件测试与软件开发的关系