跨平台自动化测试部署
- 博客分类:
- 技术杂绘
跨平台自动化测试部署
2010年06月04日
本文转自:http://www.ibm.com/developerworks/cn/opensource/os -cn-stafxml/
目前,我们的测试需要越来越多的平台,并且测试规模多达数十台机器。为提高测试效率和测试质量,我们结合 STAF(Software Test Automation Framework) 和 XML ,设计并实现了一种测试框架。以XML为配置文件,配置所有平台信息;以STAF为引擎,实现跨平台自动化测试;将测试框架与测试用例分离,实现测试用例的即插即用。本文具有很强的实用性,读者可参考设计跨多个平台的自动化测试。
前言
目前,我们的测试需要覆盖越来越多的平台,以及需要多达几十台机器的测试规模。为了提高测试效率和测试质量,我们设计并实现了一种基于STAF和XML的自动化测试工具,主要解决了以下问题: 应用 STAF 内部服务和 XML 配置文件,实现在多达几十台机器上的自动化测试;
直接在 Perl 脚本中调用 STAF 的内部服务,提供更灵活和更强大的功能;
将测试框架与测试用例分离,每次我们生成一个新的测试用例,只需要将其在 XML 文件中进行配置,实现了测试用例的即插即用。
生成 HTML 格式的日志文件,方便测试者的查询。
我们的测试工作包括下列三个组件:自动化测试框架、配置文件、测试用例。结构如下图所示。 图 1 : 本自动化测试框架结构图
自动化测试框架
对 STAF 框架的改进
自动化测试框架是基于 STAF 和 XML 实现的。STAF/STAX 是由IBM开发的自动化测试环境,其中STAF是开源的、跨平台的、支持多语言的自动化测试框架。它为自动化测试建立了基础,并加快了自动化测试的进程。STAX 是基于 STAF 的基础上的执行引擎,它在 STAF 的基础上,帮助用户实现测试用例的分发、布置、执行以及结果分析。在测试工作中,测试人员越来越多的将 STAF 与 STAX 结合使用,但是 STAX 本身为 XML 格式文档,且要求嵌入 Python 语言,具有流程复杂,操作不便的特点。为实现跨多平台的综合性自动化测试,以及提高自动化测试的效率,决定在 Perl 脚本中直接调用 STAF 服务,实现关键性的远程进程调用功能和文件传输功能,并配置XML文件管理测试平台及测试用例。
测试框架中涉及的 STAF 服务
STAF是基于重用的组件来构建自动化框架的,这些可重用的组件就是服务。其中,本测试框架中用的服务主要为: 程序调用服务:内部服务,利用此服务,可用远程调用外部程序。本框架中利用 STAF Process 服务远程执行 Perl 脚本,例如在 Windows 平台下调用语法为:
文件系统服务:内部服务,利用此服务,可以对文件系统进行操作,比如复制、删除、查看等操作。本框架中利用STAF文件系统服务,将测试用例部署到所有的测试平台,并在执行结束后,将日志文件返还特定机器,以便查阅。例如在 windows 平台下的调用语法为:
其中 $fromDir 指本地文件夹,$toDir 指远程文件夹,$hostname 指远程测试平台,$ext 指将要进行复制的文件扩展名,此处为 "pl"。 配置文件
脚本的执行命令和环境变量在各个平台是不同的,具有很大的差异性。为避免将这种差异硬编码到自动化脚本中,并使自动化脚本具有很好的透明性,我们采用基于 XML的配置文件覆盖多种平台的差异性。例如本框架中的配置文件如下所示。 代码1 : 配置文件内容示例
在配置文件中,指定了要执行的脚本,日志文件的存放位置,配置文件的存放位置,测试机器的操作系统类型,以及脚本要部署的具体路径。脚本在执行时首先读取 XML 文件中的重要信息,例如测试机器的平台,以便采用相对应的执行命令和查询必须的环境量。示例代码如下。 代码2 : 读取XML代码示例 use XML::Parser; use XML::SimpleObject; $file="configure.xml"; $parser = XML::Parser->new(ErrorContext=>2,Style=>"Tree"); $xso = XML::SimpleObject->new($parser->parsefile($file)); $monitor = $xso->child('Monitor'); $exeCmdFile = $monitor->attribute('exeCmd'); $log = $monitor->attribute('log'); $configureFile = $monitor->attribute('configure'); chomp($exeCmdFile); chomp($log); chomp($configureFile);
遍历所有测试平台,查询相关信息,如果平台为 Windows 平台,还将查询 STAF 变量,获取 System Drive 的值,并构造测试平台下的路径,此路径为所要执行测试用例的存放位置。示例代码如下。 代码3 : 遍历所有测试平台代码示例 部署并执行测试用例
在本自动化测试工具中,我们将测试框架与测试用例分离。每次,我们生成一个新的测试用例,只需要加将它加入到特定的位置,并在配置文件中进行简单的配置。测试开始执行时,测试工具会根据配置文件中的信息将测试用例部署到测试平台上,设置必须的环境变量,在测试机器上启动执行引擎,由执行引擎执行用例,并将日志文件返还。
部署测试用例
首先利用 STAF 提供的文件系统服务将要执行的测试用例和配置文件部署到所有的测试平台。每一个测试用例是由Perl写成的脚本。之所以要将配置文件也部署到测试机器,是因为在测试机器上的执行引擎要根据配置文件中的测试用例信息来执行测试用例。示例代码如下所示。 代码4 : 部署测试用例代码示例 my $ext = "\"pl\""; $toDir =~ s/[\/\\]$//; $fromDir =~ s/[\/\\]\w+\.\w+$//; my $cmd = "staf local fs copy DIRECTORY $fromDir TODIRECTORY \ $toDir TOMACHINE $hostname EXT $ext"; open (EXEC, "$cmd | ") or die "can not deploy test cases onto test beds"; while(){ if($_ =~ /error/i){ print "execute command error\n"; #todo } } close EXEC; print "successfully deploy test cases onto test beds, next step, \ execute them on test beds automatically\n";
在测试平台上执行测试用例
成功地将测试用例部署到测试平台上之后,接下来要做的是执行测试用例。每一个测试平台都有一个执行引擎,我们通过 STAF 的远程调用服务,在测试框架中调用执行引擎,由执行引擎负责在各个测试平台上执行测试用例。执行引擎本身也是一个 perl 脚本,它负责以下功能: 初始化并获取测试用例名称;
顺序执行测试用例;
生成HTML格式的日志文件,方便测试者的查询。
代码5 : 初始化并获取测试用例名 sub initialize{ while($option = shift @ARGV){ if($option =~ /.html/){ $logFileName = $option; }elsif($option =~ /[\\\/]/){ $dir = $option; }else{ $hostname = $option; } } print "dir is $dir\n"; print "hostname is $hostname\n"; print "logFileName is $logFileName\n"; $logFileExt = ".html"; $dateAndTime = &getCurrentDateAndTime(); #Analyze the xml configure file, register all test cases to be executed $file = "$dir"."hostInfo_$hostname.xml"; $confFile = "$dir"."configure.xml"; $parser = XML::Parser->new(ErrorContext=>2,Style=>"Tree"); $xso = XML::SimpleObject->new($parser->parsefile($file)); $confxso = XML::SimpleObject->new($parser->parsefile($confFile) ); $count = 0; foreach $tmp_host($confxso->child('Monitor')->children('host ')){ if($tmp_host->attribute('name') =~ /$hostname/i){ foreach $testcase($tmp_host->children('testcase')){ $testcases[$count++] = $testcase->attribute('value'); } } } }
代码6 : 顺序执行测试用例代码示例 生成日志
根据测试用例的执行情况,生成 HTML 日志,代码示例如下。 代码7 : 以 HTML 格式生成日志 #initial html head sub initLog{ my ($logFileName,$hostname) = @_; my $sdq = "\""; &appendLogScriptInfo($logFileName, \ "Automation Results"); &appendLogScriptInfo($logFileName,""); &appendLogScriptInfo($logFileName, \ "Automation Results for host: $hostname ".&getCurrentDateAndTime.""); &appendLogScriptInfo($logFileName,""); &appendLogScriptInfo($logFileName,""); } #end html after test sub endLog{ my ($logFileName) = @_; &appendLogScriptInfo($logFileName,""); &appendLogScriptInfo($logFileName,""); &appendLogScriptInfo($logFileName,""); &appendLogScriptInfo($logFileName,""); &appendLogScriptInfo($logFileName,""); } #append log contents into html file sub appendLogScriptInfo{ my ($logFile, $content) = @_; unless(open(LOGFILE,">>$logFile")){ die("can not open log file $logFile"); } print LOGFILE ("$content\n"); close(LOGFILE); }
日志查询
测试结束后,利用STAF的文件系统服务将在测试机器上生成的日志文件返回监测机器,并将其部署到Web容器中,测试人员可以通过IE等Web浏览器查看脚本的执行情况,示例图片如下。 图 3 : 每一个链接对应一个测试平台
图 4 : 每一个链接指向平台所执行的测试用例列表
图 5 : 每一个测试用例指向具体的执行情况
发表评论
-
接下来做什么
2012-01-20 09:42 733接下来做什么 2010年10 ... -
如何开展灰盒测试[4]:接口测试实战――测试跨主机的模块接口
2012-01-20 09:42 902如何开展灰盒测试[4]:接口测试实战――测试跨主机的模块接口 ... -
跨平台编程和QT
2012-01-20 09:42 906跨平台编程和QT 2011年03 ... -
人民日报:中国企业未参与菲律宾石油开采竞标
2012-01-19 14:46 667人民日报:中国企业未参 ... -
人民日报:中国企业没有参与菲律宾南海石油开采竞标
2012-01-19 14:46 628人民日报:中国企业没有 ... -
第二届《全国京剧票友万里行艺术团》欧洲行开始报名
2012-01-19 14:46 844第二届《全国京剧票友 ... -
出口埃及记
2012-01-19 14:46 618出口埃及记 2010年11月28 ... -
消息处理函数
2012-01-17 04:31 714消息处理函数 2010年07 ... -
调用API函数
2012-01-17 04:31 948调用API函数 2010年11月26 ... -
从VC6到VC9移植代码问题总结收藏
2012-01-17 04:30 604从VC6到VC9移植代码问题 ... -
窗口和消息
2012-01-17 04:30 558窗口和消息 2011年06月27 ... -
vs2008使用点滴
2012-01-17 04:30 1906vs2008使用点滴 2011年02 ... -
2009亚太最具社会责任感华商领袖颁奖盛典8月2日隆重举行
2012-01-16 03:21 5952009亚太最具社会责任感华商领袖颁奖盛典8月2日隆重举行 ... -
林 伦 伦:关于海外潮学研究的几点看法和建议
2012-01-16 03:21 1268林 伦 伦:关于海外潮学研究的几点看法和建议 2011年03 ... -
011-5-20越南平阳沉船惨案陈述
2012-01-16 03:21 632011-5-20越南平阳沉船惨案陈述 2011年05月30日 ...
相关推荐
跨平台测试 优势 如果您拥有多份 eggPlant 许可证,eggPlant Manager 将为您提供以下优势。 • 简单易用:通过您的 web 浏览器进行访问。 • 易于部署:您可以在您测试周期的任何阶段安装并激活 eggPlant Manager。...
自动化统一安装部署,包括:上传解压war包、同步配置、启动服务、监控服务等。 list.ll one.sh pass.war startup.sh syn.cn two.sh 部署支持统一安装于分布式安装,每个脚本可以拆分开任意组合使用,比如: ...
该项目旨在创建一个易于使用、高效且跨平台的库,为开发者提供实现计算机视觉算法所需的基础工具。 社区与支持:随着时间的推移,OpenCV吸引了全球众多开发者和研究人员的参与,形成了活跃的社区。目前,OpenCV由...
Jenkins、Travis CI、GitHub Actions等工具负责自动化构建、测试和部署流程,提高交付效率和可靠性。 数据库管理与ORM工具: 数据库客户端工具用于连接、查询、更新数据库,ORM(对象关系映射)工具简化了数据...
Python使用技巧,实战应用...详细介绍了一些Python框架的各种功能和模块,以及如何使用Python进行GUI开发、网络编程和跨平台应用开发等。 适用于初学者和有经验的开发者,能够帮助你快速上手JPython并掌握其高级特性。
Jenkins、Travis CI、GitHub Actions等工具负责自动化构建、测试和部署流程,提高交付效率和可靠性。 数据库管理与ORM工具: 数据库客户端工具用于连接、查询、更新数据库,ORM(对象关系映射)工具简化了数据...
Jenkins、Travis CI、GitHub Actions等工具负责自动化构建、测试和部署流程,提高交付效率和可靠性。 数据库管理与ORM工具: 数据库客户端工具用于连接、查询、更新数据库,ORM(对象关系映射)工具简化了数据...
自述文件Flubu 示例这些示例将帮助您快速开始使用 FlubuCore: - 示例涵盖版本控制、构建项目、运行测试、打包应用程序以进行部署。 - 示例涵盖版本控制、构建项目、运行测试、打包应用程序以进行部署。 - 示例展示...
Apache Ant是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的自动化构建。它是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点: 跨平台性。Ant是纯Java语言...
腾讯蓝鲸智云自主研发的管控平台,支持全球 20W+ 主机节点的跨云管控,再配合配置管理、作业执行、容器管理、标准运维、监控告警、故障自愈等能力,极大提升了运维自动化程度,进一步为业务的持续部署能力保驾护航。...
apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具, 大多用于Java环境中的软件开发。由Apache软件基金会所提供。 Ant它有以下的优点。跨平台性。Ant是纯Java语言编写的,所以具有很好...
2、易于使用,构建过程自动化. 3、跨平台,java类路径和目录结构都是以可移植的方式处理. 4、速度快,向编译和打包这样的java常规工作都可以在ant的jvm中进行,节省了启动其他jvm所耗费的时间. 5、集成junit,适合...
Ant是一个基于Java的,将软件工程的编译、测试、部署等步骤联系在一起并加以自动化的构建工具。与make工具有几分相似,但又优化了一些make工具所具有的缺陷。它可以跨平台运行,使用简单方便。 Ant主要用来编译、...
Jenkins、Travis CI、GitHub Actions等工具负责自动化构建、测试和部署流程,提高交付效率和可靠性。 数据库管理与ORM工具: 数据库客户端工具用于连接、查询、更新数据库,ORM(对象关系映射)工具简化了数据...
Jenkins、Travis CI、GitHub Actions等工具负责自动化构建、测试和部署流程,提高交付效率和可靠性。 数据库管理与ORM工具: 数据库客户端工具用于连接、查询、更新数据库,ORM(对象关系映射)工具简化了数据...
本墙绘产品展示交易平台利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发.墙绘产品展示交易平台的开发根据操作人员需要设计的界面...
跨平台性、可移植性、可扩展性,基于B/S架构,通过浏览器即可访问 一套流程自动化规范,轻松快捷实现流程自动化 二次开发,打造自定义拖拽流程控件,让流程自动化更贴近需求 WEB SSH,通过浏览器即可与Linux交互,...
Jenkins、Travis CI、GitHub Actions等工具负责自动化构建、测试和部署流程,提高交付效率和可靠性。 数据库管理与ORM工具: 数据库客户端工具用于连接、查询、更新数据库,ORM(对象关系映射)工具简化了数据...
基于playwright的一个WEB自动化测试工具 目前功能还在不断迭代,欢迎PR以及反馈问题、建议 home dark report 特性和亮点 用例管理 并发执行 定时执行 用例执行报告 服务端部署 多平台客户端支持 windows mac ...
压缩包内包含:本地安装应用程序,及实战手册文档,手把手带你搭建测试集群及集群的可视化检测。... 它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。 它支持一系列容器工具,包括Docker等。