关键字驱动的嵌入式实时软件自动化测试框架研究_第1页
关键字驱动的嵌入式实时软件自动化测试框架研究_第2页
关键字驱动的嵌入式实时软件自动化测试框架研究_第3页
关键字驱动的嵌入式实时软件自动化测试框架研究_第4页
关键字驱动的嵌入式实时软件自动化测试框架研究_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、关键字驱动的嵌入式实时软件自动化测试框架研究陈效儒,何宇化浙江中控技术股份有限公司,浙江杭州,310053摘 要: 为了提高嵌入式实时软件的测试效率,提出了基于关键字驱动脚本技术的嵌入式实时软件自动化测试框架。本文首先指出嵌入式实时软件测试存在的问题,对比分析了目前常用的自动化测试框架;然后针对DCS控制器嵌入式软件设计了自动化测试框架,并描述用到的相关技术;最后给出控制器版本验证的例子,结果表明自动化测试的可行性。关键词:关键字驱动;测试框架;网络驱动;嵌入式实时软件Research of Test Automation Framework of Real-time Embedded Sof

2、tware Based on Keyword DrivenChen xiao ru He YuhuaZhejiang SUPCON Co., Ltd., Hangzhou, Zhejiang, 310053Abstract:In order to improve testing efficiency of the real-time embedded software, this paper proposed a testing automation framework for embedded real-time software based on the keyword driven sc

3、ript technology. At first, it points out testing problems of the embedded real-time software, and has comparative analysis of the commonly used test automation framework. Then it designs the test automation framework according to the embedded software of the DCS controller, and describes the use of

4、related technologies. Finally, the controller version verification example shows the feasibility of the test automation framework. Keywords: keyword-driven; testing framework; network driver; real-time embedded software 引言现如今,嵌入式系统应用广泛。尤其是在工业领域,大部分产品是基于嵌入式系统而开发的,比如飞机里用到的各种监控、控制和通讯器件,高铁运行监控报警系统,流水线生产

5、控制系统,以及家用的汽车导航仪等等。为了获得高质量的嵌入式系统产品,高效的测试是不可或缺的重要环节。对于嵌入式系统实时软件测试,传统的方法就是手工测试。而手工测试效率低下,且对于需要重复测试的场合无可复用性。一般只要测试用例的循环测试轮数大于2,自动化测试的效率将高于手工测试的效率1。所以控制器开发团队寄希望于找到一种高效、可重用的自动化测试方法,来提高测试效率。本文针对中控工业分布式控制系统ECS-700的主控制器的嵌入式软件测试用例手动实现存在的效率低下问题,探索嵌入式软件测试用例自动化实施方法,给出关键字驱动的嵌入式实时软件自动化测试框架。1、自动化测试框架概述在自动化测试被引入的过程中

6、,最高水平的测试应该是那种一键即可被启动的。然后测试可以整夜自动运行,无需专业测试人员监控操作,第二天早上测试结果自动发布。这种自动化测试方式显然需要某种系统功能,那种能够容易地创建、执行并且维护测试用例的功能。这种系统还应该提供某种核心功能,包括监视系统运行情况,报告系统故障,和方便扩展新的测试用例。这种系统符合框架的定义,才能称之为自动化测试框架2。根据前人的自动化测试经验教训,可重用的测试策略无异于那些好的应用程序开发项目的可重用开发方法。充分发挥测试框架的可重用性和可管理性,才能避开前人的失败教训。因此在整个测试框架设计过程中,给出了如下必须遵守的指导原则:(1)测试自动化是软件测试流

7、程建立的完整过程,不应随项目的结束而结束;(2)测试框架应该是脱离用例设计过程的实体,不会因为所设计测试用例的不同而更改;(3)测试框架与被测对象无关;(4)测试框架应是易于扩展、维护和延续;(5)测试框架可以支持各种脚本语言;(6)测试框架本身的设计可能是复杂的,但应以测试便利性为目标。目前常用的自动化测试框架34:模块化测试框架需要建立无耦合的可描述的模块以及被测应用程序执行脚本。特定测试用例的脚本由树状的小脚本组合而成。该框架使用了编程中抽象或者封装的原理。其缺点是建立模块库开销大,不易扩展维护。数据驱动测试框架采用数据驱动脚本进行测试。脚本存放运行控制信息,输入值、输出验证值存放在独立

8、的数据文件,这种数据文件以能够被解析的格式保存。在测试过程中,测试脚本直接获取数据文件,并保存当前状态和过程信息。对于不同的测试用例,可以用同一测试脚本执行,从而实现了脚本与数据的分离。当测试数据有更新,测试脚本代码无须修改。但是,缺点是测试脚本的编写需要耗费较大开销,且对于新建测试用例需要重新编写测试脚本。关键字驱动测试框架是数据驱动测试框架的逻辑扩展。所谓关键字驱动是指使用关键字驱动脚本技术。它完全分离了数据、业务和脚本。关键字存储于测试数据表的首列,决定了测试流程。关键字数据存储于测试数据表的参数列,提供关键字相关参数。这种测试框架实现了测试逻辑与脚本的分离、数据与脚本的分离,大大提高了

9、测试脚本的可重用性,简化了测试逻辑,从而最大限度地实现了测试框架自动化。2、自动化测试框架设计 根据嵌入式工业控制器测试的实时性要求,以及产品代码和测试代码隔离性要求,设计一个基于关键字驱动的自动化测试框架5。这里选用Nokia Siemens Networks的Robot测试框架6。因为被测对象与测试执行体的异构特性,所以设计出的自动化测试框架必然有别于普通的测试代码和被测代码都在同一宿主机的测试框架。在被测嵌入式控制器与测试主机间需要一个交互的平台或者协调的机制。2.1 自动化测试框架总体结构设计自动化测试框架总体由以下几个部分组成:关键字驱动GUI、逻辑层、驱动层(包括关键字脚本库和网络

10、驱动)等组成。测试系统与测试对象之间通过网络驱动进行交互,其结构如图1所示。 图1 自动化测试框架总体结构2.1.1关键字驱动GUI基于表驱动测试思想,关键字驱动GUI(关键字驱动图形化用户接口)是自动逐行解析每一步执行操作的关键字,调用脚本语言实现的关键字脚本库,完成测试用例所关联的每一个关键字步骤,并且最终可以自动产生日志文件和测试报告。这里选用Siemens Robot Testing Framework,它是一个通用的关键字驱动图形化测试工具。测试人员可以编写Python或Jython语言实现的关键字脚本库,并在此工具界面创建映射测试用例的关键字表。2.1.2 逻辑层逻辑层是关键字脚本

11、执行的逻辑过程,该过程需具备数据交互、动作执行和结果验证等基本功能。首先,在测试过程中,必须获取测试对象的相关信息。一般通过自动化测试工具或IE的脚本工具进行自动捕获。在这里,主要使用Wireshark工具,以网络的形式将获取到的数据保存于本地文件中,供执行过程操作和分析。其次,在动作执行阶段,根据被测对象功能和测试步骤,抽象出一些通用的操作,并封装成相应的脚本接口。测试用例的关键字实现会调用这些接口,并对获取的测试数据进行一定的分析和逻辑操作。最后,在结果验证阶段,参考期望数据,验证被测对象实时数据的正确性,并在日志中记录验证结果。实际中往往直接将期望数据赋值给关键字参数。关键字脚本接口根据

12、该参数值完成测试结果验证。2.1.3网络驱动嵌入式软件测试的异构特性要求测试对象与测试系统间有一个交互的平台。在实践中,用到的相关交互平台有工业以太网通信协议、串口通信协议和Modbus-TCP通信协议等。在此,利用测试对象本身具有与上位机进行工业以太网通讯的功能,根据测试对象对外开放的通讯协议建立测试交互平台。用VC6.0开发出基于SOCKET的通用型工业以太网通讯动态链接库,该动态链接库具备通用的以太网发包功能,供上层Python关键字脚本调用。接口如下:int _declspec(dllexport) dll_UdpSend(char* str_srcIp,u16 src_port,ch

13、ar* str_dstIp ,u16 dst_port,u8 *data_to_send,u16 len)接口参数包括源IP地址、源端口、目标IP地址、目标端口、待发送数据源指针和数据长度。该接口通用、简单,可以供上层关键字脚本封装调用。2.1.4 关键字脚本库关键字脚本库是基于关键字驱动测试框架的重要组成部分,解释运行测试框架中使用到的关键字,决定了测试流程的走向。关键字脚本里定义数据关键字和逻辑关键字。数据关键字,顾名思义就是定义数据信息的关键字,描述了对象的状态信息,可以在脚本或关键字表被赋值。逻辑关键字的定义要充分考虑测试流程。根据所设计的测试用例构建测试步骤,相关的测试用例组合构成测

14、试用例集。这样可构成一个三级结构的测试表:测试用例集、测试用例和测试步骤。根据测试步骤表,定义测试步骤表条目所对应的关键字名称,并用Python语言实现该关键字运行脚本。为实现关键字脚本的可重用性,在实现关键字脚本过程中,考虑设计包括底层脚本和顶层脚本的层级脚本结构。底层脚本实现通用、基本的函数功能和下层以太网DLL接口的封装,供各种不同顶层脚本调用。如对于以太网发包DLL接口封装后的Python脚本接口如下:udp_data_send(src_ip, src_port,dst_ip,dst_port,udp_data,data_len)接口参数包括源IP地址、源端口、目标IP地址、目标端口、

15、待发送数据源和数据长度。顶层关键字脚本是顶层关键字集的具体实现,它通过组合底层脚本关键字来解析Robot测试用例表的关键字。为实现脚本集的模块化,还可根据功能划分关键字脚本集,以清晰划分脚本集,方便测试人员使用。3 实例应用在具体的DCS控制器自动化测试过程中,已可以实现以太网通讯协议分析、外部故障注入、控制器外部功能模拟和内存校验等过程。以控制器版本验证为例,描述测试用例实现过程。控制器版本验证业务流程如图2。其主要流程有网络监听、发送版本请求、等待响应、结果验证等。首先借用Wireshark工具打开网络监听功能,并将发出和收到的网络数据包以pcap格式保存在给定的本地文件中;然后发送获取对

16、象版本信息的请求数据包,需要获取命令号和目的网络地址;在限定时间内,循环等待响应数据包;最后过滤本地中截取的数据包,获得需要的数据包,根据数据格式解析出版本信息,和给定版本信息比较,验证结果正确性。图2 版本验证业务流程图根据这一业务流程特点,创建测试用例表,如下。表1 版本验证测试用例表Test CaseActionArgumentArgumentCheck_VersionDocumentation Monitor_Network$File_Name_for_Received _Data #打开Wireshark工具,抓取数据包,并保存到指定文件Send_Version_Request$Co

17、mmand_Number $Destination _AddressWait_for_Response$Time Check_Version_Result$Reference_Version 通过命令ride.py启动Robot,按照表1创建测试用例Check_Version,自动生成Check_ Version.html文件。Robot根据该文件,自动根据驱动层关键字脚本库解析运行关键字序列Monitor_Network、Send_Version_ Request、Wait_for_Response、Check_Version_Result,其中Send_Version_ Request关键

18、字自动调用关键字脚本接口udp_data_send(),实现脚本复用。测试结果,自动输出测试日志和测试报告。从中可以看出这种测试方式可行,而且大大提高了测试效率。4、结束语实践表明,鉴于嵌入式系统软件的实时性和异构特性,手工测试效率低下,传统的自动化测试工具应用非常困难。基于关键字驱动脚本技术,使得测试自动化得以实现;以太网通讯技术,使得异构测试得以进行。关键字驱动的嵌入式软件自动化测试框架,使得嵌入式实时软件测试过程简单、可重复,值得推广。当然,关键字脚本库的创建和维护过程还需要后续研究和细化,使自动化测试框架更加高效。参考文献1宋 波, 张忠能. 基于系统功能测试的软件自动化测试可行性分析. 计算机应用与软件, 2005, 12(22): 31-33.2 C. Nagle. Test automation frameworks, 2000. URL /DataDrivenTestAutomationFrameworks.htm. February 20, 2005. 3Ibrahim K. El-Far and James A.Whittaker. Model-based software testing. In Encyclopedia on Soft-war

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论