夏佳佳,邹毅军,周江伟,王天民,曹胜莉
(上海科梁信息工程有限公司,上海 200233)
嵌入式软件自动化测试系统研究
夏佳佳,邹毅军,周江伟,王天民,曹胜莉
(上海科梁信息工程有限公司,上海200233)
嵌入式软件系统的测试通常需要对其被控对象或者环境进行仿真,以进行硬件在环的闭环验证,在软件测试中很有必要将被控对象的实时仿真模型与被测系统连接起来进行闭环测试;在总结分析嵌入式测试领域新需求的基础上,提出了一种基于分布式仿真测试环境的嵌入式软件自动化测试系统;该系统具有较强的测试管理能力,以实时仿真机为核心,以及接口的模块化定制,实现了对系统动态特性的半实物仿真软硬件环境,很好地解决了嵌入式系统内存资源较少,与硬件紧密相关等问题。
嵌入式软件;闭环测试;自动化测试;实时仿真机
嵌入式系统是集软硬件于一体的可独立工作的器件,主要包括嵌入式微处理器、外围硬件设备、嵌入式操作系统以及应用软件系统。随着嵌入式软件系统的规模逐步扩大,软件系统测试环境在实际软件开发测试中的作用也日益显著,随着嵌入式软件在军用和民用领域的快速发展,嵌入式软件发挥了举足轻重的作用,对嵌入式软件的质量也提出了更高的要求。多年来,国内外学者在嵌入式软件测试环境的构建方法进行了活跃的研究,文献[1]针对综合模块化航电软件提出了一种仿真测试环境构建方法。文献[2]利用系统建模语言SysML来描述系统开发与测试环境。文献[3]则针对多核嵌入式软件提出了一种新的自动化测试环境。另外,利用分布式仿真测试环境(Distributed Simulation Testing Environment,DSTE)对嵌入式软件进行测试是目前国内外公认行之有效的手段[4],而大量测试数据在仿真模型之间的实时通讯、收集和分布节点之间的传输是分布式仿真测试环境的设计难点。针对这个问题,北京航空航天大学的研究者提出了一种应用代理模式和批处理双缓存区模式的方法,解决了分布式仿真测试环境实时数据处理的关键技术[5],其软件体系结构可以满足功能复杂、有大量的命令和数据处理需求的仿真系统测试。嵌入式软件测试工具之间的主要区别在于采用的总线和硬件接口、处理器、硬件拓扑结构和软件开发语言等方面。目前面向嵌入式软件测试的工具还比较少,主要体现在缺乏软件测试过程管理,面向软件测试的测试脚本测试建模能力较差[6-7]。
嵌入式软件的自动化测试,即利用测试脚本来自动控制嵌入式软件的运行,并且自动收集相关数据进行分析,最终生成相应的测试报告。结合国内外测试工具的优缺点,本文提出了一种基于QuiKLab软件和RT-LAB软件的嵌入式软件自动化测试系统,该系统使用专业建模工具对被测系统的内部特征与外部环境进行仿真建模,并把仿真模型装载到实时系统上。测试脚本通过各种I/O板卡与被测系统进行通讯,从而建立起一个硬件在环的实时闭环测试环境。QuiKLab是上海科梁信息工程有限公司经多年研发的一个产品,它是一个开放的平台,能够与RT-LAB实时仿真平台无缝集成。RT-LAB软件是加拿大OPAL-RT公司的集成化实时仿真环境的旗舰产品。RT-LAB集成了在线参数调节、信号获取、数据录入和信号示波器等一些最常用的便利功能,使模型开发和测试变得更容易;并可将运算负载分配到多个目标机上,可对大型复杂的硬件在环(HIL)和快速控制原型(RCP)应用的模型的实时仿真进行分布式并行计算。
1.1系统总体构成
本系统采用分布式架构,方便扩展和升级,即测试开发管理主机和目标仿真机架构,主机和目标机之间采用以太网通讯,目标机之间采用1394B通信。系统支持分布式仿真测试和实时并行运算,每个测试主机都可以连接一个或者多个仿真计算机单独的部署,用于系统中相对独立的子系统的仿真与测试,系统结构如图1所示。
图1 系统结构图
测试开发管理主机主要安装QuiKLab软件、RT-LAB主机模块、Matlab软件,其实现的功能包括测试开发管理、实时仿真模型开发、测试用例建立、测试任务建立、图形化监控、测试任务执行。实时仿真测试目标机安装REDHAT LINUX 实时操作系统、RT-LAB目标机模块以及I/O和总线板卡,其主要功能是完成系统实时模型解算及实时I/O端口配置和通讯。实时仿真目标机提供了丰富的I/O接口,测试脚本通过目标机的通讯接口模块与被测系统进行通讯。
Matlab/Simulink仿真建模软件主要实现对与被测系统的内特征与外部环境进行仿真建模,如建立被测系统外围的动力学模型、传感器和执行器模型。RT-LAB实时仿真平台集成了强实时仿真内核,具有高精度实时核心调度能力和I/O功能。在QuiKLab自动化测试管理软件中集成了常用的RT-LAB仿真管理软件功能,可以运行单独RT-LAB仿真管理软件执行程序,也可以在QuiKLab自动化测试管理软件中调用仿真管理界面实现模型编译、分配、运行控制等功能。QuiKLab自动化测试管理软件通过实时调用仿真管理软件功能,从而按照测试用例及测试流程的要求实时控制仿真模型、调整仿真模型参数和实施故障注入功能。本文提出的嵌入式软件自动化测试系统框架图如图2所示。
图2 嵌入式软件自动化测试系统框架图
1.2测试开发管理分系统
测试开发管理计算机运行在Windows操作系统下,是系统开发平台、监控平台以及人机操作界面,可以在测试开发管理计算机完成系统的测试用例设计、测试管理、分布式模型开发、调试、以及试验数据的监控记录等任务。测试开发管理计算机能将复杂的系统模型分割成若干子系统模型,通过主控制模块实现实时二进制代码的自动生成,并分配到多个仿真计算机(或仿真计算机上 的多核)上实时并行运算,使运算能够在规定的步长内完成,保证了系统的实时性要求。测试开发管理计算机制定测试任务,将测试任务生成测试脚本,并执行测试,实时获取来自目标机分系统仿真测试计算结果数据。测试开发管理计算机最后按照指定的模板生成测试报告文档。图3是主机上部署的软件的模块组成,其主要功能是支持测试工程管理、测试开发管理和测试运行控制;提供测试脚本驱动仿真模型测试的功能;支持各种测试类型用例设计,包括正常/异常功能测试、性能测试、边界测试、强度测试;能够进行在线监控,支持示波器、表盘、开关量、指示灯等方式显示;能够通过TCP/IP实现模型仿真的控制,包括模型下载,节点分配,仿真执行,停止等操作。
图3 测试开发管理计算机软件构成
1.3实时仿真计算机分系统
图5 系统工作流程图
实时仿真计算机是本系统的控制实现层与设备层,它是实现系统动态特性、I/O接口功能的仿真与控制实现平台。实时仿真计算机硬件运算能力强,实时性好,系统运行的实时精度最高可以达到10μs级别;提供100多种第三方I/O和总线板卡的驱动,如A429、1553B、串口、反射内存卡等;具备对网络、MIL-STD-1553B、CAN、A/D、D/A、DI/DO、RS232/RS422及非标准接口板的管理、驱动功能。实时仿真计算机上运行系统仿真与控制模型,这些模型在测试主机上用Simulink建立,并通过上位机软件编译并下载到仿真计算机上运行。实时仿真计算机分系统实现的功能包括:被控对象与环境动力学模型实时运行、外部执行器与传感器的模拟与激励、与被测目标系统的I/O与通讯接口。
在本系统中,实时仿真计算机分系统由2台通用实时测试目标机组成。它们之间通过1394B总线连接,所有I/O都通过仿真计算机中运行的仿真模型控制,这样实现了I/O的远程分布与扩展。它们的内部构成与相互连接关系如图4所示。
图4 实时仿真计算机分系统构成
从上述仿真计算机的设计可以看出,这种设计方案实现了运算能力的分布式实现与I/O的分布式部署。既能够保证运算能力满足动态特性模型结算的要求,又可以实现I/O数量的扩展,因此能很好地解决模型运算能力与I/O数量的要求。试验进行时,仿真目标计算机与被测系统等设备通过I/O硬线连接,系统动态特性与仿真的动力学模型在仿真机上实时运行,并能够模拟出被测目标系统所需的各种传感器与执行器的信号,用于激励控制器。这些参数可以发送到测试管理主机在线显示,也可以存储在本地硬盘上以备试验结束后离线分析。
本系统的工作流程以软件流程为主,硬件为程控设备或者板卡,不需要手动操作,完全可以通过软件的设置或者模型控制,工作流程如图5所示。首先,根据被测系统的接口需求在MATLAB/Simulink建模软件中建立被测系统外围接口模型,该模型主要为接口模块的设置,针对串口、CAN、1553B等总线类接口只需要在模型中放入相应的驱动模块,设置部分可以在QuiKLab中实现。RT-LAB仿真管理软件可以实现被测系统外围接口模型的编译和节点分配等功能,编译过的模型是可以在Redhat系统下运行的可执行程序。根据被测系统测试需求文档的要求定义通讯链路的协议、编写测试用例、制定测试流程。最后,在QuiKLab自动测试管理软件先运行编译过的被测系统外围接口模型,再执行测试流程,测试流程执行完毕会打印出测试结论及测试报告。
QuiKLab采用流程化的测试用例管理方式,在测试用例界面中将测试流程设计成由一系列事件和动作组成的测试流程框架,根据实际需求选择合适的事件和动作组织成测试需求中规定的测试流程。每个事件或动作都可以看作是测试流程中的一个测试步骤,测试步骤可以是从被测系统收数据,也可以是发送数据给被测系统,也可以是条件判断。以下是一个简单的使用事件和动作组成完整的测试流程的例子。假设测试流程的需求如图6所示。
图6 测试需求流程图
那么,使用本方法创建的测试流程如图7所示。
图7 测试流程例子
在测试用例设计界面中,以流程树的形式供用户设计测试流程,软件能够将用户设计好的测试流程自动生成Python语言的测试脚本。测试脚本序列在运行时,通过驱动仿真测试平台的I/O驱动和通讯接口与被测系统通讯,激励被测系统做出各种响应。事件的类型有外部事件、内部事件、系统事件、同步事件。外部事件指测试系统接收到被测系统的消息,或者测试系统接收到外部其他系统的消息;内部指测试系统内部产生的事件,如判断某个触发变量的值是否满足指定的条件,若满足则此事件触发;系统事件可以设置定时或周期事件,如指定在某个时间此事件触发、在某个时间段内此事件一直触发等;同步事件用来做同步用,当某个或多个同步信号满足了设定的同步条件后,此同步事件就会触发。动作的类型有发送TCP/UDP/串口消息、发送CAN总线消息、发送1553B总线消息、设置1553B RT数据、延时、动作控制、比较期望值、自定义动作、流程结束等。
系统均提供了相应的故障注入设置方式,在设计测试用例时,可以在测试用例的流程编辑界面中设置是否需要故障注入以及故障注入的方式等。当测试用例中发送消息时指定了故障,则在处理该消息时软件会自动先处理事先设计的故障,并按照故障逻辑的结果完成故障注入。所有故障注入时要发送的数据,均可以直接指定一个固定值,或者从文件读取,或者从其它物理接口获取等。
本文对该系统进行了测试,测试开发管理主机硬件配置如下:联想S30工作站,Intel 4核CPU(3.06 GHz),16 GB 内存,1TB SATA硬盘,1 GB显卡,预装Windows 7 Pro.64bit 中文版,24" LCD显示器。实时仿真计算机分系统由2台通用实时测试目标机组成,它们之间通过1394B总线连接,机箱中的I/O都通过仿真计算机中运行的仿真模型控制。实时测试目标机具体配置如下:标准4U高度上架机箱,Intel 3.2 GHz双核处理器,4 GB内存,运行REDHAT LINUX 实时操作系统,提供7个PCI插槽,安装有各种总线功能卡。
经本文测试,系统性能指标达到了较高的能力:1)测试动作之间的延时精度最小精度能达到100 μs;2)支持强度测试,短时间处理、大数据处理、并行处理;3)数字I/O采集信号误差绝对值不大于0.1 ms;4)强实时处理能力达到10 μs。可见,本文提出的分布式仿真测试系统对实时系统性的测试性能提升效果是非常显著的。
基于本文提出的分布式仿真测试环境已经成功应用于某通讯链路故障注入项目以及其他国防军事装备项目中。本文提出的系统具有如下关键特点和优势:1)提供一站式可视化的测试管理环境,大大简化测试管理工作;2)运算速度快,实时性好;3)开放性平台,提供C/C++,Python,Labview等API,图形化监控软件界面可以根据用户需求定制;4)扩展能力强,能够通过添加PCI板卡的方式得到更多的I/O与数据通道。另外,本系统是一种分布式实时仿真平台,其硬件平台基于当前速度最快的主流硬件平台。本系统还支持运算能力的并行分布,能够在多台仿真机上扩展模型。目前该系统已经可以满足绝大多数航空、航天、兵器等领域强实时嵌入式软件的测试需求。
[1] 周庆,刘斌,余正伟,等.综合模块化航电软件仿真测试环境研究[J].航空学报,2012,33(4):722-733.
[2] Friedenthal S,Moore A,Steiner R.Integrating SysML into a systems development environment[M].A Practical Guide to SysML.2nd ed.[S.1.]: Elsevier,2012:523-556.
[3] Koonga C S,Shihb C,Hsiungc P A,et al.Automatic testing environment for multi-Core embedded software ATEMES[J].The Journal of Systems and Software,2012,85(1):43-60.
[4] 刘畅,刘斌,蒋崇武.嵌入式软件仿真测试环境实时数据处理研究[J].计算机工程与技术,2009,30(7):1561.
[5] 刘斌.嵌入式软件可靠性仿真测试系统研究[J].北京航空航天大学学报,2000,26(4):490-493.
[6] ADS2:Avionics development system 2nd generation[EB/OL]. www.techsat.com,2004.
[7] GESTE:GESTE产品介绍[EB/OL]. www.antares-testing.corn/File.asp,2007.
Research on Automatic Test Platform for Embedded Software
Xia Jiajia, Zou Yijun, Zhou Jiangwei, Wang Tianmin, Cao Shengli
(Shanghai Keliang Information Tech.& Eng.Co.,Ltd.,Shanghai200233,China)
The simulation of controlled object and environment are usually required for embedded software system testing to achieve the purpose of Hardware-In-Loop (HIL) verification. It is necessary to connect both the real time simulation model of controlled object and software to be tested to perform HIL testing. Based on the analysis of latest needs of embedded testing,a system platform in accordance with test automation of embedded software based on Distributed Simulation Testing Environment is proposed in this paper. The testing system implanted with powerful test management function,composed with not only the real-time simulation device as its core but also the modular customization of device interface connected,which actualizes the system level HIL hardware and software simulation environment of dynamic testing of embedded software system and brings out a solution that perfectly handles the defects of embedded system such as deficiency of memory and tightly related with hardware and so on.
embedded software; in-loop verification; automatic test; real-time simulation device
1671-4598(2016)04-0022-04DOI:10.16526/j.cnki.11-4762/tp.2016.04.007
TP273
A
2015-07-29;
2015-11-12。
夏佳佳(1987-),女,浙江舟山人,硕士,工程师,主要从事嵌入式软件自动化测试系统和测试理论的研究,虚拟现实及其可视化技术方向的研究。