嵌入式软件测试技术在机电综合管理系统中的应用
2018-06-13吴丽媛谢剑斌陆志肖
王 伟,吴丽媛,谢剑斌,陆志肖
(中国直升机设计研究所,江西 景德镇 333001)
0 引言
随着社会的不断进步和计算机技术的飞速发展,计算机及软件在社会生活和国民经济等方面的应用越来越广泛和深入,在航空航天领域同样也起着举足轻重的作用。而软件失效可能引起巨大损失,例如美国航天局火星登陆事故,欧洲航天局火箭发射失败等事件[1,2]。为进一步改善传统的机电子系统庞杂的结构,逐步减轻直升机的重量,减少机体体积、装机设备数量和降低连线的复杂性,机电综合管理系统综合化、整体化,处理机多余度,成为直升机机电管理专业致力的重要内容,是机电综合管理的必然发展方向。图1为符合直升机发展要求的一种机电综合管理系统架构。直升机机电综合管理系统的发展势必会使系统软件相应地复杂。考虑软件失效的问题,我们设计了适合的软件测试方法来解决。
1 软件测试
1.1 软件测试的目标
软件测试的目标是提供信息改进被测软件的质量,改善开发和测试的过程能为项目管理者和软件开发者提供信息并预防软件缺陷。
图1 直升机机电综合管理系统未来架构
软件测试是贯穿软件开发全过程的关键步骤。开发阶段的测试,主要目的是尽可能发现失效,从而识别和修正尽可能多的缺陷;验收阶段的测试,主要目的是确认系统是否能够按照预期工作,是否符合需求;维护阶段的测试,主要目的是为了验证在开发过程中的软件变更是否引入新的缺陷;运行阶段的测试,主要目的是为了评估系统的特征,比如可靠性或者可用性等。有些情况下,测试的主要目标是对软件的质量进行评估,而不是为了修复缺陷。大量统计表明,软件测试占总工作量的40%以上,在极端情况下,甚至可能高达软件工程其他步骤成本总和的三到五倍。
1.2 软件测试技术概述
软件测试技术分类如图2所示,现有的软件测试技术通常分为静态测试和动态测试。测试阶段基本上分为单元测试、部件测试、配置项测试以及验收测试。其中,单元测试中静态和动态测试技术同等重要,各占50%;部件测试与配置项测试以动态测试为主,静态测试为辅。测试阶段的信息流程如图3。
图2 软件测试技术的分类
图3 测试阶段的信息流程
输入流分软件配置和测试配置两项。软件配置由需求说明书、设计说明书和源代码组成;测试配置中包含测试计划、测试工具、测试用例和期望结果,有时测试配置也作为软件配置的一个组成部分。测试人员根据上述输入信息测试程序并评价测试结果,当测试结果与期望结果存在差异时,往往程序有错。此时可采用排错技术定位错误并改正。经过测试的软件失效率会降低,生命周期得到延长。
2 直升机机电综合管理系统软件测试应用
2.1 机电综合管理系统软件架构
直升机机电综合管理系统软件是根据直升机各机电系统的监控需求以及航电要求开发的,是一个多任务机载实时嵌入式软件,它的模块按功能划分,各个任务的优先级按事件的重要程度来定义。软件分为周期任务和非周期任务,一般定义在初始化、模式控制、机电系统周期监控、航电命令处理、串口通讯、维护、启动检测、硬件自检、例外和公用等几个模块中。
2.2 软件测试在机电综合管理系统中的必要性
直升机机电综合管理系统软件是实时的嵌入式软件。嵌入式实时软件的测试是软件界公认的难点,其原因之一在于系统中有存在软硬件的紧密结合,在编写应用软件时要考虑硬件资源的管理和使用,因为这将决定系统的质量和效率;另外,很多嵌入式系统需要长时间自主运行,并担负某些任务 ,运行后不再需要人工干预和交互,所以难以进行手工测试;而且,实时嵌入式系统与外界的信息交换具有严格的定时要求,某些行为仅在某种特定的系统状态之下和某些特定的事件序列到达时才会发生。为了避免软件缺陷,需要精心地设计测试用例并保证足够的测试覆盖率。
直升机机电综合管理系统的软件开发是软件设计员的工作内容,人的工作和交流不可能毫无缺陷,出现错误是难免的。而且,随着机电综合管理系统应用软件功能的不断强大和所监控的子系统复杂程度的不断提高,应用软件的规模也在不断增大,这些因素都使得出现错误的可能性增加。而软件测试正是保证软件质量和可靠性的重要手段,它能够发现软件中隐藏的许多缺陷。例如英国海军SHOLIS项目中,单元测试发现了整个软件开发过程15.75%的缺陷,避免了很多损失[1]。 在找到错误后,通过分析错误产生的原因和错误的分布特征,还可以帮助机电系统项目管理者和软件开发者发现当前所采用的软件过程的缺陷,以便改进。没有发现错误的测试也是有价值的,测试并不仅仅是以查找错误为中心,演示机电综合管理系统软件的正确功能也很重要。软件的正常功能能得到确保。
2.3 机电综合管理系统软件测试设计
2.3.1 测试模型
基本遵从软件的全生命周期的测试模型,对应软件开发的过程,测试过程依次为编码后对代码进行代码静态分析,然后对照软件详细设计进行动态单元测试;对测试后的单元对照软件概要设计进行部件测试;测试后的部件对照软件需求分析进行配置项测试;最后对测试后的配置项对照系统的需求进行系统测试,最终交付。
2.3.2 测试阶段
结合我国直升机现状,目前直升机机电综合管理系统采用的软件测试技术有静态测试中的文档审查、代码审查技术和动态测试的黑盒、白盒测试技术;进行的测试阶段主要是单元测试和配置项测试,也有部件测试和系统测试,其中单元测试采用同等工作量的静态测试和动态测试,配置项测试以动态测试为主。
1) 单元测试
采用功能测试、接口测试、结构覆盖等测试类型。机电管理计算机软件进行单元测试是针对代码中能单独测试的最小单位(可独立编译的程序模块)进行的正确性检验的测试,如涉及到其他单元的函数,则采用打桩(在本单元内编写需要调用的函数)的方式确保单元测试环境的建立,从而保证被测软件单元能够独立地运行。
硬件准备包括主控计算机(带有操作系统windows xp和开发环境Tornado 2.0)、机电系统模拟综合装置USI(模拟机电系统的工作状态和数据逻辑)、航电系统模拟装置UICD(模拟航电系统和机电管理计算机的接口和逻辑)以及机电管理计算机(应用软件加载和运行的目标机);软件准备包括文档机电管理计算机的《应用软件设计报告》(含接口设计说明);通过编译的被测软件单元源程序。
测试的内容包括:
① 代码检查:软件代码命名规则检查、编码格式检查、寄存器使用检查、程序逻辑检查、算法检查、变量使用检查及标准化检查等;
② 模块接口测试:对通过被测模块的数据流进行测试,对模块接口,包括参数表、调用子模块的参数、全程数据、文件输入/输出操作都必须检查;
③ 局部数据结构检查:设计测试用例检查数据类型、初始化、缺省值等方面的问题,还要查清全程数据对模块的影响;
④ 路径测试:选择测试用例,对模块中重要的执行路径进行测试;
⑤ 错误处理测试:检查模块的错误处理功能是否包含有错误或者缺陷;
⑥ 边界测试:检查数据流、控制流中刚好等于、大于或者小于确定的比较值时出错的可能性;
⑦ 时间性测试:如果模块运行时间有要求的话,还要专门进行关键路径测试,以确定各种情况下模块运行的时间。
2)部件测试
采用功能测试、接口测试、结构覆盖等测试类型。依据软件概要设计,测试概要设计中的功能模块,测试计划注明包含测试部件哪些单元,用例的设计编写比较接近单元测试。
硬件准备同单元测试;软件准备包括文档机电管理计算机《应用软件需求规格说明》(含接口需求说明)、《应用软件设计报告》,被集成的通过单元测试的软件单元源程序,并提供软部件程序和可执行代码。
测试的内容包括:
① 功能测试:软部件(或者单元)间参数传递与返回结果的正确性;软部件(或者单元)集成后,被测实现功能的正确性;全局数据结构的正确性。
② 性能测试:运行时间;嵌入式软件实时性能。
③ 接口测试:软部件(或者单元)间接口数据流的正确性;软部件(或者单元)间的数据交换是否存在不良影响。
④ 结构覆盖测试:软部件(或者单元)间调用关系上的覆盖测试,要求覆盖率达到100%。
⑤ 指针与泄漏错误测试。
3)配置项测试
采用功能测试、接口测试、结构覆盖等测试类型。测试机电管理监控项是否能正常告警显示。配置项测试是目前机电综合管理系统软件测试的重要测试阶段。
硬件准备同单元测试;软件准备包括文档机电管理计算机《应用软件需求规格说明》、《应用软件设计报告》,已通过测试的软件单元、软部件以及测试问题报告单、源程序、可执行代码。
测试的内容包括:
① 功能测试:对软件需求规格说明中所规定的软件合格性项进行逐项测试,以验证其功能是否满足需求规格说明的要求;对软件配置项的控制流程的正确性、合理性等进行验证。
② 性能测试:软件配置项在获得定量结果时计算的精确性;有时间要求的软件配置项,应测试其时间特性及实际运行时间;软件配置项完成其功能所能处理的数据量;软件配置项各部分的协调性;软件需求规格说明中所要求的其它性能指标。
③ 接口测试:内部接口的正确性和协调性;外部接口的正确性和协调性。
④ 人机界面测试:操作和显示界面与软件需求规格说明的要求的一致性和符合性;人机界面在非常规操作、误操作、快速操作下的可靠性;对错误命令或者非法数据输入的检查能力与提示情况;人机界面对所要求界面风格的一致性。
⑤ 安全性测试:异常条件下的测试;安全关键操作错误的测试;软件配置项在输入域(或输出域)、数据结构、状态转换、过程参数、功能界限等的边界或端点情况下的运行状态。
⑥ 可安装性测试:不同配置下的安装或卸载测试;安装测试用例验证。
4)系统测试
选用常见的测试类型中的功能测试、性能测试、接口测试和结构覆盖,测试边界和异常的状态下软件的功能和性能,测试软件配置项之间以及配置项与硬件之间的接口,测试人机交互操作(包括正常操作、误操作时软件的反应和排错性、可靠性的处理能力)。
硬件准备同单元测试;软件准备包括文档机电管理计算机《应用软件需求规格说明》、《应用软件设计报告》,已通过测试的软件单元、软部件、配置项以及测试问题报告单、源程序、可执行代码。
测试的内容包括:
① 功能测试,对系统设计文件中规定的各项软件功能进行以下测试,以验证系统是否达到所规定的要求:正常值的等价类输入数据检测;非正常值的等价类输入数据检测;边界值的输入数据检测。
② 性能测试:软件在获得定量结果时计算的精确性;有速度要求时,计算完成功能的时间;软/硬件运行环境中的因素是否限制了软件的性能;系统的负载能力;系统运行时软件占用的空间;系统对并发事务和并发用户访问的处理能力。
③ 接口测试:系统内部接口的正确性和一致性;系统外部接口的正确性和一致性。
④ 人机界面测试:人机交互界面字符、文字、GUI元素的正确性;人机交互界面的有效性;人机交互界面的健壮性;人机交互界面与用户手册或操作手册的一致性。
⑤ 安全性测试:硬件或软件出现故障情况下的处理和保护能力;容错操作的能力;用户数据抗非法访问的能力;用户和权限管理。
⑥ 可安装性测试:不同配置下的安装或卸载测试;验证安装参数装订、安装规程的正确性及安装规程与安装手册描述的一致性。
⑦ 文档审查:文档完整性;文档内容的直观性和易于理解性;文档描述的一致性。
3 结论
随着直升机机电综合管理系统功能的日益强大,对机电综合管理系统软件提出了更高的要求:除了完成相应的功能以外,还应能够尽力地避免软件的缺陷。本文在此背景下,以嵌入式软件测试理论与技术为指导,结合实际需求,提出机电综合管理系统软件的测试工作内容。在初步的使用操作中,比较全面地涵盖了所有需要测试的方面。这种系统全面的测试节省了测试环境的开发和准备时间,同时提高了测试的效率。
测试工作的质量直接影响机电管理计算机产品的生命力。随着机电一体化的逐渐发展,应对机电综合管理系统的软件测试进行更深入的研究,使其更大限度地发挥保障机电综合管理系统运行质量的作用。
参考文献:
[1] 聂长海.关于软件测试的几点思考[J].计算机科学,2001,38(2):1-3.
[2] 陆志肖,聂永昱,谢剑斌,等.软件可靠性设计在机电综合管理系统软件中的应用[J].直升机技术,2010(3):53-57.
[3] 罗海明,谢剑斌,陆志肖.机电系统综合化控制和管理[J].直升机技术,2010,(1):62-67.
[4] 单锦辉,姜 瑛,孙 萍.软件测试研究进展[J].北京大学学报(自然科学版),2005,41(1):134-145.
[5] 黎连业,王 华,李淑春.软件测试与测试技术[M].北京:清华大学出版社,2009.
[6] 王 璞,张臻鉴,王玉玺,等.面向实时嵌入式机载软件的测试技术研究[J].计算机工程,1998,24(2):12-15