当前位置: 首页 > 范文大全 > 公文范文 >

基于WEB结构自动化的嵌入式测试平台设计

时间:2022-03-24 09:24:38  浏览次数:

摘 要: 针对现有测试平台通用性不强、自动化效率不高,提出一种基于WEB结构具有工作流技术的自动化嵌入式测试平台,该平台通过在服务器端开发和集成测试工具,在客户端布置测试环境,通过该搭建可以解决开发环境与使用环境双重测试问题;最后将该平台应用于实际,并对整个嵌入式系统包括操作系统的实时性及一致性、嵌入式软件进行功能、效率等测试项目提出一套测试方案,同时获得一批有价值的数据,为今后的开发工作的完善和设备的验收提供了一套有价值的资料。

关键词: 嵌入式; 测试引擎; 测试平台; 实时性

中图分类号: TP31156 文献标识码: A 文章编号:2095-2163(2013)03-0095-05

0 引 言

嵌入式系统的开发环境与运行环境一般是独立的,因此完成相应的测试也要在开发环境和运行环境下分别执行,如此,在实施过程中就产生了两个问题,即增加了系统的测试成本;也由于分开测试降低了测试的自动化程度,为此影响了测试的执行效率,同时也带来了测试策略的选择问题。一般的嵌入式软件的仿真测试有三种方式,分为宿主机软件仿真、在线仿真器和目标机仿真[1],从嵌入式测试效率、自动化程度及测试成本的角度分析,这三种测试方案各有优势和劣势。其中,基于PC宿主机软件仿真方式,由于受到网络通讯等硬件环境因素的影响,不可能模拟真实设备环境;而在线仿真系统又对硬件的依赖性比较高,测试领域较窄;目标机仿真虽然测试结果较真实,但却由于目标机硬件条件的限制而无法正确区分测试的错误是来自被测试目标机的软件系统还是硬件系统。

当前,常用的嵌入式软件仿真平台一般是面向嵌入式测试系统的,测试人员根据被测试的嵌入式系统的要求和规定对其进行软硬件环境配置,并通过组织该系统软件的各种输入数据来驱动测试系统的运行,同时输出结果并加以分析,因此针对测试工作的自动性、实时性、非入侵的闭环测试性的特点[2,3],就要求现有嵌入式测试平台必须具备实时性和一定的环境仿真能力。

从上述分析可知,传统的测试平台一般是利用PC机的仿真软件来模拟硬件的功能,也就是利用PC机的仿真软件作为测试主体,在测试过程中使用标准总线和专用测试语言,这样做的目的是保证测试程序与测试硬件彼此独立,具备测试的可移植性。如现有嵌入式软件仿真测试单机平台、惯导软件可靠性仿真测试平台等。此类测试基本是依据开发方案来制定,其测试环境要么由宿主PC机提供,要么由宿主PC机及目标机共同提供,并从最小的单元测试级开始运行,只是这种测试平台主要是针对某类测试软件墙;有些则面向某些专用的微处理器,因此这种测试平台具有较强的针对性和专用性,使得这种测试方案的可移植性和可扩展性都比较差,也不具备通用性;同时,利用仿真软件在分布式测试平台方面也会由于通讯的实时性和调度的即时性而存在不足[4]。基于此,如何提高测试平台的通用性及自动化程度即成为当今嵌入式测试领域的一个难点。

从嵌入式系统测试角度,针对嵌入式开发测试或者嵌入式运行测试的不足,本文设计了一套具有一定通用性的、基于WEB结构的、自动化的嵌入式测试平台,实验证明,该测试平台具有更好的测试效率和可移植性,同时满足实时性测试要求。

1 关键技术和平台架构

1.1 自动化测试引擎

自动化测试系统主要是通过自动化测试描述测试引擎实现自动化测试功能,测试描述执行引擎是整个测试平台的核心模块,并运行在实时嵌入式操作系统(如vxWorks)上的,该模块负责理解和描述测试人员的测试意图,进行调度,同时负责环境模拟器的配置,使系统能条理清晰地完成自动测试。本文测试系统的测试引擎采用分阶段执行完成,其总体设计如图1所示,其执行过程如下:

(1)在测试前,由测试描述执行引擎来完成测试描述源代码的翻译过程,对要处理的测试请求进行词法及语法语义分析,将测试说明或者测试请求翻译为高效简捷的测试指令系列。

(2)测试过程中,由测试描述执行引擎负责实现对中间指令序列的实时调度, 并完成指令的编译解析执行, 同时根据任务流的内容实现对环境模拟器的配置,最终完成整个测试工作。

引擎是工作流技术的关键单元[5],其质量直接关系到自动化程度的高低,而本文所使用工作流引擎为轻量级工作引擎[6]。本文在测试系统引入工作流技术,可以提高测试系统的自动化程度。

1.2 基于WEB自动测试平台构建

基于WEB结构的自动化嵌入式测试平台是由Server(服务器)与Browser(浏览器)两部分构成的,Server主要完成测试设计的相关工作,其中包括测试用例的设计与管理、测试任务设计与管理、自动测试引擎管理、用户权限管理、测试任务流的生成及测试结果记录等;而客户端Browser则主要实现用户的远程登陆、下载及上传等功能,并通过任务流引擎完成测试执行的相关活动,任务流引擎可以实现对环境模拟器进行配置和管理,驱动环境被测系统与环境模拟器相连。服务器通过完善数据库系统以利于整合现有的测试工具,方便实施测试资源利用的最大化,并藉此保证测试平台的可扩展性、可利用性及通用性。由于测试执行是在客户端进行的,就可以很容易地实现嵌入式系统的实时性要求,架构如图2所示。

WEB架构中的Server是整个测试系统的主体,其功能包括自动化测试引擎、环境模拟器、测试脚本、数据库服务、远程服务等。其中,数据库服务是用来存储测试软件所需要的测试用例和测试结果,以及任务流中的任务、用户权限等等。同时该服务器还支持性能测试、可信测试(可用性和可靠性)、实时测试等功能,而数据库包括测试用例数据库、脚本数据库、结果数据库,以及用于支持工作流技术的各种数据库,其中任务流数据库、任务模板库、用户权限库为轻量级工作流技术的关键库,整个库结构图如图3所示。各种数据库功能如下:

(1)用例数据库中存放了针对开发方案的事先设计完成的各种测试用例。

(2)结果数据库中记录了测试过程中各种测试信息及测试后的各种结果。

(3)工作流数据库包括任务流数据库、任务模板数据库及用户权限数据库等,该数据库支持嵌入式测试系统的自动执行。

(4)脚本数据库中存放了针对于可信测试及性能测试等方面的测试脚本,该脚本由测试人员事先设计以用于测试,在测试过程中仅供测试驱动程序读取。

Server可通过Browser进行远程登陆访问,用户在客户端通过不同的权限登陆之后系统自动执行工作流测试,通过执行不同任务流中的相应任务,调用各自的测试脚本和测试环境以完成自动测试。

1.2.2 Browser

客户端的Browser主要实现用户的远程登陆及完成上传和下载等任务,用户可以通过Browser方便地上传测试信息及用户信息,系统验证用户信息及权限,并根据输入信息驱动自动测试引擎,从而完成相应的测试任务,同时从Server处下载相应的测试任务和相应的测试工具包。再根据相应的测试要求在Browser客户端完成测试环境的相应搭建和配置。

1.2.3 环境模拟器

在嵌入式测试系统中,搭建测试模拟环境是一项非常重要的任务,这个工作也是由自动测试引擎通过数据驱动的方式实现并完成的。在测试环境配置过程中,也要其他组件来协助和辅佐,如测试工具包、测试环境模拟器及测试用例集和其他帮助性文档等。测试模拟器是依靠自动测试引擎驱动方式工作的,在整个测试过程中担负了重要任务,是所有测试任务驱动引擎,主要包括测试用例的读取、数据包的发送、测试记录等工作。其中的自动测试引擎及环境模拟器在整个测试平台中的逻辑地位如图4所示,测试环境分为三层:

(1)最上层为环境模拟器的输入输出层(简称I/O层)。该层主要负责各类测试用例的输入,包括测试用例的读取及其他输入,也连同手工输入等,还包括测试数据结果的记录及存储等。

(2)中间层为环境模拟器及自动测试引擎系统层,包括自动测试引擎、环境模拟器及中心控制器。自动测试引擎负责所有任务的驱动,包括对环境中心模拟控制器的驱动,而环境模拟中心控制器则主要负责对整个模拟环境的驱动和调度,并在整个测试过程中起到主导作用,辅助自动测试引擎完成对各个测试任务的指挥和控制,同时将返回测试结果并保存在数据库中,因而是整个测试任务管理与组织者。

(3)最低层为环境模拟器与被测系统的交互通讯层,可以通过核实的通信机制来完成。

1.3 基于WEB结构自动嵌入式测试平台的测试过程

第一步 申请测试工具包,用户通过向服务器提出测试请求,服务器根据用户的相应权限开放相应的服务,并根据用户的测试请求查询相应的任务流ID,再根据任务流ID,驱动相应的自动化测试引擎,完成相应的测试任务。整个测试获取测试工具包过程如图5所示。

通过向服务器提供测试请求或测试说明,服务器的自动测试引擎根据用户提供的测试请求生成相应的测试指令序列即测试任务流,任务流是由任务模板库中的任务构成的,是若干个测试步骤,而任务即是每个测试步骤,每个测试步骤对应指定的测试工具包,因此根据相应的任务要求查找满足用户条件的测试工具包,并将用户需要的相应的测试工具包下载到客户端;若在数据库中没有得到相应的测试工具包,系统允许用户提交自己的测试说明,以便开发人员根据测试需求开发相应的测试工具包。

第二步 用户在客户端通过Browser登陆Server,启动自动测试引擎,驱动环境模拟器完成相应的测试工作,具体包括:

(1)用户成功登陆Server,启动自动测试引擎,进一步驱动环境模拟器,同时下载测试用例,并自动将该用例转换为被测目标机能接受的数据,再将其用到被测试的目标机。

(2)记录测试过程并将从目标机接收的消息及时传给Server。

第三步 服务器对测试结果分析,即对通过客户端回传的所有信息进行分析,并将分析结果返回给用户,其测试过程如图6所示。

2 基于WEB架构的测试平台验证

为了验证本测试平台的实用性,本文将该测试平台应用于深圳市轨道交通自动售检票系统的测试。为实现上述测试过程,对即将验收的轨道交通自动售检票系统在VxWorks,WINCE和Linux等不同的操作系统平台进行分别测试。通过对不同系统平台的合理应用,实现了对本测试平台的有效检验,并得到一批科学的数据,为将来进行嵌入式设备的有效验收提供一定的参考。

对于嵌入式系统测试,首先应该从嵌入式操作系统测试开始,并利用得到的操作系统的各项指标,再对嵌入式软件进行多方面的测试,主要包括功能测试、效率测试及可靠性测试等。

现在对健壮性测试通过举例做以说明。为了测试嵌入式操作系统的系统调用是否符合POSIX标准,对其健壮性进行测试,在测试的工具包中整合了基于Ballista测试思想的测试健壮性的各类测试套件。用户通过在测试PC机上运行自动测试系统对整个健壮性的测试套件进行有效的控制,任务流库中的每一条记录对应一个测试任务流,单个任务流由若干任务构成,一个任务对应一个测试用例,在用例库中的每一条记录也对应着一个测试用例。整个测试过程如下,首先主控制启动监听测试对目标机进行监听,一旦发现目标机链接成功,主控制程序即获取测试任务流,然后根据测试任务流中的任务获取相应的测试用例,获取的测试用例通过网络接口模块将发送给被测系统进行调用,由此完成目标机的系统测试。当测试完成后,目标机将测试结果传递给测试机,主控制程序便对结果进行分析,并将测试结果保存在测试机结果记录库中。其健壮性的整个测试过程如图7所示。

2.1 嵌入式操作系统测试

关于操作系统级的测试,本文主要对嵌入式操作系统开展一致性、健壮性及实时性的测试。一致性测试的主要工作就是测试VxWorks系统调用与POSIX规范的一致性。文中主要将POSIX规范转化为测试用例,并对系统调用进行功能测试,因而测试VxWorks常用的18个系统调用。而健壮性测试的方法在图7中已经阐述,而测试对象为VxWorks操作系统和Linux操作系统的部分文件类和时间类的POSIX的系统调用[7,8]。实时性主要是针对任务切换时间、任务抢占时间、终端延迟时间、死锁解除时间、消息传递时间及信号量的混洗时间等指标性能上进行测试[9]。

2.2 功能测试

功能测试主要面向城市轨道交通自动售检票系统终端中的嵌入式软件。测试的嵌入式设备为自动检票机、自动售票机。运行的测试环境操作系统为VxWorks、Linux及Wince。在测试现场测试PC机将配置环境模拟器,模拟嵌入式软件的硬件工作环境,并将该测试PC机通过标准总线与被测试机相连,进行嵌入式系统测试并保存测试结果。本文分别要完成售票机和检票机的21项和6项功能测试工作。

2.3 系统效率测试

系统效率测试主要是为了获得嵌入式软件在不同操作系统上的时间参数。相关的嵌入式软件的运行环境分别为WINCE、VxWorks和Linux。效率测试的步骤为,在现场的测试PC机上首先配置环境模拟器,模拟嵌入式软件工作的硬件环境,该测试PC机是通过标准总线连接到被测系统上,然后启动测试。下面通过自动测试引擎为例进行说明,为了验证平台执行引擎是否满足嵌入式系统的实时性要求,从检票机中选取一部分请求测试代码,并借助于CodeTEST测试工具包,通过自动测试引擎驱动环境模拟器配置测试环境,具体设置为:CPU P4/3.0 GHz,内存2GB,实时操作系统vxWorks。自动测试平台的效率分析主要从两方面开展与实现:

(1)考虑不同规模的单个测试请求文件的执行时间;

(2)考察给定的中等规模的测试请求代码(40行)下的多个测试请求的并发执行时间。

分析结果如表1所示。

分析测试结果可以看出,自动测试引擎处理中等规模(测试请求或者测试描述小于50行)的执行脚本时间不超过1毫秒,并且由于自动测试引擎支持多个测试请求的顺序和并发执行机制,因此,若能合理控制测试请求的规模和并发的执行程度,完全可以满足本测试系统对嵌入式实时性的要求。

2.4 可靠性测试

嵌入式软件的可靠性测试采用了模块化的设计思想,通常一个模型设计对应一个模块,所有的模块均有数据输入和结果输出及评估,完成嵌入式可靠性测试主要依托当今流行的故障注入技术来完成,具体细节可以参考相关文献实现及完成[10]。

3 结束语

本文提出了一种基于WEB架构的自动嵌入式测试平台,该平台将开发与扩充置于server端,而将测试的运行设在Browser端,这样做的目的解决了开发环境测试与运行环境测试双重测试问题,节省了测试资源,同时在该平台中引入了工作流技术,由此而提高了测试效率。最后将该平台应用于实际,应用表明该平台具有一定的实际参考意义。

参考文献:

[1]梁燕,唐超,李伟. 嵌入式软件测试系统设计与实现[J].通讯技术,2009,11:49-53.

[2]任洪波.嵌入式软件可靠性测试系统及其通信研究[J].计算机科学, 2007, 34(3): 290-292.

[3]章 亮,刘 斌,陆民燕.嵌入式系统测试开发环境的框架设计[J].北京航空航天大学学报, 2005, 31(3): 336-340.

[4]唐思章,陈涵生.分布式自动化负载测试系统的设计与实现[J].计算机工程, 2006, 32(4): 277-279.

[5]郝帅,蔡宗慧.基于Web的工作流管理系统的研究[J].煤炭技术,2012,31(6):210-272.

[6]蔡孝武,韩永国,蓝科.一种轻量级工作流引擎的研究与设计[J].计算机工程,2010,36,(20):78-80.

[7]赵则章,江建慧.操作系统健壮性测试方法研究[J].计算机工程与应用,2007.43(7):93-97.

[8]刘洪涛,江建慧,赵则章.软件健壮性的包裹测试[J].计算机工程与科学,2005,27(4):19-21.

[9]江建慧,唐智杰.测量嵌入式操作系统实时性能参数的基准程序新方法[J].同济大学学报(自然科学版),2008,36(9):1260-1266.

[10]徐晓露.基于故障注入的嵌入式系统测试研究[D],杭州:浙江大学计算机科学与技术学院,2008.

推荐访问: 嵌入式 自动化 结构 测试 设计
[基于WEB结构自动化的嵌入式测试平台设计]相关文章