龙源期刊网 http://www.qikan.com.cn
嵌入式飞控软件测试方法研究及实践
作者:陶幸辉 宋志刚
来源:《软件导刊》2011年第08期
摘 要:软件测试是保证软件质量和可靠性的关键工作,但由于嵌入式飞控软件的复杂性和特殊性,使软件测试面临许多特殊的困难。对嵌入式飞控软件的特点进行了总结和分析,并且针对飞控软件的特点提出了相应的测试方法和解决方案。 关键词:嵌入式软件;飞控软件;软件测试; 中图分类号:
作者简介:陶幸辉(1979-),女,河南伊川人,中国空空导弹研究院工程师,研究方向为软件工程;宋志刚(1961-),男,河南泌阳人,中国空空导弹研究院高级工程师,研究方向为软件工程。 0 引言
随着DSP技术的进步,飞行控制(简称飞控)组件上已越来越多地使用了嵌入式软件,并且已经成为飞控组件的核心组成部分。软件的大量应用,一方面有效地提高了产品的性能以及飞控系统的稳定性、精确性、灵活性等,但另一方面,由于嵌入式实时系统具有资源受限、实时响应、容错和专用输入输出硬件等特点,对性能和可靠性等性质有较高的要求。 软件测试作为软件开发过程中必不可少的重要环节,是保证软件质量的关键步骤。软件测试是否充分、有效,将直接影响到软件产品的质量。本文在对嵌入式飞控软件特点进行总结的基础上,对嵌入式飞控软件的测试难点、测试方法和测试技术进行了分析,并针对测试实践中发现的问题进行了总结,提出了相应软件测试策略。 1 嵌入式飞控软件测试特点
嵌入式飞控软件作为实时控制软件,具有嵌入式系统的特点:实时性、内存不丰富、I/O通道少、开发工具昂贵、与硬件紧密相关等;同时,还具有以下特点:程序受多个中断控制,调用关系复杂、结构复杂;规模庞大、采用多种语言混合编程,可靠性要求高等。嵌入式飞控软件的这些特点,给软件测试的环境和条件提出了更高的要求,软件的测试比其它软件的测试更为复杂,也给测试人员带来了更大的挑战。如何在现有的条件下保证飞控软件测试的质量,成为软件测试面临的最大难题。
文献标识码:A 文章编号:1672-7800(2011)08-0014-
龙源期刊网 http://www.qikan.com.cn
2 嵌入式飞控软件测试流程及测试方法分析
软件测试的目的是检验每个软件能否正确地实现要求的功能、性能和接口要求,飞控软件是关键软件,按测试类型来分,需要进行静态分析、代码审查、单元测试、部件测试、配置项测试等一系列软件测试工作。
在测试过程中,首先进行静态分析、代码审查,进行静态测试;其次,通过单元测试验证软件单元是否正确实现了规定的功能和接口等要求;在单元测试基础上,将软件组装在一起,进行部件测试,验证软件是否满足设计要求;然后依据软件的需求规格说明进行功能、性能的配置项级测试,验证整个软件产品是否达到要求。下面分别对各种测试方法、环境及主要工作技术要求进行分析。 2.1 静态分析
采用McCabe工具软件对整个飞控软件进行分析,提供程序级结构图和单元级流程图,对软件代码质量进行度量,提供Line复杂度、Halstead复杂度和McCabe复杂度等度量参数(见图1),对飞控软件的整体结构和各单元的质量有一个量化的分析数据。
图1 复杂度分析结果
通过静态分析,既可以为飞控软件代码的改进提供依据,同时也为后续的单元、部件测试等提供指导。例如,依据分析结果对复杂度较高的单元进行重点测试,合理地分配测试的人力资源,使测试工作得以有序进行,保证测试工作的质量。 2.2 代码审查
代码审查的目的,是发现代码错误或歧义性,检查代码和设计的一致性,检查代码的规范性、可读性,逻辑表达的正确性、代码结构的合理性,减少不同阶段的测试中修改错误所需的时间和工作。飞控软件代码审查的要点有:①程序结构检查,检查程序结构的合理性;②变量的使用,检查变量的定义和引用的一致性;③注释行检查,检查是否有满足要求的足够的注释;④程序单元的入口和出口,检查入口、出口的定义和实际引用的一致性;⑤程序单元的功能检查,检查功能的完备性和正确性;⑥代码的逻辑检查,检查代码逻辑表达的正确性;⑦代码实现与设计文档的一致性。 2.3 单元测试
单元测试验证每个软件单元是否能正确地实现其功能,是否满足其特性和接口要求,在极限条件下的性能是否可靠。
龙源期刊网 http://www.qikan.com.cn
在飞控软件单元测试过程中,主要采用RTRT进行单元测试,同时集成CCS、VC编译器作为仿真运行环境,建立测试驱动并运行取得测试结果,必要时应在C25硬件仿真器上跟踪被测模块的指令执行。飞控软件单元测试的主要内容包括:①测试软件单元的功能、软硬件接口;②语句/分支/条件覆盖、重要的执行路径覆盖、数据结构;③数算的精度和变量的越界、溢出;边界条件、出错处理等;④检查程序与设计文档的一致性,设计文档之间的一致性;⑤通过测试,对被测单元的功能、性能有一个准确的评估。 2.4 部件测试
部件测试是根据软件概要设计文档,测试每个软件单元是否能正确地实现其功能和接口要求。
在飞控软件部件测试中配置了与单元测试相同的测试环境。部件测试采用自底向上的测试方法。自底向上的测试要求对每个被测的组装单元构造一个驱动单元,并在C25仿真环境下对被组装后的单元建立测试驱动,并运行取得测试结果。
飞控软件部件测试的主要内容包括:①检测模块接口和全局变量的正确性;②验证每一对调用接口的完整性、一致性;③测试被调用模块对流入的全局变量(或全局内存)的影响等;④验证重点算法的关键数据流程;⑤覆盖由软件调用关系组成的控制流程、由程序单元接口及全局变量组成的数据流程。 2.5 配置项测试
配置项测试是根据软件需求,识别、分解软件测试需求,给出测试定义;其次根据测试定义、软件外部接口和测试环境的能力,采取等价类划分、边界值分析、状态转移等技术设计测试用例(包括输入、预期输出、评判测试通过的准则、测试操作过程等)。按照全面覆盖软件需求的原则,分析测试用例的充分性、完整性,并通过分析测试环境的能力评估测试用例的可操作实施性。通过仿真计算机设置软件运行的初始条件,使飞控软件在仿真数学模型的交互作用下实时运行,通过遥测数据处理机计算机观察和分析软件输出的能力。
飞控软件配置项测试主要采用飞控组件动态测试设备完成相关测试(飞控软件配置项测试环境见图2),通过顶层管理软件、遥测数据处理软件、以及在仿真计算机中实现的系统其他部分的仿真数学模型,对飞控组件进行综合测试,检测飞控软件运行的正确性。飞控软件配置项测试环境如图2所示。
飞控软件配置项测试用例,必须覆盖以下几个方面内容:①功能测试(包括软件的正常功能和异常处理功能);②性能测试(时间性能测试);③接口测试(包括正常输入和异常输入);④强度测试(实时性能、输入量、从失效状态返回安全状态的能力以及程序在极限情况下的功能);⑤边界测试(输入数据处于数据定义的边界或软件功能的边界);⑥余量测试。
龙源期刊网 http://www.qikan.com.cn
3 软件测试中的关键技术问题及解决方案
嵌入式飞控软件大多数采用C25汇编语言和C语言混合编码,底层的数算采用汇编语言实现,飞控算法(即工作程序)部分采用C语言实现。在对嵌入式飞控软件进行测试的过程中,主要遇到了测试环境构建、测试驱动模型建立以及错误捕捉等各种问题。针对这些问题,测试人员通过测试实践,有针对性的制定了解决方案,提高了测试的质量,下面针对主要问题及解决方案分别进行描述。
3.1 构建真实的单元测试环境
目前常用的的测试工具不能完全兼容对C25汇编模块的测试,但是工作程序部分所调用的汇编代码必须实际运行,才能保证测试的真实性。
为了解决这个问题,测试过程中采用两种方式实现:一种是把C25汇编语言代码移植到RTRT 的C2XX平台下,保证测试正常进行;另外一种是建立测试数学库模块,在测试时直接调用测试数学库。
3.2 建立部件测试驱动模型及环境
在部件测试时,驱动模型的建立也是一个难点。要想使飞控软件运行起来,必须有合理的驱动。另外,在部件测试时,由于程序量较大,在模块集成时经常因为测试用例较多、算法复杂而无法测试。
针对以上问题,软件测试人员利用共同飞行段和自主 飞行段的遥测信息,建立了自主飞行算法模型,编制了部件
测试模型程序,再现软件的运行过程。同时,在部件测试时,通过建立测试数学库模块、改写库函数等方法,在VC环境下对程序进行测试,有效的解决了因编译环境不同而造成的数据结构的差异问题,以及对C25代码加载的。 3.3 捕捉数算错误
由于飞控软件中较多使用数算,对于采用定点运算的飞控软件,可能会出现中间过程溢出而最后结果不溢出的现象。因此,如何捕捉中间溢出,保证飞控软件测试质量,需要进行针对性的研究。
龙源期刊网 http://www.qikan.com.cn
在软件测试过程中,通过设计中间代理层对溢出错误进行捕获,对数算函数库进行包裹,覆盖基本的浮点数算和浮点向量运算,构成基本的底层模块,捕捉加、减、除、移位、开方等的错误。 4 结束语
由于嵌入式飞控软件的特殊性和复杂性,对软件测试工作提出了特殊的要求,本文针对软件测试时遇到的实际问题,阐述了自己的测试过程及解决方案。通过对嵌入式飞控软件测试方法及技术的研究,以及在测试过程中的实践,设计了嵌入式软件的测试流程、测试方法,发现了软件中存在的一些问题,提高了软件的质量和可靠性。 参考文献:
[1] 樊会涛,吕长起,林忠贤,等.空空导弹系统总体设计[M].北京:国防工业出版社 [2] 徐祖渊.航天型号软件研制过程[M].北京:宇航出版社 [3] 王荣.嵌入式软件测试方法[J].航空兵器,
[4] 韩峰岩,王昕.机载计算机软件的测试[J].航空计算技术
[5] 奚水清,胡飞.基于模型的嵌入式软件测试[J].微处理机,2009(1).
(责任编辑:杜能钢)
Research and Practice on Embedded Flight-Control Software
Abstract:Software testing is the key work to ensure software quality and reliability, and it is faced with many difficulties as the complexity and specificity of embedded flight-control software. This paper gives the characteristics of the flight-control software, and presents the corresponding test
Key Words: Embedded Software;Flight-Control Software;Software Testing;Mccabe
龙源期刊网 http://www.qikan.com.cn