论文部分内容阅读
摘要:飞行控制软件(简称飞控软件)验证与测试是保障和提高飞控系统可靠性的重要手段。软件缺陷定位是软件验证与测试过程中的重要环节,其准确性和及时性直接影响了飞控软件的可靠性。本文对面向缺陷定位的飞控软件的特性进行了分析,并针对其嵌入式特性,搭建了飞控软件仿真测试平台。在此基础上,以飞机着陆自动控制软件为实验对象,针对其特性,提出了基于Sober算法的缺陷定位方法,最后进行了仿真验证,证明了缺陷定位方法的可行性。
关键词:飞行控制软件;软件测试;软件缺陷定位;Sober算法;嵌入式平台
中图分类号:TP311
文献标识码:A
文章编号:1673-5048(2015)01-0052-05
0 引言
飞控软件是飞行控制系统的关键部分,其性能优劣直接影响飞机的操纵品质和飞行性能。如果飞控软件出现问题,轻则导致飞机的功能和性能指标得不到满足,影响装备的有效性和战斗力;重则造成飞行任务失败,带来灾难性后果。软件验证和测试则是保障和提高软件可靠性的有效手段。在软件开发过程中,软件缺陷的产生和存在是不可避免的。软件缺陷定位,即发现软件中缺陷存在的位置,是飞控软件测试过程中的关键环节,其准确性和及时性直接影响着飞控软件的可靠性。
目前,国内外已经有大量文献对软件缺陷定位技术进行了研究,提出了许多种软件缺陷定位方法。现有的缺陷定位方法可以分为四种:基于程序执行切片的方法、基于程序谱的方法、基于程序模型的方法和基于机器学习的方法。其中基于程序谱的方法是目前比较先进的缺陷定位方法,基于此方法,存在多种缺陷定位算法来计算程序单元的可疑度,即包含缺陷的可能性,其中典型的算法有Tarantula,Ochiai,Sober,Liblit,Jaccard。飞控软件是典型的机载软件,与一般的软件相比,有着实时性、嵌入式特性、复杂性和时序性等特点,飞控软件的测试存在着实时性要求高、测试用例集规模庞大且依赖性强、失效触发及判定困难等问题,因此需要对其缺陷定位展开专门的深入研究。
本文对基于Sober算法的飞控软件缺陷定位方法进行研究和验证。在对飞控软件特性研究的基础上,探索适应飞控软件特点和适合飞控软件高可靠性要求的缺陷定位技术。根据需要搭建了一个VxWorks操作系统下的Host-Target模式仿真测试平台,在此平台上进行实验,验证缺陷定位技术的可行性。
1 面向缺陷定位的飞控软件特性分析
飞控软件相对于其他商用软件具有其特殊性,这些特殊性体现在功能、源代码以及缺陷种类方面,这就导致飞控软件的缺陷定位技术相对于其他商用软件而言也具有其特殊性,这种特殊性表现在其缺陷具有极低的触发概率,测试用例的生成与选择具有相当难度等方面。为了提出合理的缺陷定位方法,准确地对飞控软件中的缺陷进行定位,首先从以下三个方面对面向缺陷定位的飞行控制软件特性进行简要分析:
(1)飞控软件的功能特点:包括模态转换较多,周期性多速率组运行,功能的实现需满足较高的实时性和安全性要求等。
(2)飞控软件的代码特点:包括软件鲁棒性强,比如软件冗余设计、关键参数重复赋值、穷尽条件考虑等,代码执行时间受限制,条件判断多,数学运算简单等。
(3)飞控软件的缺陷分类:可简单归类为由人的逻辑错误导致的缺陷、竞争类缺陷、数据处理类缺陷、输入输出类缺陷、内存缺陷、初始化和计算类缺陷等。
2 飞控软件仿真测试平台
飞控软件是典型的嵌入式实时软件。在绝大多数场合,采用嵌入式系统的真实运行环境对嵌入式软件进行测试,无论从安全性方面还是经济性方面考虑都是不可行的。为了使仿真测试更加接近真实的飞控软件运行环境,并且可实现,选择搭建Host-Target模式的软件仿真测试平台进行飞控软件的测试。
2.1测试平台的结构
软件仿真测试系统一般由三部分组成:运行平台、信号仿真平台和主控计算机平台。在飞行控制软件的仿真测试中,主要采用的是Host-Tar-get的测试模式。Host-Target是指编译链接和测试分析运行在宿主机(Host)上,被测程序运行在目标机(Target)上,宿主机与目标机之间的通信通过串口线或者网络连接实现。仿真测试的构成如图1所示。
测试平台由主机和目标机两部分组成,其中主机包括主控平台和信号仿真平台,目标机是被测程序的运行平台。在飞控软件的仿真测试中,主控平台用于生成测试用例、测试运行管理、数据分配以及测试后的评估工作;信号仿真平台则是通过编写的全量方程的程序来实现对飞行状态的仿真,模拟飞行控制系统的外部运行环境,从而向运行平台提供激励信号,同时接收来自运行平台的反馈信号。运行平台则用于运行飞控程序,并将控制指令反馈给信号仿真平台。
2.2硬件设备
使用一台普通PC机和一台嵌入式单片机来搭建飞控软件仿真测试平台,结构如图2所示。
测试平台的硬件介绍如下:
(1)宿主机:普通的安装有Windows XP系统的PC机。本平台采用的是台湾研华公司的工业控制计算机。
(2)目标机:搭载PC104处理器的嵌入式单片机。本平台采用的是盛博协同科技公司的LX-3360型嵌入式单片机。另外配置一块CF卡作为PC104处理器的存储设备。
(3)网络设备:普通的交叉网线,串口通信选用RS232串口线。
(4)显示器:两台普通PC机显示屏。
(5)网卡:选用Pentium 4的CPU和RTL8139网卡。
2.3软件环境及其配置
2.3.1软件环境
(1)宿主机软件环境:在windows XP操作系统下安装嵌入式开发环境Tornado 2.2和MATLAB7.0.1或其以下版本。Tornado是用于实时嵌入式应用的完整的开发和执行环境,包含三个高度集成的组件:Tornado系列工具,一套强大的交互式开发工具;VxWorks系统,一种嵌入式实时操作系统;主机与目标机之间的通讯软件包。MATLAB则用于进行全量方程的仿真计算。 (2)目标机软件环境:运行嵌入式操作系统VxWorks5.5。VxWorks是一个运行在目标机上的具有可伸缩、可裁减和高可靠性,同时适用于所有流行目标CPU平台的实时操作系统。
2.3.2软件环境配置
仿真测试平台的软件环境配置的主要过程可以简单地分为以下几个步骤:
(1)配置网卡驱动文件以及MakeFile文件;
(2)建立嵌入式操作系统启动盘(BootROM)以及创建待下载映像(BootlMAGE);
(3)配置宿主机的FTP Server环境和目标机的Target Server环境:
(4)启动目标机。
2.4测试平台运行流程
飞控软件仿真测试的具体运行流程如下:首先在宿主机上用Tornado对待测的飞控程序进行插桩处理,然后编译,将生成的.out文件通过宿主机和目标机之间的网络连接下载到目标机的VxWorks操作系统下。再利用宿主机上的主控平台向目标机发送测试用例并运行目标机上的飞控程序,飞控程序加载测试用例后进行控制律计算,将产生的控制指令通过网络连接传回到主机的信号仿真平台,进行全量方程的计算,得到当前时刻的飞行状态再发送给目标机的飞控程序。同时把飞控程序的语句覆盖率信息或者谓词判定信息传给主控平台,进行覆盖率的计算等程序分析。照此循环下去直到程序运行结束。
3 飞控软件实例测试
3.1实验内容
本次实验选用了飞机着陆自动控制软件作为被测对象。实验内容则是在搭建好的基于VxWorks嵌入式操作系统的软件仿真测试平台上完成被测软件缺陷定位的测试。测试流程如图3所示。
3.1.1分析飞控程序
首先对飞机着陆自动控制软件的程序结构、功能和代码特点进行分析,为之后的缺陷设计、失效标准的设定和测试用例的生成等工作做准备。该飞行控制软件系统由控制律计算、电传系统、气动力计算和全量方程四部分组成。全量方程的计算运行在宿主机的Windows操作系统中,控制律的计算运行在目标机的VxWorks操作系统中。计算控制律的程序是飞控程序的核心,也是进行缺陷定位测试的对象。控制律计算程序分为盘旋、下滑、拉平、着陆四个阶段。本次实验选择了盘旋阶段进行测试。盘旋阶段的功能是使飞机在300~600m的高度盘旋飞行,直至对准下滑线。
3.1.2选择插桩策略和缺陷定位算法
通过对程序代码进行分析,盘旋阶段的代码比较简单,大部分代码是控制律的计算公式,此外还有15个限制舵偏幅度的判断分支。在每次仿真飞行中,大部分控制律计算公式都会顺序执行,所以使用基于可执行语句的插桩技术意义不大,无法使用较常用的利用可执行语句执行频谱信息的Tarantula缺陷定位算法。所以选用基于谓词的插桩,缺陷定位算法则是利用谓词次数频谱信息的Sober算法。这里的谓词是指程序中具有逻辑判断功能的语句,诸如if,for,while,return等这样的分支语句、循环语句以及函数返回语句。
飞控程序在盘旋阶段的运行,是周期性地计算控制律的过程,且在一个周期内,每个谓词语句最多执行一次。因此,在一个测试用例中,记控制律执行次数为n,则φ(P)=nt(P)/n。表1中的φs(P)和φf(P)的值越接近于1,则说明在此次运行中,执行该谓词P的次数越多;等于1,则表示每一次控制律计算都执行了该谓词语句;越接近于0,则说明在此次运行中,执行该谓词P的次数越少;等于0,则表示在这次程序运行中始终未执行该谓词语句。
利用对每个谓词的φs(P)和φf(P)求均值,得到每个谓词的fs(P)和ff(P)的值,再令
S(P)=|[fs(P)]2-[ff(P)]2| (3)得到每个谓词的可疑度。
版本一待测程序的实验结果为可疑度列表一,如表2所示;版本二待测程序的实验结果为可疑度列表二,如表3所示。
在表2和表3中,可疑度S(P)代表fs(P)与ff(P)的差异,S(P)越接近于1,则说明谓词P包含缺陷的可能性越大;越接近于0,则可能性越小。
由实验结果可知,带有缺陷的第8个和第10个谓词的可疑度分别为0.9578和0.9245,分别排在了可疑度列表的第一位。其余谓词的可疑度则由大到小,逐渐接近于0。其中在两个列表中,第3个和第9个谓词的可疑度是一样的,原因是这两个分支在程序中存在同时执行或不执行的关系,因此得到的实验数据也是一样的。
那么根据实验结果,测试人员首先要检查的可能包含缺陷的分支语句,其实际也包含缺陷。因此在本次实验中,测试结果是比较理想的,达到了定位缺陷的目的。
4 结论
本文首先对面向缺陷定位的飞控软件特性进行了分析,然后介绍了飞控软件仿真测试平台的搭建,包括它的结构、硬件设备、软件环境介绍及配置和测试流程。通过对飞机着陆自动控制软件的分析,确定了基于Sober算法的缺陷定位技术,并在测试平台上对两个含缺陷版本的飞控程序进行了软件缺陷定位测试,验证了其可行性。本文的研究仍存在下面一些不足,采用的飞控软件结构比较简单,不能体现所有飞控软件的特性;本文使用Sober算法进行可疑度的计算,没有进行其他算法的尝试;实验的前提是假设程序中只有一个缺陷。因此,面向飞控软件特性的缺陷定位技术有待更进一步的研究。
关键词:飞行控制软件;软件测试;软件缺陷定位;Sober算法;嵌入式平台
中图分类号:TP311
文献标识码:A
文章编号:1673-5048(2015)01-0052-05
0 引言
飞控软件是飞行控制系统的关键部分,其性能优劣直接影响飞机的操纵品质和飞行性能。如果飞控软件出现问题,轻则导致飞机的功能和性能指标得不到满足,影响装备的有效性和战斗力;重则造成飞行任务失败,带来灾难性后果。软件验证和测试则是保障和提高软件可靠性的有效手段。在软件开发过程中,软件缺陷的产生和存在是不可避免的。软件缺陷定位,即发现软件中缺陷存在的位置,是飞控软件测试过程中的关键环节,其准确性和及时性直接影响着飞控软件的可靠性。
目前,国内外已经有大量文献对软件缺陷定位技术进行了研究,提出了许多种软件缺陷定位方法。现有的缺陷定位方法可以分为四种:基于程序执行切片的方法、基于程序谱的方法、基于程序模型的方法和基于机器学习的方法。其中基于程序谱的方法是目前比较先进的缺陷定位方法,基于此方法,存在多种缺陷定位算法来计算程序单元的可疑度,即包含缺陷的可能性,其中典型的算法有Tarantula,Ochiai,Sober,Liblit,Jaccard。飞控软件是典型的机载软件,与一般的软件相比,有着实时性、嵌入式特性、复杂性和时序性等特点,飞控软件的测试存在着实时性要求高、测试用例集规模庞大且依赖性强、失效触发及判定困难等问题,因此需要对其缺陷定位展开专门的深入研究。
本文对基于Sober算法的飞控软件缺陷定位方法进行研究和验证。在对飞控软件特性研究的基础上,探索适应飞控软件特点和适合飞控软件高可靠性要求的缺陷定位技术。根据需要搭建了一个VxWorks操作系统下的Host-Target模式仿真测试平台,在此平台上进行实验,验证缺陷定位技术的可行性。
1 面向缺陷定位的飞控软件特性分析
飞控软件相对于其他商用软件具有其特殊性,这些特殊性体现在功能、源代码以及缺陷种类方面,这就导致飞控软件的缺陷定位技术相对于其他商用软件而言也具有其特殊性,这种特殊性表现在其缺陷具有极低的触发概率,测试用例的生成与选择具有相当难度等方面。为了提出合理的缺陷定位方法,准确地对飞控软件中的缺陷进行定位,首先从以下三个方面对面向缺陷定位的飞行控制软件特性进行简要分析:
(1)飞控软件的功能特点:包括模态转换较多,周期性多速率组运行,功能的实现需满足较高的实时性和安全性要求等。
(2)飞控软件的代码特点:包括软件鲁棒性强,比如软件冗余设计、关键参数重复赋值、穷尽条件考虑等,代码执行时间受限制,条件判断多,数学运算简单等。
(3)飞控软件的缺陷分类:可简单归类为由人的逻辑错误导致的缺陷、竞争类缺陷、数据处理类缺陷、输入输出类缺陷、内存缺陷、初始化和计算类缺陷等。
2 飞控软件仿真测试平台
飞控软件是典型的嵌入式实时软件。在绝大多数场合,采用嵌入式系统的真实运行环境对嵌入式软件进行测试,无论从安全性方面还是经济性方面考虑都是不可行的。为了使仿真测试更加接近真实的飞控软件运行环境,并且可实现,选择搭建Host-Target模式的软件仿真测试平台进行飞控软件的测试。
2.1测试平台的结构
软件仿真测试系统一般由三部分组成:运行平台、信号仿真平台和主控计算机平台。在飞行控制软件的仿真测试中,主要采用的是Host-Tar-get的测试模式。Host-Target是指编译链接和测试分析运行在宿主机(Host)上,被测程序运行在目标机(Target)上,宿主机与目标机之间的通信通过串口线或者网络连接实现。仿真测试的构成如图1所示。
测试平台由主机和目标机两部分组成,其中主机包括主控平台和信号仿真平台,目标机是被测程序的运行平台。在飞控软件的仿真测试中,主控平台用于生成测试用例、测试运行管理、数据分配以及测试后的评估工作;信号仿真平台则是通过编写的全量方程的程序来实现对飞行状态的仿真,模拟飞行控制系统的外部运行环境,从而向运行平台提供激励信号,同时接收来自运行平台的反馈信号。运行平台则用于运行飞控程序,并将控制指令反馈给信号仿真平台。
2.2硬件设备
使用一台普通PC机和一台嵌入式单片机来搭建飞控软件仿真测试平台,结构如图2所示。
测试平台的硬件介绍如下:
(1)宿主机:普通的安装有Windows XP系统的PC机。本平台采用的是台湾研华公司的工业控制计算机。
(2)目标机:搭载PC104处理器的嵌入式单片机。本平台采用的是盛博协同科技公司的LX-3360型嵌入式单片机。另外配置一块CF卡作为PC104处理器的存储设备。
(3)网络设备:普通的交叉网线,串口通信选用RS232串口线。
(4)显示器:两台普通PC机显示屏。
(5)网卡:选用Pentium 4的CPU和RTL8139网卡。
2.3软件环境及其配置
2.3.1软件环境
(1)宿主机软件环境:在windows XP操作系统下安装嵌入式开发环境Tornado 2.2和MATLAB7.0.1或其以下版本。Tornado是用于实时嵌入式应用的完整的开发和执行环境,包含三个高度集成的组件:Tornado系列工具,一套强大的交互式开发工具;VxWorks系统,一种嵌入式实时操作系统;主机与目标机之间的通讯软件包。MATLAB则用于进行全量方程的仿真计算。 (2)目标机软件环境:运行嵌入式操作系统VxWorks5.5。VxWorks是一个运行在目标机上的具有可伸缩、可裁减和高可靠性,同时适用于所有流行目标CPU平台的实时操作系统。
2.3.2软件环境配置
仿真测试平台的软件环境配置的主要过程可以简单地分为以下几个步骤:
(1)配置网卡驱动文件以及MakeFile文件;
(2)建立嵌入式操作系统启动盘(BootROM)以及创建待下载映像(BootlMAGE);
(3)配置宿主机的FTP Server环境和目标机的Target Server环境:
(4)启动目标机。
2.4测试平台运行流程
飞控软件仿真测试的具体运行流程如下:首先在宿主机上用Tornado对待测的飞控程序进行插桩处理,然后编译,将生成的.out文件通过宿主机和目标机之间的网络连接下载到目标机的VxWorks操作系统下。再利用宿主机上的主控平台向目标机发送测试用例并运行目标机上的飞控程序,飞控程序加载测试用例后进行控制律计算,将产生的控制指令通过网络连接传回到主机的信号仿真平台,进行全量方程的计算,得到当前时刻的飞行状态再发送给目标机的飞控程序。同时把飞控程序的语句覆盖率信息或者谓词判定信息传给主控平台,进行覆盖率的计算等程序分析。照此循环下去直到程序运行结束。
3 飞控软件实例测试
3.1实验内容
本次实验选用了飞机着陆自动控制软件作为被测对象。实验内容则是在搭建好的基于VxWorks嵌入式操作系统的软件仿真测试平台上完成被测软件缺陷定位的测试。测试流程如图3所示。
3.1.1分析飞控程序
首先对飞机着陆自动控制软件的程序结构、功能和代码特点进行分析,为之后的缺陷设计、失效标准的设定和测试用例的生成等工作做准备。该飞行控制软件系统由控制律计算、电传系统、气动力计算和全量方程四部分组成。全量方程的计算运行在宿主机的Windows操作系统中,控制律的计算运行在目标机的VxWorks操作系统中。计算控制律的程序是飞控程序的核心,也是进行缺陷定位测试的对象。控制律计算程序分为盘旋、下滑、拉平、着陆四个阶段。本次实验选择了盘旋阶段进行测试。盘旋阶段的功能是使飞机在300~600m的高度盘旋飞行,直至对准下滑线。
3.1.2选择插桩策略和缺陷定位算法
通过对程序代码进行分析,盘旋阶段的代码比较简单,大部分代码是控制律的计算公式,此外还有15个限制舵偏幅度的判断分支。在每次仿真飞行中,大部分控制律计算公式都会顺序执行,所以使用基于可执行语句的插桩技术意义不大,无法使用较常用的利用可执行语句执行频谱信息的Tarantula缺陷定位算法。所以选用基于谓词的插桩,缺陷定位算法则是利用谓词次数频谱信息的Sober算法。这里的谓词是指程序中具有逻辑判断功能的语句,诸如if,for,while,return等这样的分支语句、循环语句以及函数返回语句。
飞控程序在盘旋阶段的运行,是周期性地计算控制律的过程,且在一个周期内,每个谓词语句最多执行一次。因此,在一个测试用例中,记控制律执行次数为n,则φ(P)=nt(P)/n。表1中的φs(P)和φf(P)的值越接近于1,则说明在此次运行中,执行该谓词P的次数越多;等于1,则表示每一次控制律计算都执行了该谓词语句;越接近于0,则说明在此次运行中,执行该谓词P的次数越少;等于0,则表示在这次程序运行中始终未执行该谓词语句。
利用对每个谓词的φs(P)和φf(P)求均值,得到每个谓词的fs(P)和ff(P)的值,再令
S(P)=|[fs(P)]2-[ff(P)]2| (3)得到每个谓词的可疑度。
版本一待测程序的实验结果为可疑度列表一,如表2所示;版本二待测程序的实验结果为可疑度列表二,如表3所示。
在表2和表3中,可疑度S(P)代表fs(P)与ff(P)的差异,S(P)越接近于1,则说明谓词P包含缺陷的可能性越大;越接近于0,则可能性越小。
由实验结果可知,带有缺陷的第8个和第10个谓词的可疑度分别为0.9578和0.9245,分别排在了可疑度列表的第一位。其余谓词的可疑度则由大到小,逐渐接近于0。其中在两个列表中,第3个和第9个谓词的可疑度是一样的,原因是这两个分支在程序中存在同时执行或不执行的关系,因此得到的实验数据也是一样的。
那么根据实验结果,测试人员首先要检查的可能包含缺陷的分支语句,其实际也包含缺陷。因此在本次实验中,测试结果是比较理想的,达到了定位缺陷的目的。
4 结论
本文首先对面向缺陷定位的飞控软件特性进行了分析,然后介绍了飞控软件仿真测试平台的搭建,包括它的结构、硬件设备、软件环境介绍及配置和测试流程。通过对飞机着陆自动控制软件的分析,确定了基于Sober算法的缺陷定位技术,并在测试平台上对两个含缺陷版本的飞控程序进行了软件缺陷定位测试,验证了其可行性。本文的研究仍存在下面一些不足,采用的飞控软件结构比较简单,不能体现所有飞控软件的特性;本文使用Sober算法进行可疑度的计算,没有进行其他算法的尝试;实验的前提是假设程序中只有一个缺陷。因此,面向飞控软件特性的缺陷定位技术有待更进一步的研究。