一、软件测试的目的
软件开发过程中软件测试具有非常重要的作用。软件测试的目的在于按照规定的步骤,采用正确的方法,对开发设计阶段提供的软件工件进行严格的检测,发现和改正软件错误,使软件质量在测试过程中不断提高,逐渐达到规定要求,能够交付用户使用。如果测试中察觉软件设计质量太差,暴露出的各种问题,不是依靠测试能够完全解决,项目主管可以中断测试,责成设计组加以改进。当问题十分严重,已经无法满足用户既定的需求时,项目甚至可能被迫取消。
软件测试过程中,项目主管和质量保证部门可以采集到各种软件质量原始信息,其中重要的是软件错误数据,包括软件错误的类型、错误的数量、错误产生的阶段、错误存在的部位。有了这些数据,近期而言,可以对软件已经达到的质量水平做出定量评估、可以对软件可靠性增长过程及软件开发中的资源消耗做出预测。长期而言,从各个时期各种软件项目积累的质量数据,能够准确反映开发单位具有的开发和质量保证能力,能够反映开发单位能力提高过程。在重视质量相关的数据采集和拥有的历史数据方面,我国的软件开发单位和发达相比,存在明显的差距。
国内外软件开发经验表明,软件测试需要消耗大量资源,软件测试所需的工时通常占据其总开发工时的40%到50% ,所以高质量履行和完成软件测试阶段的各种任务,十分重要。其中包括制定正确的测试策略,采用科学的测试方法和测试技术等,制订正确的测试策略自然应该成为关注的。
二、渐进测试策略
渐进测试策略是指将软件的测试进程,进一步细分为相互联系而又各不相同的子阶段,对交付测试的原始软件产品,从简单到复杂,从单元到系统逐步进行测试的、完整的测试体系框架。整个测试过程通常包括单元测试、综合测试、系统测试、认证和交收测试几个阶段。
采用渐进式测试策略,能够有效地降低错误定位的难度,有利于发现和改正错误。渐进测试必须从单元测试开始,单元测试的主要目的是检查和改正单元内部的错误,只有在单元测试完成之后才能进入与其他单元结合的综合测试。综合测试主要目的是检查单元之间的接口,以及检查程序的总体结构。系统测试的主要目的是检测软件是否满足需求说明的要求,这个阶段发现的错误往往属于高层错误,例如由于对用户要求的误解和用户要求的不一致造成的错误。改正这种类型的错误,需要付出昂贵的代价,是不希望出现的事件。可见测试固然对保证软件质量十分重要,但是毕竟属于事后把关性质,预防为主仍然是佳的选择。应该更加关注软件设计,特别是需求分析工作的质量。
根据软件的不同性质和某些软件的特殊要求,在上述4个阶段之外,还需要增加一些其他的测试阶段。表1是一个典型的办公自动化软件测试过程,它包括了单元测试、综合测试、软件系统测试、强度测试、认证和交收测试5个阶段。表2是一个典型的嵌入式系统的软件测试过程,它包括了软件单元测试、软件综合测试、软件系统测试、硬件和软件系统综合测试、认证和交收测试5个阶段。
如果换一个角度来观察渐进测试策略,可以认为渐进测试策略是针对软件设计过程所作的由下而上的逆向验证,从而使渐进测试的内在合理性得到进一步展示。图1显示了嵌入式软件测试过程和前期各个设计阶段的对应关系。
图1 测试和设计阶段对应关系图