软件测试是软件质量保证的关键步骤。美国质量保证研究所对软件测试的研究结果表明:越早发现软件中存在的问题,开发费用越低;在编码后修改软件缺陷的成本是编码前的10倍,在产品交付后修改软件缺陷的成本是交付前的10倍;软件质量越高,软件发布后的维护费用越低。另外,根据对国际IT企业的统计,它们的软件测试费用占整个软件工程所有研发费用的50% 以上。
  相比之下,中国软件企业在软件测试方面与国际水准仍存在较大差距。首先,在认识上重开发、轻测试,没有认识到软件项目的如期完成不仅取决于开发人员,更取决于测试人员;其次,在管理上随意、简单,没有建立有效、规范的软件测试管理体系;另外,缺少自动化工具的支持,大多数企业在软件测试时并没有采用软件测试管理系统。所以对国内软件企业来说,不仅要提高对软件测试的认识,同时要建立起完善的软件测试管理体系。
  让软件测试走向规范
  建立软件测试管理体系的主要目的是确保软件测试在软件质量保证中发挥应有的关键作用:
  软件产品的监视和测量对软件产品的特性进行监视和测量,主要依据软件需求规格说明书,验证产品是否满足要求。所开发的软件产品是否可以交付,要预先设定质量指标,并进行测试,只有符合预先设定的指标,才可以交付。
  对不符合要求的产品的识别和控制 对于软件测试中发现的软件缺陷,要认真记录它们的属性和处理措施,并进行跟踪,直至终解决。在排除软件缺陷之后,要再次进行验证。
  产品设计和开发的验证 通过设计测试用例对需求分析、软件设计、程序代码进行验证,确保程序代码与软件设计说明书的一致,以及软件设计说明书与需求规格说明书的一致。对于验证中发现的不合格现象,同样要认真记录和处理,并跟踪解决。解决之后,也要再次进行验证。
  软件过程的监视和测量从软件测试中可以获取大量关于软件过程及其结果的数据和信息,它们可用于判断这些过程的有效性,为软件过程的正常运行和持续改进提供决策依据。
  建立测试管理体系
  一般应用过程方法和系统方法来建立软件测试管理体系,也是把测试管理作为一个系统,对组成这个系统的各个过程加以识别和管理,以实现设定的系统目标。同时要使这些过程协同作用、互相促进,从而使它们的总体作用大于各过程作用之和。其主要目标是在设定的条件限制下,尽可能发现和排除软件缺陷。测试系统主要由下面6个相互关联、相互作用的过程组成:
  1、测试规划
  确定各测试阶段的目标和策略。这个过程将输出测试计划,明确要完成的测试活动,评估完成活动所需要的时间和资源,设计测试组织和岗位职权,进行活动安排和资源分配,安排跟踪和控制测试过程的活动。
  测试规划与软件开发活动同步进行。在需求分析阶段,要完成验收测试计划,并与需求规格说明一起提交评审。类似地,在概要设计阶段,要完成和评审系统测试计划;在详细设计阶段,要完成和评审集成测试计划;在编码实现阶段,要完成和评审单元测试计划。对于测试计划的修订部分,需要进行重新评审。
  2、测试设计
  根据测试计划设计测试方案。测试设计过程输出的是各测试阶段使用的测试用例。测试设计也与软件开发活动同步进行,其结果可以作为各阶段测试计划的附件提交评审。测试设计的另一项内容是回归测试设计,即确定回归测试的用例集。对于测试用例的修订部分,也要求进行重新评审。
  3、测试实施
  使用测试用例运行程序,将获得的运行结果与预期结果进行比较和分析,记录、跟踪和管理软件缺陷,终得到测试报告。
  4、配置管理
  测试配置管理是软件配置管理的子集,作用于测试的各个阶段。其管理对象包括测试计划、测试方案(用例)、测试版本、测试工具及环境、测试结果等。