APP下载

无人直升机飞控系统软件测试技术应用研究

2017-12-13张少杰李建伟

直升机技术 2017年4期
关键词:飞控单元测试测试用例

张少杰,李建伟

(1.中国直升机设计研究所,江西 景德镇 333001;2.陆航驻景德镇地区军代室,江西 景德镇 333000)

无人直升机飞控系统软件测试技术应用研究

张少杰1,李建伟2

(1.中国直升机设计研究所,江西 景德镇 333001;2.陆航驻景德镇地区军代室,江西 景德镇 333000)

软件测试是保证软件质量的必要环节。针对无人直升机飞控系统软件嵌入性、实时性和高可靠性的特点,提出一种可行的测试策略,建立了基于需求的软件测试模型,并结合软件测试自动化工具的使用,通过实际项目,验证了该测试策略和测试模型能够提高测试效率,确保飞控软件质量。

软件测试;飞控系统软件;软件测试自动化

0 引言

软件测试是软件工程中的重要组成部分,是软件质量验证、确认和提高的有力保障,尤其是涉及高度安全的软件系统。但随着软件开发规模的增大,复杂度增加,测试工作的难度也随之增加。无人直升机飞控系统软件作为无人机系统的关键性软件,具备高可靠性、高安全性的特点,为了及早发现软件中存在的缺陷,尽可能降低无人直升机机飞行过程中的风险,在飞控系统软件的开发过程中进行严格完善的软件测试工作是必不可少的。

1 软件测试技术

IEEE提出的软件工程标准术语中,软件测试的定义为:对软件系统或软件系统组件进行检测和评估的过程,通过人工或自动的方式来验证是否满足特定的规定和需求,确认实际运行结果与所期望的运行结果之间的差异[1]。

虽然长期以来对软件测试的理解和表述不尽相同,但对其目标的阐释基本是一致的:尽可能寻找软件中隐藏的错误和缺陷,提高软件的质量,对软件进行验证和确认。软件测试的基本原理如图1所示。

1.1软件测试方法

根据是否运行程序,软件测试方法分为静态测试和动态测试两大类。

静态测试是不运行程序而寻找程序代码中可能存在的错误和评估程序代码的过程,常采用文档审查、代码审查、静态分析和形式化证明等形式。

动态测试以测试数据为输入,运行程序并全面分析代码功能、逻辑、结构等以发现错误的过程,又可分为黑盒测试、白盒测试和灰盒测试。

1.2软件测试级别

根据软件开发周期的不同阶段、不同测试对象,软件测试的过程一般分为四个步骤:单元测试、集成测试、确认测试、系统测试,最后进行验收测试,其测试过程如图2所示。

单元测试又称模块测试,完成对设计中定义的软件产品结构中的最小逻辑单元的验证;集成测试又称部件测试,对象是由软件单元和(或)软件部件组装得到的各级软件部件,检查软件单元与部件之间的接口关系等;确认测试检查已经实现的软件是否与需求规格说明保持一致以及软件配置项是否完整、正确;系统测试是将完整的、集成的软件系统纳入实际的运行环境,检验软件系统能否满足软件研制任务书和系统设计方案的要求。

1.3嵌入式软件测试

嵌入式软件是嵌入式系统中的用户应用软件,与硬件类型紧密相关,并且通常具有实时性[2]。一般而言,嵌入式软件的开发环境和最终运行环境是不同的,开发环境为宿主机平台(Host),运行环境为目标平台(Target),相应的测试就有宿主机测试(Host Testing)和交叉环境测试(Cross Testing)。

嵌入式系统具有多平台开发、嵌入性、实时性、开发环境和运行环境不同、高强度运行等特点,这使得软件测试代价增加,而且带来了测试策略的问题[3]。因此在嵌入式软件的测试中,需针对软件模型采用适当的测试策略来提高嵌入式软件的测试效率,来减弱外界因素对目标系统的影响。

本文的测试对象是某型无人直升机的飞控系统软件,属于典型的嵌入式系统。

2 飞控系统软件测试策略及模型

2.1飞控系统软件分析

无人直升机飞控系统软件是无人直升机飞控系统的核心,分为飞行控制功能和飞行管理功能两部分。飞行控制功能根据控制策略解算控制律,主要用于发动机控制和飞行姿态(俯仰、横滚和航向)的稳定,控制飞行航迹,使无人直升机完成从起飞到降落整个过程的飞行;飞行管理功能主要进行自动导航管理、发动机管理、机载设备管理、制导控制管理、系统监管等多项飞行管理任务。本文研究的飞控系统软件功能层次如图3所示。

无人直升机飞控系统软件需求规格说明中阐述了飞控系统软件的功能、性能、接口以及所要考虑的限制条件。它尽可能完整地描述了飞控系统预期的外部行为和用户可视化行为,不仅是开发人员设计和编程的基础,也是系统测试的重要参考和依据。

2.2飞控系统软件测试策略

无人直升机飞控系统软件作为航空机载的关键软件,其测试严格遵守GJB 5369-2005《航天型号软件C语言安全子集》的标准。

针对飞控系统软件嵌入性、实时性、高安全性、高可靠性的特点,制定相应的测试策略以满足测试需求。

1)嵌入性问题的解决

嵌入式软件的特点是开发环境(宿主机)和运行环境(目标机)是不同的,例如本文研究的飞控系统软件的宿主机开发环境是CodeWarrior,而目标机运行环境是μc/OSII。理论上,有效的测试工作应当在软件实际运行环境下进行,但由于受到各方面因素的限制而无法完全实现。

因此,在开发环境中执行单元测试、功能测试、软件集成测试,在运行环境中进行软/硬件集成测试和系统测试。运行环境下的测试在搭建的飞控系统半物理仿真平台下进行,其原理示意图如图4所示。整个地面半物理仿真系统中使用仿真测试设备模拟各类传感器和通信方式,其接口与真实运行环境接口一致,其传感器数据的采集、计算和输出与真实的传感器设备仅有微小差异,对测试结果无影响。

2) 实时性问题的解决

实时程序的测试一般包含性能测试和逻辑测试两个方面,但功能测试会对软件的实时性造成影响。一般的解决方法是:①将时间限制适当放宽到不影响软件的执行逻辑;②应用专门的测试设备来获取测试信息。

3)高安全性、高可靠性问题的解决

飞控系统软件的质量直接影响无人直升机的飞行品质和飞行安全,提升软件的可靠性需要完善测试活动的过程。

① 软件测试应当是软件验证的过程,而不是简单的测试过程。软件验证是评审、分析和测试的组合,将评审和分析融入到软件的测试过程中,验证测试用例和测试程序是否满足目标,有助于测试人员更早地发现更多的软件缺陷。

② 软件测试活动应存在于软件开发的整个生命周期。软件测试不是软件开发结束后的活动,而应该是和软件开发同步并行展开的。

2.3飞控系统软件测试关键技术

2.3.1 测试用例的设计

测试用例是为特定的测试项所规定的一组输入、执行条件和预期结果。设计测试用例时,应遵循以下原则:

1)基于测试要求:应按照测试级别的不同要求设计测试用例。软件单元测试和软件部件测试依据《软件设计说明》;软件配置项测试依据《软件研制任务书》、《软件需求规格说明》;软件系统测试依据《软件研制任务书》、《软件需求规格说明》、《系统设计方案》。

2)基于测试方法:应明确所采用的测试用例设计方法。为达到不同的测试充分性要求,应采用相应的测试方法,例如等价类划分、边界值分析、猜错法、因果图等方法。

3)兼顾测试充分性和效率的原则:测试用例集应兼顾测试的充分性和测试的效率;每个测试用例的内容也应完整,具有可操作性。

4)测试执行的可重复性:应保证测试用例执行的可重复性。

测试用例的设计步骤如图5所示。

2.3.2 测试覆盖分析

测试覆盖分析包括需求覆盖分析和结构覆盖分析。

需求覆盖分析的目标是确定基于需求的测试是否完全覆盖了软件需求,基于需求的软件测试使测试用例覆盖软件的每一项需求。

结构覆盖分析是对软件结构的执行情况进行分析的一种手段,常见的结构覆盖法有:语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖、条件组合覆盖等,结构覆盖分析的过程如图6所示。

本文针对某型无人直升机飞控系统软件的覆盖要求:重要模块(实现软件重要功能、安全性需求的模块即为重要模块,重要模块的比例不低于软件总代码量的10%)要求语句、分支、条件/判断覆盖率达到100%,其它模块要求语句和分支覆盖率100%,对覆盖率无法达到的需说明原因。

2.4飞控系统软件的测试模型

传统的V模型描述了基本的开发过程和测试行为,明确了测试过程的不同级别,清晰地描述了不同测试阶段和开发过程阶段的对应关系,但其存在固有的局限性。V模型是顺序开发模型,将系统开发过程划分为具有固定边界的不同阶段,使得测试人员难以越过边界采集测试所需要的信息,以致V模型无法引导软件项目的全部过程,来确定先行的测试或延后的测试。

极限编程的理念是测试应当先行,并贯穿软件开发的整个生命周期[4]。软件缺陷修复的代价会随着时间的推移呈指数级增加,所以测试活动越早介入越好。因此,在软件设计开发的过程中,同时需要平行、同步地进行测试的计划和设计、测试用例的生成、测试程序的编写,测试工具的选择和测试环境的搭建等。

综合考虑嵌入式的无人直升机飞控系统软件,结合软件测试技术、极限编程思想,借鉴传统的V模型,提出基于需求的无人直升机飞控系统软件测试模型。

基于需求的无人直升机飞控系统软件测试模型如图7所示。对于该模型的说明如下:

1)该模型包含的主要活动包括:软件需求评审、软件设计评审、代码评审、单元测试、基于需求的测试用例设计、基于需求的测试用例评审、基于需求的测试程序设计、基于需求的测试程序评审、软件集成测试、软件配置项测试、需求覆盖分析、结构覆盖分析、软件系统测试。

2)该模型依据软件需求进行结构设计、编码和测试用例设计,软件测试活动的整个过程是以软件需求为中心,完成需求覆盖、结构覆盖的测试和分析。

3)软件的开发和测试过程是并行工作模式,弥补了V模型中顺序开发模式的缺点,提高了测试效率,降低了软件产品的质量风险,缩短了整个软件的研发周期和维护成本。

4)该模型中,软件的开发和测试的各阶段都增加了一个评审活动,对源代码和测试用例的准确性、完整性提供专业的评估,属于间接的软件验证过程,能够及时发现在开发和测试活动中存在的软件缺陷。

5)该模型中明确了需求覆盖分析和结构覆盖分析的执行和判断标准,通过测试用例的增加、重编、迭代来满足测试计划的要求。

6)该模型中的编码、代码审查和单元测试不是单一的顺序执行关系,而是交叉、耦合、同步实施的活动。一部分编码工作完成后,就开始代码审查和单元测试,然后依据测试的结果,再对代码进行完善。

3 飞控系统软件测试实践分析

3.1软件测试自动化

自动化测试是指利用测试工具来执行测试,并对测试结果进行分析的测试行为,软件自动化测试工具是提高测试效率、覆盖率和可靠性的一种有效方法[5]。

在飞控系统软件的测试过程中,引入自动化测试工具,其各测试阶段测试工具的引入情况如下:

静态分析:LDRA Testbed、LDRA TBAudit;

单元测试:LDRA Testbed、LDRA TBrun;

代码评审、设计评审、质量评审:LDRA工具包。

通过测试工具的应用,生成静态分析、复杂度分析和度量评估的报告,并完成测试用例的执行、测试结果的比较、结构覆盖率分析等的自动化。

3.2软件的测试准备

依据《飞控系统软件研制任务书》的设计约束和602所三级过程体系文件之《软件测试裁剪指南》的要求确定本次的测试级别包括静态测试、单元测试和系统测试。

1)文档资料:《飞控系统软件研制任务书》、《飞控系统软件需求规格说明》、《飞控系统软件设计说明》和《飞控系统软件接口控制文件》等。

2)测试环境和测试工具

静态分析:PC机+Windows XP+CodeWarrior+LDRA TBAudit;

单元测试:PC机+Windows XP+CodeWarrior+LDRA TBrun;

系统测试:PC机+Windows XP+CodeWarrior+遥控遥测软件+仿真控制台软件+飞控计算机(目标机)+μc/OSII操作系统+仿真测试设备。

3.3软件的测试过程

根据上文中提出的基于需求的飞控系统软件测试策略及模型执行软件的各项测试工作,其主要内容包括:软件需求评审、软件设计评审、代码审查、单元测试、基于需求的测试用例设计、基于需求的测试程序设计、执行测试、覆盖分析、测试问题报告。

静态测试的测试类别包括文档审查DOCR、代码审查CR、静态分析SA;单元测试的测试类别包括:功能测试FN、接口测试IF和结构覆盖测试SC;系统测试的测试类别包括:功能测试FN、性能测试PF、接口测试IF、边界测试BD、强度测试IS、余量测试RC、安全性测试SAF。

3.4软件测试的执行

基于需求的飞控系统软件测试模型包括多个评审过程:软件需求评审、软件设计评审、代码审查、测试用例评审、测试程序评审。在测试过程中,每个测试环节结束后,都需进行相应的评审并填写评审单。

依据2.3.1节所述的测试用例的设计准则,分析软件的需求编写测试用例。每个测试用例应包括以下要素:被测软件名称、标识和版本,编号,用例标识,测试级别,测试说明,用例描述,测试步骤,预期结果,实测结果,故障现象描述,测试用例的设计人员、设计时间、测试人员、测试时间、测试地点,依据测试结果评估准则得出的测试结论。测试用例表的格式如图8所示。

通过对被测软件的测试需求分析,将软件需求(包括隐含需求)整理为测试需求,每个测试需求都分解为具体的测试项,飞控系统软件的单元测试共确定了27个测试项,覆盖了被测软件设计说明中重要模块的全部可测需求,共设计了142个测试用例;飞控系统软件的系统测试共确定了18个测试项,覆盖了被测软件需求规格说明中的全部可测需求,针对每个测试项,从功能测试、性能测试、边界测试、余量测试、强度测试等方面设计了156个测试用例。此外,从软件测试说明中的测试用例到它所涉及的系统或CSCI需求都是可追踪的,从软件测试说明所提及的每项系统或CSCI需求到涉及它们的测试用例也是可追踪的。

4 结束语

基于需求的飞控系统软件测试模型在各关键的测试环节都增加了评审活动,能够有效地减小测试错误率。LDRA Testbed测试工具的应用,实现了代码分析、测试用例执行、结果比对、结构覆盖率检测的自动化。通过实践分析证明,在实际的测试活动中,结合基于需求的飞控系统软件模型,能够尽早地发现软件中存在的错误,提高测试效率,缩短测试周期,从而保证飞控系统软件的可靠性和安全性。

[1] IEEE std 610.12-1990. IEEE Standard Glossary of Software Engineering Terminology[S].In IEEE Standards Software Engineering, Volume One: Customer and Terminology Standards, 2009.

[2] 唐 科.软件仿真环境下的嵌入式软件测试的研究[D].成都:电子科技大学,2006:7-8.

[3] 张臻鉴.航空嵌入式软件测试研究[D].西安:西安交通人学,2003:14-15.

[4] 张惠彦.极限编程的研究和应用[J].科学技术与工程,2007,7(12):2998-3000.

[5] 朱国庆,许聚常,任继平,等.软件测试自动化实践[J].装甲兵工程学报,2004,18(2):91-92.

AppliedResearchontheTestingTechnologyofUnmannedHelicopterFlightControlSystemSoftware

ZHANG Shaojie1,LI Jianwei2

(1.China Helicopter Research and Development Institute, Jingdezhen 333001, China;2.Army Aviation Department of the PLA General Staff Military Representative Office in Jingdezhen Rejion, Jingdezhen 333000,China)

Software Testing is a necessary link to ensure the software quality. In order to solve the characteristics of real-time performance, embed ability and high reliability of unmanned helicopter flight control system software (FCSS), this paper put forward a feasible testing strategy and proposed the requirements based software testing model for FCSS.Through the actual project and combining with application of software testing automation tools, the testing result indicated that the strategies and model could improve the efficiency and ensure the quality of FCSS.

software testing; flight control system software; FCSS; software testing automation

2016-11-14

张少杰(1990-),男,河北石家庄人,硕士,助理工程师,主要研究方向:无人直升机飞行控制。

1673-1220(2017)04-040-06

TP311.55;V249

A

猜你喜欢

飞控单元测试测试用例
基于LDA模型的测试用例复用方法*
民用飞机飞控通电自检测安全性研究
中小型太阳能无人机航电系统设计
软件测试中的测试用例及复用研究
一年级上册第五单元测试
一年级上册一、二单元测试
测试工时受限的测试策略研究
第五单元测试卷
第六单元测试卷