航天嵌入式软件测试探究
2014-10-28朱晏庆
朱晏庆
【摘 要】 航天飞行器中嵌入式软件功能越来越复杂,软件的可靠运行是飞行器正常工作的保障,因此,对航天嵌入式软件的质量提出了极高的要求,软件测试不可或缺。本文以从事的嵌入式软件测试出发,简述了嵌入式软件测试的基本方法,并结合测试工具的介绍和使用,描述不同测试环境下航天嵌入式软件测试的过程和心得。
【关键词】 嵌入式软件 软件测试 覆盖率 性能测试
1 概述
随着现代计算机技术的不断发展,系统集成技术也得到了飞速提高,尤其在航天航空、武器装备等国防科技领域。同时嵌入式软件在系统集成中的位置也显得越来越重要。嵌入式软件规模也逐渐增大,复杂度越来越高,软件的质量成为系统集成成败的重要因素。
嵌入式软件的测试是提高软件质量的重要手段,只有经过充分的软件测试,才有可能开发出高质量、可靠安全的嵌入式软件。
对于航天领域嵌入式软件而言,实时性要求,可靠性和安全性要求更高。
2 嵌入式软件测试
2.1 软件测试的基本方法
嵌入式软件测试的方法一般可以分为黑盒测试和白盒测试两种。
黑盒测试是一种基于软件功能的测试。
白盒测试在于看清软件模块内部的结构,如各种覆盖率测试,数据流测试等。
按照软件生存周期模型,嵌入式软件测试一般又可分为单元测试、组装测试和确认测试,其中确认测试还可包括第三方独立测试。
单元测试以不可再分的功能模块为测试对象,可以进行黑盒和白盒测试。在验证功能模块实现的软件功能项的同时,可以进一步进行覆盖率测试。
一般测试过程见图1。
组装测试主要测试对象是经过单元测试以后的集成软件模块,其目的是验证各软件模块的控制接口和数据接口是否正确,与设计是否相符。
确认测试则是在系统环境中进行的功能和性能测试,借助辅助测试工具,验证软件是否完全实现各功能和性能需求项。
2.2 软件测试工具
2.2.1 VECTORCAST
VECTORCAST提供强大的单元和组装级别的测试功能,能自动产生、编译测试桩和驱动模块,通过友好界面交互自动产生测试用例,并支持完全自动的回归测试,提供SC,BC和MC/DC测试覆盖率显示,提供MaCabe圈复杂度分析和基本路径分析。
2.2.2 CODETEST
CODETEST是专门针对嵌入式软件开发出来的高性能软件测试和分析工具,除了通常软件测试工具的插桩技术外,CODETEST最突出的特点是有硬件套件和探头等辅助测试设备用于精确的性能分析和系统级覆盖率分析。
2.3 软件测试实践
嵌入式软件主要经过单元、组装测试和确认测试。
下面以1750平台和编程语言ADA为例,结合测试工具介绍各阶段测试内容。
2.3.1 单元和组装测试
我们采用了VECTORCAST这个软件工具进行单元和组装测试,这是基于主机平台的测试。我们采用的编译器是M1750-Ada。在使用该编译器结合VECTORCAST工具时,在编译参数打开扩展内存选项的时候,会出现编译链接不通过或程序执行出错的情况。经查,由于我们编写的代码加上VECTORCAST工具自身为测试而生成的可执行代码超出了规定的64K代码长度,代码出现跨段,因此会出现编译链接不通过或程序执行出错的情况;最后通过更改编译链接的脚本控制文件,指定各代码段存放的位置,确保代码不出现跨段,解决了该问题。
该工具也被用来进行组装测试,在语句、分支和多条件判定/决策各级别测试覆盖率方面发挥了重要作用,并且通过编写shell脚本文件实现了自动的单元和组装级别的回归测试。
2.3.2 确认测试
在嵌入式软件确认测试过程中,我们使用CODETEST测试工具实现了M1750平台上在线的软件动态覆盖率测试和软件性能测试。
首先,构建了一个真实物理接口的测试环境,与目标计算机相连接,嵌入式软件在目标计算机中连续运行,通过使用专用适配器捕捉目标CPU的控制、地址和数据总线的信号,并采用CODETEST的应用分析软件实时在线分析嵌入式软件中各个模块的运行情况,包括运行时间、频率等,对被测软件的运行情况有全面了解,也为我们解决其它软件问题提供了有效的参考数据。
确认测试阶段,被测软件的长期考核必不可少。该测试环境下可进行自主不间断连续测试,不需要进行人工干预。
3 结语
嵌入式软件要求测试充分,我们要充分借助软件测试工具进行主机环境下的单元、组装测试和系统集成环境下的确认测试。在实际测试过程中,我们既使用了VECTORCAST进行了主机平台下的测试;也构建了软件确认测试的平台,借助CODETEST进行了集成环境下的性能测试和覆盖率分析。在特定的测试平台下,积累了相关测试经验,对类似的嵌入式软件测试起到一定的借鉴作用。
参考文献:
[1]郑人杰.计算机软件测试技术[M].清华大学出版社,1992.
[2]王田苗.嵌入式系统设计与实例开发[M].清华大学出版社,2002.
[3]谈琳,罗永红.实时软件的仿真测试平台的研究[J].计算机仿真,2005.endprint