APP下载

浅析设备软件测试与质量保证

2016-10-28张金环田洪涛

电子工业专用设备 2016年1期
关键词:单元测试软件测试编码

张金环,田洪涛

(中国电子科技集团公司第四十五研究所,北京,100176)

浅析设备软件测试与质量保证

张金环,田洪涛

(中国电子科技集团公司第四十五研究所,北京,100176)

介绍了设备软件测试目的和意义,以及传统设备软件测试存在的误区,分析了设备软件测试各阶段应遵循的原则和保证设备软件质量应在软件开发各阶段遵循的管理过程。

设备软件测试;软件质量;单元测试;集成测试;系统测试;验收测试

在设备制造行业,为按合同及时向客户发货,往往留给软件调试的时间很短,甚至没有软件测试的时间,然而软件是一台设备的灵魂,若软件质量得不到保证,设备质量便得不到保证。那么,在客户对设备质量和服务要求越来越高的今天,设备软件测试与质量保证就显得尤为重要。

1 设备软件测试的目的及意义

设备软件是指应用于设备中实现数据采集、运动控制、数据交互及管理等功能的计算机软件。随着计算机技术的发展,在一个大型复杂设备中,计算机软件所占的比例越来越高,软件所实现的功能越来越强大。同时,随着软件的复杂程度不断提高,设备中所暴露的缺陷也就越多。因此,软件测试是软件开发不可缺少的一部分,更是提高其质量的重要手段,其目的在于:

(1)尽可能多地发现软件中潜在的错误以及漏洞,通过检测来排除各种错误和漏洞,从而避免软件投用后由于潜在错误或漏洞所带来的风险。

(2)对软件质量进行检测和评估,确定软件可以执行预期的要求或者软件以正确的方式来执行要求,以验证软件的质量是否满足用户的需求。

(3)对软件的生命周期进行质量把控,通过测试来分析发生错误和漏洞区域以及发生的原因,测试可为软件开发人员提供后续风险评估所需的信息,从而帮助软件开发者或者项目管理人员改进软件开发过程及提高软件质量。

软件测试不仅仅是对软件本身的测试,还包括软件开发的各环节。也就是说软件测试的最终目的是保证整个软件开发过程以及提交给用户的软件系统是高质量的。

2 传统设备软件测试存在的误区

(1)软件测试工作在软件编码基本结束才开始进行。一直以来多数设备软件开发都是采用瀑布模型,如图1所示,软件开发人员根据设备设计方案先后做软件需求分析、概要设计、详细设计、编码,完成编码后开始测试及整机调试,设备验收后发货。这个模式的缺点在于测试工作往往在编码完成之后。这样的测试流程对整个软件开发工作都是不利的,这使软件人员在本来就很短的合同期限内,感觉软件测试时间非常紧张,甚至已经没有了软件的调试时间。而且随着软件项目规模的增大,软件中潜在的缺陷被发现的越晚,后续的修改与补救成本就越高,同时也会延误项目的开发期限,增加最终测试的难度。

(2)认为软件测试是为了表明软件的正确性,只是证明软件是否以正确的方式执行了预期功能。如果为了表明程序是正确的而测试,就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案。

(3)认为软件测试仅仅是测试人员的事情,与参与开发的其他人员无关。大多数软件开发人员都宁愿做编程也不愿意做测试。而事实上,测试和开发同为一个软件项目开发中的部分,二者应该是紧密联系的,软件测试同样是开发人员的责任。一个成功的软件测试是离不开测试人员与开发人员的交流与协商,以及系统分析师的配合,这样才能提高测试的工作效率与质量,从而提高软件质量。

图1 传统的瀑布模型

(4)对软件的测试不充分,缺乏测试标准和测试工具。目前大多数软件测试都与硬件一起进行,在软件的验收工作中,所谓的测试也仅仅是对预先设定的功能进行测试,而并非根据软件开发阶段进行单元测试、集成测试、系统测试和验收测试等,这样的测试达不到软件测试的根本目的,造成软件遗留的缺陷多、漏洞多。

3 设备软件测试应遵循的原则

现代的测试理论认为,软件测试要伴随着软件生存周期的每一个阶段,是软件生存周期的一个全过程测试。高质量的软件必须要经过单元测试、集成测试、系统测试和验收测试。因此,软件测试适合采用W模型,如图2所示,软件开发人员在需求分析阶段就为验收测试做准备,在系统设计、概要设计以及详细设计阶段分别为系统测试、集成测试和单元测试做准备,做出相应的测试计划以及测试用例。在编码的同时就进行单元测试,在集成、实施、交付阶段分别进行集成测试、系统测试和验收测试。

图2 软件测试W模型

单元测试是验证软件单元的实现是否和该单元的说明完全一致的相关联的测试活动。在结构化语言中,一般认为一个函数就是一个单元;在面向对象语言中,一个类或类方法就是一个单元。根据详细设计阶段依据软件单元说明文档编写的测试用例,对重要的接口、局部数据结构、边界条件、独立路径和错误处理路径,通过代码检查或执行测试用例有效的进行测试。单元测试不仅要检测代码的错误,还需要测试代码编写是否根据详细设计进行,其目的在于验证代码是否与设计相符合,跟踪需求和实际的实现是否一致,发现设计和需求中存在的错误,发现在编码过程中引入的错误。有研究表明,有效的单元测试可以发现70%的缺陷,越早发现并排除错误,后阶段测试的工作量就越少。

集成测试是在单元测试基础之上,将所有模块按照概要设计要求组织成子系统或系统进行测试。其主要关注模块间的数据传递是否正确,一个模块的功能是否会对另外一个模块的功能产生错误的影响,全局数据结构是否有问题,会不会被异常修改,模块组合起来的功能能否满足要求,各模块积累的误差是否会达到不可接受的程度。简单的说集成测试的目的是揭示构建互操作性的错误,这样系统测试就可以在最少可能被中断的情况下进行。

系统测试是通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方,以验证软件系统的功能和性能等满足其规格说明的要求。系统测试用例应根据需求分析说明书来设计,并在实际使用环境下来运行。

验收测试是用户或用户代表根据自己之前提出的要求进行检测的过程,也就是说验收测试并不是一项综合性的测试,它是向用户和用户代表表明需求得到了满足。同时这也是整个测试过程中的最后一个阶段。

4 设备软件质量保证

软件工程认为,软件开发质量是由软件开发过程进行保证的。而目前在很多设备软件开发项目中,我们都几乎看不到完整准确的客户需求说明书,且客户的需求经常发生变化,追求高质量的软件似乎变得不太可能。因为需求说明书是引入或者产生缺陷最多的地方,这类文件是内部开发人员设计开发的基础,也是后期软件测试的重要标准,更是设备用户使用参考的依据。可以通过如图3所示的软件缺陷构成比例示意图大致说明各阶段产生错误的比例,由此也看出软件开发各阶段都有可能引入缺陷,并且每个阶段引入的缺陷都会对下一阶段产生影响,在下一阶段传播演变成其他缺陷。而且越早引入的缺陷,给后期测试和修复带来的工作量就越大,最后造成损失也就越大。

图3 软件缺陷构成比

因此,我们有必要对设备软件开发各阶段做严格的质量管理。

(1)在需求分析阶段做需求说明和需求管理,需求说明就是执行需求分析,定义需求说明书和验收标准,然后评审需求分析说明书和测试计划;需求管理要做的是记录变更请求,分析受影响的组件、估算需求变更成本,然后重新估算所有产品的交付日期和时间、评审受影响的组件,最后获得客户的批准。此阶段产生的质量文档应包括软件需求规格说明书、变更需求跟踪记录表、验收测试标准、测试计划等。

(2)在设计阶段要做概要设计和详细设计,概要设计就是要进行结构设计和逻辑设计,然后定义包括开发标准和编码标准在内的项目标准,创建系统和集成测试计划,最后进行评审设计;详细设计就是要进行类、函数、数据结构设计,然后创建单元测试计划,最后对详细设计进行评审设计。此阶段产生的质量文档应包括概要设计说明书、详细设计说明书,测试计划包括系统测试、集成测试和单元测试,项目标准包括设计和编码标准等。

(3)在编码阶段要制定编码计划、认真阅读开发规范、做编码准备、理解详细设计说明书、请专家指导,然后编写代码,之后进行代码审查和代码单元测试,最后提交代码和更改代码。此阶段产生的质量文档应包括编码计划、开发规范建议书、详细设计疑问列表、代码审查检查列表、代码审查记录、代码测试记录等。

(4)在测试阶段依次进行单元测试、集成测试、系统测试和验收测试,单元测试实际上在编码的同时就开始了。软件测试是软件质量保证的关键元素,代表了规约、设计和编码的最终检查。此阶段产生的质量文档应包括单元测试报告、集成测试报告、系统测试报告、验收测试报告等。

5 结论

为了避免设备软件缺陷,提高软件质量,我们应该在设备软件开发各阶段进行质量管理,严格按照W模型对软件进行测试,让测试工作与开发工作同时进行,要在各阶段制定评审机制,严格审查各阶段的产物是否与用户要求保持一致,确保软件质量和设备质量。

[1]张海藩.软件工程导论(第四版)[M].北京:北京清华大学出版社,2003.

[2]袁玉宇.软件测试与质量保证[M].北京:北京邮电大学出版社,2008.

[3]王轶辰,殷永峰,刘斌.航电设备软件系统测试过程研究[J].测控技术,2004,23(8):53-55.

[4]叶皑.自动售检票软件测试方法及其工具应用研究[D].上海:东华大学,2010.

Analysis of Equipment Software Testing and Quality Assurance

ZHANG Jinhuan,TIAN Hongtao
(The 45thResearch Institute of CETC,Beijing 100176,China)

This paper introduces the purpose and significance of the software testing in the equipment,and the errors in the traditional software testing,and analyzes the principles to be followed and the management process to ensure the quality of equipment software in each stage of software development.

The software of equipment testing;Software quality;Unit testing;Ntegration testing;System testing;Acceptance testing

TP306

B

1004-4507(2016)01-0039-04

2015-12-04

猜你喜欢

单元测试软件测试编码
基于SAR-SIFT和快速稀疏编码的合成孔径雷达图像配准
《全元诗》未编码疑难字考辨十五则
基于OBE的软件测试课程教学改革探索
航天软件测试模型构建与应用
子带编码在图像压缩编码中的应用
Genome and healthcare
EXCEL和VBA实现软件测试记录管理
软件测试工程化模型及应用研究
一年级上册第五单元测试
一年级上册一、二单元测试