更多的文章,访问我的个人博客:www.cesoo.info

分布式自动化测试框架Automatjion Center设计介绍

上一篇 / 下一篇  2010-11-25 11:25:39 / 个人分类:自动化测试框架

1.  AC介绍

1.1. AC架构示意

ACTest Job Object Model测试任务模型)为核心,以Test Job File(测试任务文件)为输入,根据Job type启动不同类型的测试引擎,执行测试任务,最后输出一份基于html自动化测试报告。如图:

b-KCOKd9XUY6E0

51Testing软件测试网A,f Q?MYL

                1-1 Automation Center结构示意图

6s!G7] t;A g0

AC目前支持五种主流测试引擎,AntJavaSelniumQTPJunit,这意味着,AC的用户可以将这些不同类型的测试脚本统一集成到AC中进行管理,调度和执行,最后形成一份自动化测试报告。

%AQ-B4}5bD0

同时,JobEngine是基于Javainterface接口技术开发,因此,AC的用户也可以根据自己的需求对JobEngine进行扩展,开发不同Engine,比如RobotEnginesilkEngine等等。

A9rx8V3n uKnD z0

1.2 Test Job Object Model(测试任务模型)

TestJobObject ModelAC的运行核心,它是一个树形结构,每个TestJob下包含多个属性和对象,结构图如下:

Y ~)U$V)k8n5q_0

`Q[)xEhT+P!k0

              1-2 TestJobObject架构图

/Y!e/{j8~Ar5rAJD0

1. TestJob的模型构建

一个TestJob有如下属性信息:51Testing软件测试网W?T\:EyA

nameTestJob的名称

,X9Ci7_$b0

descriptionTestJob的描述信息

&b4Lo xb9XP0

dependsTestJob的依赖信息。比如在TestJob Adepends定义为Test Job B,则AC会首先运行B,并根据B的成败,判断是否执行A

?MK ^Jjw0

driver_type:TestJob的引擎类型,AC会根据此字段启动对应类型的JobEngine51Testing软件测试网%b9r{'j Spd~[q:?

 

E J u b"s7T0

一个TestJob还可以包含以下一个或多个附属对象:

Ll^n8z Xi1T^0

<JobInput>:测试任务输入信息,在本Test Job开始执行之时,AC会检查其所有JobInput是否已经准备好。

A?(a#H1|#Qi5A0

<JobOutput>测试任务输出信息,在本Test Job结束执行之后,AC会检查其所有的JobOutput是否都已经按照定义输出。

,?hQ}v0

<PropFile>环境文件,遵循Java Properties定义规范,和测试环境相关的信息,比如被测服务器地址,测试帐号及口令等等。

o M3LSbovu)_/l'o x0

<ConfFile>AC配置文件,遵循java Proeprties定义规范,和任务设置相关的信息,比如测试超时时间,重复运行次数等等。

,Dj f ^$a i,m0

<TestData>测试数据,支持xslxml两种数据格式。AC会在Test Job执行的时候加载测试数据,供Test Case使用。51Testing软件测试网+X K6@ F!qH1m

<Lib>QTP TestJob专用,AC在启动QTPjob时,会加载相应的lib文件

@`~8tFy0

<ClassPath>:Java TestJob专用,AC在运行java job时,会调用classloader将所引用到的jar包装载至jvm中。51Testing软件测试网tl[/U5Ft{F

另外,TestJob同时还是一个递归的自定义结构,这意味着一个Test Job下可以递归包含若干个子Test Job,这种TestJob又称作抽象JobAC在运行抽象Job时,会首先递归运行其下的所有子TestJob,然后分析这些TestJob的结果状态,最终确定抽象Job的运行结果状态。

{|:gUp a"m0k(ho0

抽象Job和实体Job在定义时唯一不同之处是,实体Job的属性会指定driver_type引擎类型,而抽象Job则没有driver_type属性或者为空。AC通过driver_type的值来决定是否应该启动相应的JobEngine51Testing软件测试网}G)|}Ks

2.  TestJob文件示例

使用xml文件来定义TestJob,以下是一个TestJobFile.xml示例:

;x9y-P"F(gG*Bc0

<TestJob name=”机票预定系统测试” description="测试机票系统安装,登录,预定等功能" depends="">

*?6?(t3HH0

<PropFile name="$ENV" location="serverInfo.xml"/>

#{~ s)P T#B7w4X ^+bm0

<ConfFile name="$CONFIG" location="config.xml"/>

fcaN*e)p'[/f0

        <Javaname="getTestCaseFromCVS" description="使用java程序从cvs中获得相应的测试代码" depends="" driver_type="JAVA">

l m f5|Y/|~0

                  <ClassPath location=”javacase/jar/cvsLoader.jar”/>51Testing软件测试网(oXQ9ry*I I

                  <JobOutput name="$TESTVERSION"/>

LP A,a5L,n ?:p8^0

                  <Run path="cvsLoader.getFiles ">51Testing软件测试网/mp0Nw'V+Q2i

                  </Run>

n%yJ)c%h8_,D}+kn!o S0

        </Java>

]B[v%MRM0

        <VBSname="VBS_Install_Client" description="使用VBScript脚本完成机票系统客户端的安装" depends="getTestCaseFromCVS"driver_type="VBScript">51Testing软件测试网;rZF$Y'O`)K$v

                  <Lib location=”common\lib\lib_install.vbs”/>51Testing软件测试网\v1Fa2@6N+L d

                  <Run path="testcase\vbs\install_client.vbs"></Run>

g4c2H i8FNE ]}$T0

        </VBS>51Testing软件测试网{0a S:hC.P3`|I

<QTPname="QTP_bookFlight" description="调用QTP脚本完成机票的预定" depends=" VBS_Install_Client"driver_type="QTP”>51Testing软件测试网c7C6ayv${/cJP

        <JobOutput name="$FlightNo"/>

Nh6Fhiga H0

<JobOutput name="$CustomerName"/>51Testing软件测试网2F9cvq*D

                  <Lib location=”common\lib\lib_utilityvbs”/>51Testing软件测试网w9j'f4P-gZ F

                  <Run path="testcase\qtp\qtp_bookFlight"></Run>

?!|YXW,A]~1E0

        </QTP>

me [l&P ?8c1j3p0

<Seleniumname="Selenium_queryFlighOnWeb" description="调用Selenium脚本通过web查询订单的信息是否正确" depends="QTP_bookFlight"driver_type="SELENIUM”>

|kuXp,j*] k*i?0

<ClassPath location=”seleniumcase/web/selcase.jar”/>

2hFRmi\0

<JobInput name="$FlightNo"/>51Testing软件测试网6Jd"rdz n

<JobInput name="$CustomerName"/>

Tz+b1LW8wV Y)B]0

                  <Run path="selcase.checkWeb"></Run>51Testing软件测试网5j yw7eJ6kK

        </Selenium>

/xtP:~iEHCT?mC0

</TestJob>51Testing软件测试网Jj"w*A_2l['^

 

@ Nez:}%p Q+kj5A}0

以上TestJob文件描述了一个机票系统的完整的自动化测试流程,总计包含4个不同类型的TestJob,分别为getTestCaseFromCVSVBS_Install_ClientQTP_bookFlightSelenium_queryFlighOnWebTestJobdepends定义揭示了AC的运行过程:51Testing软件测试网 \oF%F sg9Rs

1AC会首先运行名为getTestCaseFromCVSjava测试案例,getTestCaseFromCVS从代码管理系统cvs中下载测试案例代码到本地。为后续的案例运行准备好执行环境。51Testing软件测试网_`M5l7^'J!?r5u

(2) VBS_Install_ClientVbscript脚本负责在本机windows上安装订机票客户端。51Testing软件测试网"g MR,y^.e

3QTP脚本QTP_bookFlight下了一张机票订单,并将订单号和乘客名输出。51Testing软件测试网.zgh'O&Z$J+Y

4)订单号和乘客名成为Selenium_queryFlighOnWeb的输入参数,Selenium脚本则完成web页面订单的查询和验证。51Testing软件测试网K!UesD kXs C


TAG:

 

评分:0

我来说两句

Open Toolbar