刘 斌(北京航空航天大学工程系统工程系)
高小鹏(北京航空航天大学计算机科学与工程)
陆民燕 阮 镰(北京航空航天大学工程系统工程系)
摘 要:研究嵌入式软件可靠性仿真测试方法和环境.文中给出了仿真测试系统的体系结构,并结合该体系结构对嵌入式软件可靠性仿真测试的软硬件特性,软件可靠性仿真测试的方法、测试环境配置、关键技术及其可行的解决方案作了探讨.特别地,给出了一个生成测试用例的新方法.
关 键 词:软件可靠性;可靠性;软件工程;嵌入式软件;软件测试
中图分类号:TP311.52
文献标识码:A 文章编号:100125965(2000)0420490204
软件的可靠性直接影响整个系统的可靠性.对于嵌入式软件来说,它的错误造成的影响更为严重,由于其错误所造成的系统故障将引起重大经济损失和人员的伤亡.不论是“阿丽亚娜”火箭的爆炸还是国内某型飞机由于数字电传系统软件的错误而造成的坠机重大事故都可以说明这一点.
目前,对嵌入式软件进行可靠性测试一般采用以下两种方法.其一是将嵌入式软件的代码剥离出来,然后用数学平台进行测试;其二是直接将整个系统(包括硬件平台和嵌入式软件)与其交联的物理设备真实地建立连接,形成闭环进行测试.
无论是采用那种方法对嵌入式软件进行测试,都有其不可克服的缺点:采用第一种方法当系统复杂时,难度非常大,并且某些测试结果(特别是对实时软件)不能真实地反映软件的使用运行情况;用第二种方法虽然准确真实、相对简单,但是当系统复杂时,其测试费用让人们无法承担.因此,如何建立针对复杂系统进行可靠性测试的测试系统,它既不对被测系统的嵌入式软件及其硬件平台作修改(非侵入式,non2intrusively),同时又能仿真被测系统要求输入的物理信号,使
其在测试时完全脱离其交联系统,就成为对嵌入式软件可靠性测试的一个难点.本文试图给出一种较为通用的方法来构建这种测试系统.
1 嵌入式软件可靠性仿真测试
1.1 软件可靠性仿真测试
软件可靠性测试是指为验证或达到软件可靠性要求而对软件进行的测试.软件可靠性测试本质上讲是黑盒测试的一种,它试图应用概率统计的方法生成测试用例,使得测试用例能反映软件在真实环境下的运行特点,亦即对用户使用频率高的部分,使其错误能最先暴露出来.对非嵌入式软件进行可靠性测试通常采用J.D.Musa给出的基于运行剖面的测试方法[1].软件可靠性仿真测试是指通过使用软件和硬件的方法,模拟被测软件的交联系统和其物理的输入、输出信号,仿真一个被测软件运行的真实环境,并在该环境下进行的可靠性测试.
1.2 嵌入式软件可靠性仿真测试所谓嵌入式软件[GB/T11457295]是指嵌入式计算机系统用的软件.嵌入式计算机是指归结在一个其主要目的不是进行计算的较大系统中成为其不可分开部分的计算机系统.
嵌入式软件除了具备一般应用软件的特点之外,它还有以下特点:
1)首先,嵌入式软件通过直接或间接的方式和物理设备相关联.另外,大多数嵌入式软件需要人员来提供输入和观察输出结果.系统的输入通常是通过与嵌入式软件相连接的设备转换为物理
2)其次,绝大多数嵌入式软件属于实时系统.所谓实时系统是能及时响应外部发生的随机事件,并以足够快的速度完成对事件处理的计算机应用系统[2].实时系统并不总是意味系统运行要求特别快的时间.决定是否实时系统是根据它对数据的处理是否和数据的输入时间有关.嵌入式软件可靠性测试的目的同样是为验证或达到软件可靠性要求而对软件进行的测试.但是和一般的应用软件的可靠性测试相比,嵌入式软件可靠性测试有其自身的特点:
1)首先,它是在特定的硬件环境下才能运行的软件;
2)其次,软件的实时性.判断系统是否失效,除了它的输出的结果是否正确外,还应考虑其是否在规定的时间里输出了结果.对于输入的考虑也是同样,不仅要考虑到输入的变量的正确,而且还应考虑在规定的时间下进行输入.
为此,需要构建一个自动的(automatic)、实时的(real2time)、非侵入性的(non2intrusively)的闭环
测试系统来对嵌入式软件进行测试.自动测试能使得测试用例多次运行,具有可重复性(repeatability);而且能完成手工测试由于时间或运行环境而无法进行的测试,保证测试的完整性(leveraging);此外自动测试还能保证当软
件的功能扩展时使得测试用例也随之扩展,具有可扩展性(accumulation).非侵入性保证被测系统不会因为测试而改变,以确保测试的精度;实时性可确保测试和验证的真实性;闭环测试可仿真测试系统的输入信号、捕捉并观察被测系统的响应并对响应进行判断.构建的测试系统应能完成以下功能:具备系统配置管理能力,能根据不同的被测目标系统确定平台的连接方式、输入及输出等;能自动生成测试用例;具备准确的全局时钟和高速的命令和数据传输,能实现同步、定时等实时特性;能仿真输出各种物理设备信号和数据(如键盘、鼠标、RS232、IEEE488等);能实时收集数据,并实时显
示一些系统状态.简言之,构建的测试系统应能把被测嵌入式软件和测试系统物理地连接在一起,并进行逻辑的描述,通过自动生成测试用例,仿真产生输入,驱动被测目标系统运行,得到运行结果.
2 嵌入式软件可靠性仿真测试系统研究
2.1 仿真测试系统的体系结构
目前仿真测试系统的体系结构大体上分为两类,单机平台和分布式平台.在单机平台中,所有
的输入、输出以及数据都在同一台计算机上,因此不存在交互任务的通讯问题.这类系统的设计是相对简单的.但是,在很多实时仿真领域中,系统功能十分复杂,不仅有大量的命令和数据需要处理,而且还需根据测试数据产生被测试系统的输入信号、收集被测系统的运行结果、实时仿真显示各种交联系统的状态.由于单机平台性能的局限,要完成上述功能复杂的系统显然是不现实的;其次使用单机平台也严重影响系统的可扩展性.为了解决上述问题,就必须采用分布式的仿
真系统,即多台计算机协同处理任务.采用分布式结构,允许在一个现有的系统上增加新的计算机以最大限度地匹配特定的任务.例如如图1所示,通过使用多台计算机协同,采用一台计算机作为主控节点;一台高速计算机进行数据加工,作为被测软件系统的激励器;一台计算机对被测系统的输出进行监控,并且仿真被测系统的交联系统的状态.
2.2 测试系统的软件特性
测试系统的软件部分由任务管理、调度程序和一系列任务组成.一个完备的仿真测试系统的软件应有以下主
要功能:1)系统配置;2)生成测试方案;3)产生激励信号;4)实时数据收集;5)测试结果处理;6)实时显示.
任务管理、调度应完成以下工作:接收和处理命令;分发消息;任务调度和切换;系统监控.任务调度、管理程序将系统的工作内容分成不同的工作模式,来进行整个系统的调度,这些工作模式可能是:初始化、系统配置、运行、暂停、终止等.并且需建立它们之间的切换方式,这样系统的各个任务就可以在不同的模式参数下完成规定
的任务.任务调度、管理程序以事件驱动和时间驱动相结合的原则调度任务.
2.3 测试系统的硬件特性测试系统的硬件部分由互联网络和插接在每台计算机上的协处理板构成.
2.3.1 互联网为了满足实时系统对互联网络的要求,互联网络不仅应具有较高的带宽,而且必须保证网络延迟确定.
2.3.2 协处理板
协处理板的主要功能是执行需要实时响应的子任务,这包括提供全系统内的高精度全局时钟、接收/发送网络消息、通过主机总线直接控制激励板(或仿真板)与目标系统进行通讯、实现与宿主机之间的高速通讯等.协处理板由协处理器、主存储器、可编程定时器、网络控制器、网络消息缓冲区及主机接口组成.图2是协处理板体系结构的示意图.
2.4 关键技术
2.4.1 测试用例
如前所述,嵌入式软件大多是实时系统.软件根据人们事先给定的指令不断地、有序地加以执行,不断地、有序地给出控制信息.软件通常实时地采集被控制对象工作过程中发生的动态参数(如温度、姿态、频率等).因此对实时系统进行测试,生成测试用例,抽样产生的测试输入值必须满足动态的要求,反映系统工作的任务剖面(missionprofile).在这里提出一种方法来生成测试用例,其步骤如下:
第一,将嵌入式软件划分成为任务集T(Task1,Task2,⋯,Taskn),每一个任务就是对一个随机输入事件的一次完整的执行;
第二,根据软件的使用,构建任务子集TA(Task1,Task2,⋯,Taskm1)、TB(Task1,Task2,⋯,Taskm2),⋯,TN,TN<T.也即TN是任务集T的真子集,它们之间相交不一定为空;
第三,生成任务子集剖面;
第四,针对一个任务子集产生的测试用例构成一个测试集,测试集是由一系列测试脚本(testscript,测试脚本用C语言编写,用以建立被测目标系统的输入状态、收集格式化数据并对数据进行分析)构成,测试脚本的输出就是激励器产生激
励的根据.生成测试用例时,还应注意以下两点:1)测试用例应是时间的函数,以此来保证系统的实时要
求;2)用随机过程来刻画所有与时间有关的输入变量.
2.4.2 全局同步和实时通讯
由于采用分布式结构,虽然能够获得前述的好处,但也产生了一些新问题.这主要集中在分布式系统内的互联上.这些问题能否解决将直接影响到嵌入式软件仿真的实时响应.采用普通LAN及传统通讯协议会导致在实时分布式仿真平台的系统体系结构设计方面产生严重的限制,主要表现在:
1)由于通讯协议层次多,数据在相邻两层间传递需要反复拷贝;
2)复杂的通讯协议处理不仅增加了消息收发的开销,并且大量消耗了CPU的处理时间,降低了系统的实际性能;
3)由于上述原因,使得实际可用的网络带宽严重下降,导致数据传输速率降低;
4)缺乏高精度全局时钟.针对上述问题,在实时分布式仿真平台中必须设计专用硬件系统,完成所有与全局定时和实
时响应有关的任务.专用硬件系统主要由互联网络、将网络通讯与实时处理集成的协处理部件构成.为了提供全局时钟,确保实时通讯,满足实时响应,在该硬件系统设计方案中应考虑下述因素:
1)采用高效、高速、时延确定的互联网络及通讯协议;
2)采用具有优先级的消息处理机制;
3)增强协处理部件的通讯协议处理能力,使其承担大部分通讯协议处理工作;
4)提供高精度全局时钟,系统中的每个协处理部件都应具备时钟校准功能;
5)协处理部件应提供一定的板上处理能力,完成与实时有关的子任务;
6)协处理部件能够通过主机的系统总线直接驱动机内其他硬件设备,以尽可能减少操作系统和应用程序的干扰;
7)协处理部件采用DMA方式与主机通讯.在通讯时应尽可能的采用Burst总线传输方式,以降低机内通讯时延;
8)提供标准配置的激励信号发生模块和选件配置的激励信号发生模块,以满足不同系统对激励信号的要求.
3 结束语
在上述研究的基础上,已完成了对某型嵌入式软件测试平台的设计,整个系统的集成已完成,正在进行系统调试,估计在未来一年内即可投入运行.
参 考 文 献
[1]Lyu,Michael.Handbookofsoftwarereliabilityengineering[M].New
York:McGrawHillandIEEE,1996.110~143.
[2]袁由光.实时系统中的可靠性技术[M].北京:清华大学出版
社,1995.1~3.
StudyonReliabilitySimulationTestingSystemforEmbeddedSoftware
Abstract:Thereliabilitysimulationtestmethodandthetestenvironmentforembeddedsoftwareisresearched.
Thearchitectureofthereliabilitysimulationtestingsystemforembeddedsoftwareisgiven.Basedonthearchitecture,thepaperanalyzesthecharacteristicsofthereliabilitysimulationtestmethodforembeddedsoftware,anddiscussesthefollowingsubjectssuchassimulationtestmethod,testenvironmentconfiguration,keytechnique,and
feasiblesolutions.Especially,thepaperproposesanewideatocreatethetestcasesforembeddedsoftwarereliabilitytesting.
Keywords:applicationprogram;reliability;softwareengineering;embeddedsoftware;softwaretesting |