介绍
对于 SOA 的功能测试我们要分三层的测试:第一层是用 RFT(Rational Functional Tester)进行 UI 界面层的测试;第二层和第三层是用 Junit 进行 Business Process 层和 Service 层的测试。性能测试方面,用 RPTA(Rational Performance Tester)进行 UI 界面层的测试,而 RPT for SOA 用 Business Process 层和 Service 层的性能测试
UI 界面层的自动化测试用例
(1)用 RFT 来录制的 UI 层的测试用例脚本。
使用 RFT 开发自动化测试脚本的过程大致是:录制对象映射,使用对象映射对 GUI 对象进行操作从而完成自动化测试。
图 3.1 RFT 流程图
(2)使用RFTUI测试框架来编写测试脚本。
有了这套框架可以为你的自动化测试项目提供以下帮助:加速脚本编写;
快速调试以及易于维护;
代码重用;
很好的组织脚本文件;
帮助协作;
从他人经验得到益处;
这套框架由以下三个部分组成:通过Appobjects,Tasks以及Testcases来实现三层架构;ibm工具包;以及配套的最佳实践。
Appobjects用于存储关于应用程序GUI元素的信息。在appobjects里面你将写一些getter方法,这些getter方法返回对象给调用者,这些对象将用于查询和操作GUI元素。一般,这些getter方法将在tasks层调用。
Tasks用于写一些可重用的方法,这些方法将对应用程序执行一些操作。如果需要操作和查询复杂的特定于某应用程序的控件,也可以写在tasks的方法中。Tasks包里的方法将被testcases调用。
Testcases便是最终的测试用例。它们将操作应用程序、验证其状态以及记录下结果。
(3)使用RPT(RationalPerformanceTester)来录制自动化测试用例脚本。
RationalPerformanceTester(简称RPT)是IBM基于Eclipse平台及开源的测试及监控框架Hyades,开发出来的最新性能测试解决方案,总体架构如图一所示。它可以有效地帮助测试人员和性能工程师验证系统的性能,识别和解决各种性能问题。它适用于性能测试人员和性能优化人员,用于开发团队在部署基于HTTP和HTTPs通信协议的Web应用程序前,验证其可扩展性、性能和可靠性。
BusinessProcess和Service层自动化测试用例
在BusinessProcess和Service层,业务接口通常以SCA或WebService的接口暴露出来。在功能测试阶段,有很多编写测试用例的工具,这里我们使用JUnit来编写测试用例脚本。JUnit是一个易用的,灵活的,开源的,测试平台。就像所有其他项目一样,它有很多优点,但也有不足之处。通过使用无需人工干预的JUnit自动测试平台,我们很容易累积起大量的JUnit测试程序从而保证以往的错误不会重现。另外,JUnit便于和编译单元(如,Ant)以及IDE单元(如,Eclipse)集成。JUnit中有两个基本对象,TestCase和TestSuite。TestCase通过提供一组方法来实现一系列测试。例如,setup()方法用来在每项测试开始前建立测试所需的测试环境,而teardown()方法用来在测试后销毁该环境。TestSuite是由几个TestCase或其他的TestSuite构成的。你可以很容易的构成一个树形测试,每个测试都由持有另外一些测试的TestSuite来构成。被加入到TestSuite中的测试在一个线程上依次被执行。
在性能测试阶段,我们使用RPTforSOA(RationalPerformanceTesterforSOA)来编写调用服务的脚本。
RPTforSOAExtension根据WSDL进行语法解析,生成参数输入界面。测试人员可输入测试数据,RPTRecorder会捕获到进行WebService通信的协议内容,并记录到脚本中(如图3.2)。
图3.2RPTforSOA界面图
自动化测试用例执行脚本介绍
本文的第二部分介绍了测试 build 的自动卸载和安装部署。本部分介绍在新的 build 自动安装部署完成后,自动执行测试用例并将测试结果发给相关人员。
若要实现测试用例的自动执行,需要在第二部分中的 buildToTest.py 文件中添加四个重要任务:
判断 Build 是否安装成功
系统获取服务器 profile 下的 \config\cells\localhostNode03Cell\applications 中已安装的 ear 文件,判断是否所有应该安装的 ear 文件都在其中,并且判断这些文件的 Date Modified 时间是否是当天。若从该文件夹下查询到所有的 ear 文件,说明新 Build 已成功安装。