跳转到主要内容

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

所有提交的信息确保安全。

  • 关闭 [x]

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

所有提交的信息确保安全。

  • 关闭 [x]

SOA 组合业务服务的自动化测试:第 3 部分

宋 玉红 (songyuh@cn.ibm.com), 软件工程师, WSO2 Inc
http://www.ibm.com/developerworks/cn/webservices/0810_CBS_1/syh.jpg
宋玉红,2007 年研究生毕业于北京航空航天大学,毕业后就职于 IBM Global Business Solution Center ,主要从事于 SOA 解决方案的测试。
袁 俊峰 (yuanjunf@cn.ibm.com), 软件工程师, WSO2 Inc
/developerworks/cn/webservices/0810_CBS_1/yjf.jpg
袁俊峰,2008 年研究生毕业于北京邮电大学网络与交互国家重点实验室,毕业后就职于 IBM Global Business Solution Center ,从事过 SOA 项目的开发和测试,目前主要从事 Asset Reuse 的工作。
杨 晢 (acewe@126.com), IBM 实习生, 北京邮电大学
/developerworks/cn/webservices/0810_CBS_1/yz.JPG
杨晢,北京邮电大学软件工程硕士,2007.3~2008.1在IBM中国开发实验室 Global Business Solution Centre 实习,期间从事SOA测试相关的工作。作者曾涉及的领域有软件测试自动化,软件测试流程,信息系统安全测评等,目前主要从事金融信息系统的开发与运维。

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

发布日期: 2008 年 10 月 27 日
访问情况 : 1240 次浏览
评论: 


介绍

对于 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 文件中添加四个重要任务:

  1. 判断 Build 是否安装成功

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

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

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

    sock=urllib.urlopen("
    http://localhost:9082/cbs.service.test.web/CBSServiceTestRunner? 
    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()
    

  3. 发送邮件

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

    os.putenv('bvt_ir','OK')
    sendEmail = os.system(os.path.join(top_dir, "BuildScript-CMI-Service", 
    "sendEmail.bat"))
    

    sendEmail.bat:

    call C:\Apache\apache-ant-1.6.2\bin\ant.bat -Dbvt.ir=%bvt_ir% -logfile sendEmail.log 
    -buildfile C:\BuildScript-CMIV1R3\BuildScript-CMI-Service\otherTargets.xml send-mail
    

  4. 若 Build 并未安装成功,则发送错误信息邮件给相关人员。
    call C:\Apache\apache-ant-1.6.2\bin\ant.bat -logfile sendErrorEmail.log -buildfile
     C:\BuildScript-new\ICMS-CBS_Merge-Service\otherTargets.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 的自动化测试。


参考资料

学习

获得产品和技术

  • 使用 IBM 试用软件 开发您的下一个项目,可下载或索取 DVD 光盘。

讨论

作者简介

http://www.ibm.com/developerworks/cn/webservices/0810_CBS_1/syh.jpg

宋玉红,2007 年研究生毕业于北京航空航天大学,毕业后就职于 IBM Global Business Solution Center ,主要从事于 SOA 解决方案的测试。

/developerworks/cn/webservices/0810_CBS_1/yjf.jpg

袁俊峰,2008 年研究生毕业于北京邮电大学网络与交互国家重点实验室,毕业后就职于 IBM Global Business Solution Center ,从事过 SOA 项目的开发和测试,目前主要从事 Asset Reuse 的工作。

/developerworks/cn/webservices/0810_CBS_1/yz.JPG

杨晢,北京邮电大学软件工程硕士,2007.3~2008.1在IBM中国开发实验室 Global Business Solution Centre 实习,期间从事SOA测试相关的工作。作者曾涉及的领域有软件测试自动化,软件测试流程,信息系统安全测评等,目前主要从事金融信息系统的开发与运维。

关于报告滥用的帮助

报告滥用

谢谢! 此内容已经标识给管理员注意。


关于报告滥用的帮助

报告滥用

报告滥用提交失败。 请稍后重试。


developerWorks:登录


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 使用条款

 


当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

请选择您的昵称:

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

(长度在 3 至 31 个字符之间)


单击提交则表示您同意developerWorks 的条款和条件。 使用条款.

 


为本文评分

评论

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=SOA and Web services, Rational
ArticleID=347884
ArticleTitle=SOA 组合业务服务的自动化测试:第 3 部分
publish-date=10272008
author1-email=songyuh@cn.ibm.com
author1-email-cc=
author2-email=yuanjunf@cn.ibm.com
author2-email-cc=
author3-email=acewe@126.com
author3-email-cc=

标签

Help
使用 搜索 文本框在 My developerWorks 中查找包含该标签的所有内容。

使用 滑动条 调节标签的数量。

热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。

我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。

使用搜索文本框在 My developerWorks 中查找包含该标签的所有内容。热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。