SOA组合业务服务的自动化测试(三)

日期: 2009-03-30 作者:宋玉红袁俊峰杨晢 来源:TechTarget中国 英文

  本系列文章的第一部分介绍了如何自动安装部署SOA的测试环境; 第二部分介绍了SOA组件的自动化部署。本部分将着重介绍将SOA Build自动部署完成之后,如何进行SOA的自动化测试。

  介绍

  对于SOA的功能测试我们要分三层的测试:第一层是用RFT(Rational Functional Tester)进行UI界面层的测试;第二层和第三层是用Junit进行Business Process层和Service层的测试。性能测试方面,用RPT(Rational Performance Tester)进行UI界面层的测试,而RPT for SOA用Business Process层和Service层的性能测试

  UI界面层的自动化测试用例

  (1)用RFT来录制的UI层的测试用例脚本。

  使用RFT开发自动化测试脚本的过程大致是:录制对象映射,使用对象映射对GUI对象进行操作从而完成自动化测试。

              

  图3.1 RFT流程图
   
  (2)使用RFT UI测试框架来编写测试脚本。

  有了这套框架可以为你的自动化测试项目提供以下帮助:

  ·加速脚本编写;
  ·快速调试以及易于维护;
  ·代码重用;
  ·很好的组织脚本文件;
  ·帮助协作;
  ·从他人经验得到益处;

  这套框架由以下三个部分组成:通过Appobjects,Tasks以及Testcases来实现三层架构;ibm工具包;以及配套的最佳实践。

  Appobjects用于存储关于应用程序GUI元素的信息。在appobjects里面你将写一些getter方法,这些getter方法返回对象给调用者,这些对象将用于查询和操作GUI元素。一般,这些getter方法将在tasks层调用。

  Tasks用于写一些可重用的方法,这些方法将对应用程序执行一些操作。如果需要操作和查询复杂的特定于某应用程序的控件,也可以写在tasks的方法中。Tasks包里的方法将被testcases调用。

  Testcases便是最终的测试用例。它们将操作应用程序、验证其状态以及记录下结果。

  (3)使用RPT( Rational Performance Tester)来录制自动化测试用例脚本。

  Rational Performance Tester(简称RPT)是IBM基于Eclipse平台及开源的测试及监控框架Hyades,开发出来的最新性能测试解决方案,总体架构如图一所示。它可以有效地帮助测试人员和性能工程师验证系统的性能,识别和解决各种性能问题。它适用于性能测试人员和性能优化人员,用于开发团队在部署基于HTTP和HTTPs通信协议的Web应用程序前,验证其可扩展性、性能和可靠性。

  Business Process和Service层自动化测试用例

  在Business Process和Service层,业务接口通常以SCA或Web Service的接口暴露出来。在功能测试阶段,有很多编写测试用例的工具,这里我们使用JUnit来编写测试用例脚本。JUnit是一个易用的,灵活的,开源的,测试平台。就像所有其他项目一样,它有很多优点,但也有不足之处。通过使用无需人工干预的JUnit自动测试平台,我们很容易累积起大量的JUnit测试程序从而保证以往的错误不会重现。另外,JUnit便于和编译单元(如,Ant)以及IDE单元(如,Eclipse)集成。JUnit中有两个基本对象,TestCase和TestSuite。TestCase通过提供一组方法来实现一系列测试。例如,setup()方法用来在每项测试开始前建立测试所需的测试环境,而teardown()方法用来在测试后销毁该环境。TestSuite是由几个TestCase或其他的TestSuite构成的。你可以很容易的构成一个树形测试,每个测试都由持有另外一些测试的TestSuite来构成。被加入到TestSuite中的测试在一个线程上依次被执行。

  在性能测试阶段,我们使用RPT for SOA(Rational Performance Tester for SOA)来编写调用服务的脚本。

  RPT for SOA Extension根据WSDL进行语法解析,生成参数输入界面。测试人员可输入测试数据,RPT Recorder会捕获到进行Web Service通信的协议内容,并记录到脚本中(如图3.2)。

         

  图3.2 RPT for SOA界面图
 
  自动化测试用例执行脚本介绍

  本文的第二部分介绍了测试build的自动卸载和安装部署。本部分介绍在新的build自动安装部署完成后,自动执行测试用例并将测试结果发给相关人员。

  若要实现测试用例的自动执行,需要在第二部分中的buildToTest.py文件中添加四个重要任务:

  ·判断Build是否安装成功

  系统获取服务器profile下的configcellslocalhostNode03Cellapplications中已安装的ear文件,判断是否所有应该安装的ear文件都在其中,并且判断这些文件的Date Modified时间是否是当天。若从该文件夹下查询到所有的ear文件,说明新Build已成功安装。

  ·执行测试用例并且获取测试结果

  在测试用例完成后,编写一个Servlet调用本Junit编写的测试用例。系统通过

sock=urllib.urlopen(“http://localhost:9082/cbs.service.test.web/CBSServiceTestRunner?
|–10——–20——–30——–40——–50——–60——–70——–80——–9|
|——– XML error:  The previous line is longer than the max of 90 characters ———|
suite=com.ibm.cbs.service.test.suite.CBSServiceSuite&xsl=cactus-report.xsl”)

  测试用例被执行并且将结果按照cactus-report.xsl的格式组织。获取测试结果后,系统将结果写入ServletTestRunner.xml文件中。

htmlSource = sock.read()
sock.close()
resultfile=open(top_dir+’/BuildScript-CMI-Service/ftp/’+currentTime+
                   ‘/ServletTestRunner.xml’, ‘w’)
resultfile.write(htmlSource)
resultfile.close()
 
  ·发送邮件

  系统调用sendEmail.bat将测试结果发送给相关人员。

os.putenv(‘bvt_ir’,’OK’)
sendEmail = os.system(os.path.join(top_dir, “BuildScript-CMI-Service”, “sendEmail.bat”))
|–10——–20——–30——–40——–50——–60——–70——–80——–9|
|——– XML error:  The previous line is longer than the max of 90 characters ———|
 
sendEmail.bat:

call C:Apacheapache-ant-1.6.2binant.bat -Dbvt.ir=%bvt_ir% -logfile sendEmail.log
-buildfile C:BuildScript-CMIV1R3BuildScript-CMI-ServiceotherTargets.xml send-mail
 
  ·若Build并未安装成功,则发送错误信息邮件给相关人员。call C:Apacheapache-ant-1.6.2binant.bat -logfile sendErrorEmail.log -buildfile
 C:BuildScript-newICMS-CBS_Merge-ServiceotherTargets.xml send-error-mail
 
otherTargets.xml中定义了send-mail和send-error-mail的格式和内容

<target name=”send-mail”>
 <tstamp>
  <format property=”build.time” pattern=”yyyyMMddHH” locale=”en”/>
 </tstamp>
 <mail mailhost=”xxx.xxx.xxx.xxx” subject=”Daily Build Announcement For CMIV1R3
   ${build.time}”
 tolist=”xxx@cn.ibm.com,xxx@cn.ibm.com,xxx@cn.ibm.com”  
  messagemimetype=”text/plain”>
  <from address=”xxxx@cn.ibm.com”/>
  <replyto address=”xxxx@cn.ibm.com”/>
<message>Hi All,
The build summary is as below,
Ear Name   Build Status BVT Status
xxx.xxx.xxx.xxx.ear Okey ${bvt.ir}
xxx.xxx.xxx.xxx.ear Okey ${bvt.ir}
…..
Pls. kindly find the daily build and bvt results as below,
 http://xxx.xxx.xxx.xxx/ICMS/CMIV1R3/${build.time}
 http:// xxx.xxx.xxx.xxx /ICMS/CMIV1R3/${build.time}/ServletTestRunner.xml
 
Best Regards
</message>
</mail>
</target>
 
  统计执行结果

  ServletTestRunner.xml中统计了测试结果 :

            
 
  图3.3 Service层功能测试结果
 
  测试结果中统计了测试用例的数目,执行失败的用例数目,成功执行的测试用例的百分比,和执行用例所消耗的时间。测试人员可以根据总结报告查询执行失败的测试用例。

  总结

  本文介绍了SOA的自动化测试的框架。这个自动执行测试用例的框架也可以调用其它语言脚本编写的测试用例。此框架大量节约了测试人员的时间,实现了SOA的自动化测试。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐