基于故障注入的嵌入式测绘导航软件测试技术研究*

2018-01-30 01:45华,扬,强,
测试技术学报 2018年1期
关键词:故障注入测试软件软件测试

王 华, 高 扬, 吴 强, 张 侹

(1. 西安测绘研究所, 陕西 西安 710054; 2. 地理信息工程国家重点实验室, 陕西 西安 710054)

0 引 言

嵌入式测绘导航软件是指运行于以北斗用户终端、 嵌入式GIS终端为代表的嵌入式测绘导航设备之上, 为用户提供精确定位、 高精度授时、 短报文通信、 精密测量、 地图显示、 路径规划、 智能导航、 地图标绘、 地形分析等任务保障的嵌入式软件系统, 具有导航定位信息和地理空间信息的接收、 采集、 处理、 分析、 显示、 管理等功能.

嵌入式测绘导航软件测试涉及功能性、 可靠性、 安全性和容错性等诸多方面, 其软件故障具有以下特点: ① 故障类型多样: 嵌入式测绘导航软件需要进行多种类型的测试, 其故障类型较为多样, 如接口协议故障、 软件界面故障、 数据处理故障、 地图数据故障等; ② 故障难以检测: 嵌入式测绘导航软件的很多故障在正常运行情况下发生概率很低, 采用常规测试方法很难发现, 如北斗用户终端软件的卫星完好性检测和自毁等相关功能故障; ③ 故障后果严重: 嵌入式测绘导航软件应用广泛, 其很多故障的发生会导致严重的后果, 如定位算法故障或对异常信号的处理故障将会引起定位错误或定位精度下降, 从而导致飞机、 汽车等自动驾驶功能失效或发生严重事故; 又如路径规划功能故障或导航图数据故障可能导致“绕路”、 “费时”和“无路可走”等行车事故.

嵌入式测绘导航软件的这些特点对软件测试工作提出了挑战, 为了提高测试的有效性和测试效率, 我们引入基于故障注入的软件测试技术. 故障注入是一种仿真技术, 它通过人为的手段直接把故障引入到被验证目标系统之中, 从而缩短故障的潜伏期, 加速系统的失效过程[1]. 通过这种方法, 模拟目标系统在实际运行环境中可能发生的各种故障, 让目标系统带着故障运行, 然后通过对目标系统的运行情况、 系统行为等进行观察、 记录和分析, 验证目标系统故障检测、 故障隔离、 系统恢复和重组等故障处理机制的有效性, 为完善和改进对目标系统的设计提供重要的反馈信息[2].

基于故障注入的嵌入式测绘导航软件测试是在嵌入式测绘导航软件仿真测试基础上, 结合故障注入过程的特点, 将故障分析、 故障建模和故障注入技术有效应用于仿真测试过程当中, 有效扩大被测系统的测试空间, 提高嵌入式测绘导航软件测试的有效性和充分性.

1 测试框架

针对嵌入测绘导航软件测试实际, 提出如图 1 所示的故障注入测试框架.

图 1 基于故障注入的嵌入式测绘导航软件测试框架Fig.1 Embedded surveying, mapping and navigation software testing framework based on fault injection

1) 软件测试需求分析: 从软件需求规格说明出发, 根据软件的可靠性、 安全性、 容错性等方面要求进行软件测试需求分析, 梳理出需要采用故障注入测试方法的功能、 性能、 接口等测试项.

2) 故障模型建立: 在软件故障注入测试需求分析的基础上, 参考通用故障模型, 从便于测试开展和确保测试效果的角度出发建立适用于嵌入式测绘导航软件测试的故障模型.

3) 故障数据生成: 根据嵌入式测绘导航软件测试故障模型, 设计测试用例, 生成故障数据, 包括输入故障数据、 故障注入位置和条件、 预期输出等.

4) 故障注入: 依据测试用例, 向待测目标系统注入故障.

5) 目标系统: 对注入的具体故障作出反应, 并给出相应的反馈, 目标系统除了被测软硬件环境外, 还应包括与之相连的外围仿真环境、 测试工具和测量设备等.

6) 反馈数据收集: 收集目标系统的反馈输出数据.

7) 测试结果分析: 将收集到的目标系统反馈数据和测试用例的预期输出进行比较分析, 形成测试结果.

8) 测试管理: 在测试管理工具的支持下, 对故障注入测试的全过程进行管理.

2 故障模型

故障模型指在故障注入过程中根据不同的测试对象及其所面临的需要处理的故障类型, 所采用的各种不同的故障形式[3]. 故障注入测试结果的正确性和精确性直接取决于故障模型的准确程度, 故障模型是故障注入是否可以进行的关键. 故障模型是在一定层次上对目标系统真实故障的抽象. 抽象级别不同, 系统的故障模型也不同.

按照引起故障的方式将故障模型分为基于硬件的故障模型和基于软件的故障模型[4].

1) 基于硬件的故障模型: 由硬件引起的故障模型, 如寄存器故障、 内存故障、 电压不稳、 意外断电、 时钟偏移、 电磁干扰等;

2) 基于软件的故障模型: 由软件引起的故障模型, 如协议错误、 操作错误、 输入数据错误、 指针错误、 内存溢出等.

按照故障测试的类别将故障模型分为白盒测试故障模型和黑盒测试故障模型.

3) 白盒测试故障模型: 需要通过改变软件源代码来注入故障, 如通过改变赋值语句和逻辑结构来注入故障, 引起这类故障的软件缺陷可采用正交分类方法[5];

4) 黑盒测试故障模型: 不需要改变软件源代码, 而只需改变软件输入来进行故障注入, 如数据格式错误、 数据类型错误、 数据输入顺序错误、 数据超出范围等.

考虑嵌入式测绘导航软件特点和测试需要, 这里主要研究基于软件的黑盒测试故障模型. 故障模型一般用故障的公共属性来表征. 目前, 采用较多的故障模型是使用故障的4个属性来描述目标系统, 即故障位置、 故障类型、 故障持续时间和故障注入时刻[6]. 其中, 故障持续时间可分为永久性故障、 瞬态故障和间歇性故障, 在嵌入式测绘导航软件测试中我们并不关心. 从测试用例完整性和便于测试开展的角度出发, 建立嵌入式测绘导航软件故障模型, 包括故障类型、 故障名称、 故障输入、 可能导致的软件故障和软件预期反应等5个属性, 表 1 列出了部分常见嵌入式测绘导航软件故障, 主要包括导航电文类[7]、 接口协议类[8]、 处理算法类、 软件界面类、 系统安全类等几类故障.

表 1 部分常见嵌入式测绘导航软件故障

续表1:

故障类型故障名称故障输入可能导致的软件故障软件预期反应故障说明接口协议类校验错误修改正常语句的校验字段为其他有效值(0~9,A~F)未能识别校验错误,导致软件作出错误反应或死机等其他故障识别出校验错误,丢弃该指令测试软件对校验错误的检测能力语句格式错误语句不以$或!开始,不以结束未能识别该语句格式错误,导致软件作出错误反应或死机等其他故障识别出该语句格式错误,丢弃该指令测试软件对错误语句格式的检测能力无效字符语句的数据字段为无效字符,如经度方向取值为E/W,指令中设置为N未能识别该无效字符,导致软件作出错误反应或死机等其他故障识别出该无效字符,丢弃该指令或该数据字段测试软件对无效字符的检测能力无效发送器标识符设置发送器标识符为BD、GP、GN、GL、GA、CC以外的其他字符未能识别该无效发送器标识符,导致软件作出错误反应或死机等其他故障识别出该无效发送器标识符,丢弃该指令测试软件对无效发送器标识符的检测能力无效语句标识符设置语句标识符为规定语句标识符以外的其他标识符,如ABC未能识别该无效语句标识符,导致软件作出错误反应或死机等其他故障识别出该无效语句标识符,丢弃该指令测试软件对无效语句标识符的检测能力数值超出范围语句的数据字段超出取值范围,如MMS语句的定位模式字段范围为0~9,设置为10未能识别该数据字段,导致软件作出错误反应或死机等其他故障识别出该数据字段超出范围,丢弃该指令或该字段测试软件对数值超出范围的检测能力时间错误设置语句中的日期或时间字段为错误日期或时间,如小时设置为25小时未能识别该时间错误,导致软件时间错误或死机等其他故障识别出时间错误,丢弃该指令或该字段测试软件对错误时间的检测能力处理算法类接收机自主完好性监测故障5颗可见卫星正常定位情况下,设置其中一颗卫星伪距异常未能识别伪距异常卫星,导致定位精度下降识别出伪距异常卫星,剔除掉该颗卫星后正常定位测试RAIM功能是否正常可见卫星不足故障4颗可见卫星正常定位情况下,关闭其中一颗卫星一段时间后恢复正常可见卫星不足4颗时间段内,无法正常定位采用三星定位算法定位或根据正常定位数据和状态进行位置推算测试可见卫星不足4颗时定位的连续性卫星仰角过低故障正常定位情况下,增加一颗卫星仰角小于5度未能识别低仰角卫星,导致定位精度下降识别出低仰角卫星,剔除掉该颗卫星后正常定位测试软件对低仰角卫星的处理多径信号故障正常定位情况下,增加信号多径软件无抗多径算法,导致定位精度下降采用抗多径算法,消除或减轻多径影响,定位精度下降不明显测试软件对信号多径的处理能力欺骗干扰故障正常定位情况下,增加欺骗干扰信号软件无法识别欺骗干扰信号,定位到错误位置采用抗欺骗干扰算法,正确定位测试软件对欺骗干扰信号的处理能力大数据量输入故障采用大数据量进行操作,如对于面积量算功能,点击获取100个点进行量算软件严重变慢或发生死机、崩溃等其他故障软件正常运行测试软件对大数据量等极端情况的处理能力软件界面类非法字符在软件界面输入非法数据,如规定有效字符为数字,实际输入为字母或特殊符号软件发生死机、崩溃等故障提示非法字符,重新输入测试软件界面对输入数据的容错处理能力快速操作在软件界面中快速点击进行操作,如在地图显示界面中快速进行放大、缩小和漫游等操作软件对部分操作无反应或发生死机、崩溃等故障软件正常运行测试软件在快速操作情况下是否正常运行不按流程操作在软件界面中,不按照规定流程进行操作软件发生死机、崩溃等故障软件正常运行,给出相应提示测试软件在不按正常流程操作时的健壮性系统安全类突然断电运行正常运行情况下突然断电,然后重新加电软件不能正常运行,数据损坏或丢失软件正常运行,历史数据不丢失测试软件在突然断电情况下对数据的保护能力错误用户和密码采用错误用户名和密码进行软件登陆或进行密码验证非权限用户对软件进行操作,造成安全隐患软件无法进入或部分功能无法使用测试软件对用户的安全验证能力自毁进行软件自毁操作,并输入相应确认码软件无法自毁或数据未能清除软件进入自毁程序,并给出相应提示,自毁后清除相关数据测试软件对自毁功能的处理情况

3 故障注入方法

针对上面总结的几类常见嵌入式测绘导航软件故障, 结合具体的软件测试方法, 其故障注入方法包括场景注入法、 接口注入法、 界面注入法和综合注入法.

1) 场景注入法

场景注入法即通过测试场景注入故障, 其关键在于设计故障场景. 对于北斗用户终端软件测试, 可通过北斗信号模拟源进行测试场景设计, 如导航电文类故障和处理算法类故障中的接收机自主完好性监测故障、 可见卫星不足故障等; 对于嵌入式GIS软件测试, 可通过配置或修改地图数据来生成故障测试场景, 如图号错误故障、 数据完整性故障等.

2) 接口注入法

接口注入法即通过软件接口注入故障, 其关键在于设计故障接口数据. 故障接口数据主要按照接口协议的格式要求进行设计, 如校验错误、 数值超出范围等接口协议类故障.

3) 界面注入法

界面注入法即通过操作软件界面注入故障, 其关键在于寻找可导致软件故障的界面操作方法和步骤, 如异常输入、 快速操作、 乱序操作等.

4) 综合注入法

综合注入法是综合运用测试场景、 软件接口、 软件界面操作等方法的故障注入方法. 如在场景中设计了某个故障, 但是在测试过程中需要通过软件界面操作来触发这个故障.

嵌入式测绘导航软件的故障注入需要根据不同的故障类型选择相应的故障注入方法, 使用时要灵活运用以达到最好的效果.

5) 应用验证

基于故障注入的嵌入式测绘导航软件测试技术在某型北斗用户终端软件测试和某型嵌入式GIS软件测试中进行了应用, 按照本文提出的测试框架进行了测试环境构建、 测试需求分析、 故障模型建立、 测试用例设计、 故障数据生成、 故障注入、 故障数据收集和测试结果分析等工作, 相比之前的同类软件测试, 增强了软件故障测试的针对性, 有效提高了故障检测效率, 提升了测试的有效性和充分性, 具体如表 2 所示.

表 2 基于故障注入的嵌入式测绘导航软件测试技术应用结果

4 结 论

嵌入式测绘导航软件具有故障类型多样、 故障难以检测、 故障后果严重等特点, 这对其软件测试工作提出了极大挑战. 本文针对嵌入式测绘导航软件测试, 提出一种基于故障注入的测试技术, 结合具体的测试工作构建了测试框架, 建立了实用的测试模型, 列出了部分常见的嵌入式测绘导航软件故障, 提出了几种故障注入方法, 并在实际的软件测试工作中进行了应用验证. 测试结果表明, 该技术可有效提高嵌入式测绘导航软件故障检测效率, 提升测试的有效性和充分性.

[1] 王胜文. 基于软件的故障注入方法研究[D]. 哈尔滨: 哈尔滨工业大学, 2005.

[2] 王金波, 张涛. 基于故障注入的嵌入式软件安全性测试框架及实现[J]. 计算机应用研究, 2012, 29(8): 2991-2995.

Wang Jinbo, Zhang Tao. Framework and realization of embedded software safety-testing based on fault injection[J]. Application Research of Computers, 2012, 29(8): 2991-2995. (in Chinese)

[3] 李娟. 基于故障注入的软件安全测试技术研究[D]. 合肥: 中国科学技术大学, 2009.

[4] 叶焰锋. 基于故障模型的软件故障注入方法研究[D]. 武汉: 华中师范大学, 2008.

[5] 贺仁亚, 唐龙利. 用于故障注入的软件代码缺陷模式研究[C]. 第六届全国软件测试学术会议论文集, 2015: 28-37.

[6] 徐晓露. 基于故障注入的嵌入式系统测试研究[D]. 杭州: 浙江大学, 2008.

[7] 中国卫星导航系统管理办公室. 北斗卫星导航系统空间信号接口控制文件公开服务信号(2.1版)[DB/OL]. http:∥nteract.beidou.gov.cn/interact/download.service?attachment=2016/11/07/13411.pdf.

[8] BD 410004-2015. 北斗/全球卫星导航系统(GNSS)接收机导航定位数据输出格式[S].

猜你喜欢
故障注入测试软件软件测试
模拟训练装备故障注入系统研究
网络自适应测试软件运行方法设计
基于OBE的软件测试课程教学改革探索
航天软件测试模型构建与应用
SM4算法前四轮约减轮故障注入分析
面向FPGA的故障注入测试技术研究*
EXCEL和VBA实现软件测试记录管理
自动化检测EPU10A板卡系统设计与实现
软件测试工程化模型及应用研究
列车MVB总线故障注入研究