1.4 软件测试的意义
软件测试就是在软件交付用户使用或投入运行前对软件需求规格说明、设计规格说明和编码的最终审核,是软件质量保证的关键步骤。
软件测试是为了发现错误而执行程序的过程,在软件生命周期中横跨两个阶段。通常在编写每一个模块之后就需要对它做必要的测试(称为“单元测试”),编码和单元测试属于软件生命周期中的同一个阶段。在结束这个阶段后对软件系统还要进行各种综合测试,如集成测试、系统测试、性能测试和配置测试等。这是软件生命周期的另一个独立阶段,即测试阶段。
1.软件测试的主要目的
(1)确认软件的质量,一方面确认软件做了所期望的事情(Do the right thing);另一方面确认软件以正确的方式做了这个事情(Do it right)。
(2)提供信息,如提供给开发人员或程序经理的回馈信息,以及为风险评估所准备的信息等。
(3)软件测试包括软件开发的过程,如果一个软件产品开发完成之后发现了很多问题,则说明此软件开发过程很可能是有缺陷的,这个目的保证整个软件开发过程是高质量的。
2.软件测试的原则
(1)应当把“尽早和不断地进行软件测试”作为软件开发人员的座右铭,不应把软件测试仅仅看作是软件开发的一个独立阶段,而应当把它贯穿到软件开发的各个阶段中。坚持在软件开发的各个阶段的技术评审,这样才能在开发过程中尽早发现和预防错误。在早期处理出现的错误,杜绝某些发生错误的隐患。
(2)测试用例应由测试输入数据和与之对应的预期输出结果两个部分组成,测试以前应当根据测试的要求选择测试用例以检验开发人员编制的软件。因此不但需要测试的输入数据,而且需要针对这些输入数据的预期输出结果。
(3)开发人员应避免“自己检查自己”的程序,软件开发小组也应尽可能避免测试本小组开发的软件。如果条件允许,最好建立独立的软件测试小组或测试机构。
(4)在设计测试用例时应当包括合理和不合理的输入条件,前者是指能验证软件正确的输入条件;后者是指异常、临界和可能引起问题异变的输入条件。软件系统处理非法命令的能力必须在测试时受到检验,用不合理的输入条件测试软件,往往比用合理的输入条件进行测试能发现更多的错误。
(5)充分注意测试中的“群集现象”。在被测软件段中若发现错误数目多,则潜藏着的错误数目也比较多,这种错误“群集现象”已为许多软件的测试实践所证实。根据这个规律,应当对存在群集现象的软件段进行重点测试,以提高软件的可靠性。
(6)严格执行测试计划,排除测试的随意性。测试之前应仔细考虑测试的项目,对每一项测试制订出周密的计划,包括被测软件的功能、输入和输出、测试内容、进度安排、资源要求、测试用例的选择、测试的控制方式和过程等,还要包括系统的组装方式、跟踪规程、调试规程,回归测试的规定,以及评价标准等。测试计划要明确规定,不要随意解释。
(7)应当对每一个测试结果做全面检查。有些错误的征兆在输出实测结果时已经明显地出现,但是如果不仔细地全面地检查测试结果,就可能会使这些错误被遗漏掉。所以必须明确定义预期的输出结果,仔细分析检查实测的结果,抓住征候以暴露错误。
(8)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。