技术开发 频道

使用CruiseControl和STAF建立复杂环境下的编译和测试自动化

【IT168 技术文章】

    介绍

    持续集成能够使开发人员和测试人员在同一个最新的版本上工作。CruiseControl 是现在流行的持续集成的软件。自动化测试能够大大减轻测试人员的工作量,减少测试过程中人为出现的错误。STAF (STAX) 是一个轻量级的自动化测试框架。

    本文结合 CruiseControl 和 STAF (STAX) 来介绍一个复杂环境下的自动化测试方案。我们使用 CruiseControl 作为自动化测试的入口和调度器,用它来控制 STAX 任务的执行。STAX 通过 STAX 复杂对测试代码进行分发、编译、部署和测试。在整个测试过程中,我们不仅可以使用 JUnit 测试用例来测试代码,而且可以使用其他方式的测试用例来测试,比如 Rational Functional Tester 脚本,Robot 脚本等。

    场景介绍

    本文使用一个简化了的复杂应用场景作为运行自动测试解决方案的环境。 该应用由一个提供简单 Echo Service 的 WebService 和一个 Web 界面的 WebService 客户端组成。 用户既可以使用程序来直接访问该 WebService 也以通过在浏览器中操作该客户端来访问 WebService 提供的服务。在访问 WebService 和客户端之前,用户都需要经过身份验证来声明自己的身份。

    WebService 和客户端分别运行于 Windows 和 Linux 平台上的 WebSphere 应用服务器之上。在 WebSphere 应用服务器上需要配置登录认证模块来实现用户访问前的身份认证。

    在这一应用场景中,测试团队经过分析,对自动化功能测试提出了以下需求:

    WebService 和客户端需要分别进行功能测试。
    开发团队提供了用于配置应用程序登录模块 (LoginModule) 的自动配置部署脚本,该脚本被发布到一个 FTP 服务器上。
    WebService 和客户端的源代码以及测试脚本的源代码都存放在 CVS 上,需要在测试执行前进行自动更新。
    自动化测试执行需要每天自动定时运行。
    测试执行的结果包括执行日志需要被测试团队和开发团队及时访问到。
    自动化测试方案的设计

    部署脚本库是指发布配置登录模块的脚本的服务器。在本文中,是一个 FTP 服务器。

    源代码库是指发布被测试应用程序源代码以及测试相关源代码的服务器。在本文中,WebService 和客户端的源代码以及测试脚本的源代码都被发布在一个 CVS 服务器上。

    定时器设置每天特定时间触发,本文中,定时器的功能是 CruiseControl 提供的。

    自动编译工具将从源代码库中获取的测试代码和被测试代码进行编译。本文中,使用CruiseControl 结合 Ant 作为自动编译工具。

    测试自动化框架负责将编译完成的被测试代码和测试代码部署到测试环境中,并调用测试自动化执行工具来执行测试。在测试执行介绍后,框架还需要收集相应的执行日志,并将执行结果和日志交由 CruiseControl 进行发布,以供测试和开发人员参考。在本文中,测试框架采用了开源的 STAF、STAX 框架。

    测试执行工具是指进行测试的各种测试工具,本文中,测试工具使用了 JUnit,RFT 等。

    测试环境是指运行被测试代码和测试脚本的环境。在实际应用中测试环境既可能是一个简单的Windows 服务器,也可能是由许多不同平台,不同类型的服务器组成的复杂环境。本文中,测试环境包括了不同版本不同平台的 WebSphere Application Server,以及运行测试脚本的一台服务器。

    测试报表工具是将测试执行结果和日志进行呈现的工具。由于测试过程完全自动进行,只有将测试结果和日志尽可能清晰的展示在测试和开发人员面前,才能充分发挥自动测试的作用。

    从上面对各个逻辑组件的描述中可以看出,测试框架在整个自动化测试方案中位于核心位置。它像控制器一样管控着其他各个组件,同时又像胶水一样把各个组件连结起来协同工作。

    在分析了测试自动化需求和逻辑组件之后,我们可以给出具体的测试方案设计。

    控制机上安装了 CruiseControl 和 STAF、STAX 框架两套工具。

    编译机上安装了编译工具 Ant 以及测试执行工具 Junit 和 RFT。 其中 JUnit 测试脚本用来测试 WebService,而 RFT 测试脚本则用来测试和操作客户端。

    测试机 1 和测试机 2 则分别用来运行 WebService 和客户端。

    该测试方案的具体执行步骤如下:

    CruiseControl 服务器在每日指定的时间自动从 CVS 服务器获取最新测试代码,完成后 CruiseControl 服务器执行一个批处理命令来启动一个 STAF 任务。
    该 STAF 任务从 FTP 服务器下载最新配置登录模块的脚本到本地目录。
    STAF 将 WebSerivce 和客户端的源代码,测试脚本源代码,以及测试代码分发到编译机上。
    STAF 在编译机上调用编译工具 Ant 来编译被测试代码(编译出包含 WebService 的 war 和包含客户端的 war ),测试脚本源代码。
    STAF 将编译出的运行时代码 (war) 通过 WAS 远程命令部署到测试机1,2中。
    STAF 将配置登录模块的脚本发布到测试机1,2中,并分别在测试机上运行该脚本来配置登录模块。
    STAF 在编译机上调用 JUnit 和 RFT 来运行测试代码。
    STAF 将测试结果送回控制机并显示。
    使用的产品和技术

    STAF/STAX  

    软件测试自动化框架( Software Testing Automation Framework,简称 STAF )是一个开源的测试自动化框架,它的设计核心理念是称为“服务”的可重用组件(例如,进程调用,资源管理,日志和监控等)。 STAX 是构建在 STAF,XML 和 Python 语言之上的执行引擎,它的出现大大的简化了测试人员的实现测试自动化的工作。STAX 同时还提供了一个强大的图形界面监控程序,使用该监控程序你可以监控并控制正在 STAF 框架中执行的任务。

    本文STAF / STAX 脚本一章详细介绍了在如何使用 STAF/STAX。

    CruiseControl

    CruiseControl 是一个被广泛使用的用于软件持续集成的开源框架。 所谓软件的持续集成( Continuous Integration )是指一种软件开发团队频繁的将他们各自开发的组件进行集成的实践。通过软件的持续集成可以尽早的发现错误,并降低最终集成时所耗费的时间和精力。

    本文配置 CruiseControl 一章详细介绍了如何配置和使用 CruiseControl。

0
相关文章