将SOAtest回归测试融入到持续集成测试中
Posted Parasoft
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将SOAtest回归测试融入到持续集成测试中相关的知识,希望对你有一定的参考价值。
防止产品退化的同时实现高效开发
持续集成 (“CI”) 是一个被广泛采纳的著名的开发测试理念。对于显著提高应用程序交付速度,它是不可或缺的第一步。
持续集成允许开发人员将他们的代码改动加入到代码的主分支中,一个开发者一天之内可以向主分支中加入很多改动。为了确保主分支的纯净、可构建以及高质量,每次改动后对代码进行测试是非常重要的,因为主分支是应用程序代码中极其重要的一部份。
(如果你想要了解更多的关于持续集成的内容,我建议你阅读Martin Fowler过去写的一篇文章,它是关于软件开发中应用持续集成的历史和CI的最佳实践的,时至今日,依然被开发团队广为采纳。)
在这篇文章中,我将会讲述将SOAtest与时下非常流行的自动化平台Jenkins集成的步骤。我们将会使用开源的Parabank项目并用Docker来部署它,这样会使事情变得更加简单。
如何实现这项工作
下面的图表解释了我们将在本文中设置的内容。最好从左到右来阅读
简而言之,Jenkins将会从GitHub上检出一个包含SOAtest项目的资源库,这个项目名为“Parabank”,其中含有REST测试。Jenkins也将会从Docker Hub上拉下来一个Docker映像,名为Parasoft/Parabank。这个镜像中不仅包含Parabank,而且还包括Tomcat和匹配的Java运行时环境。
Jenkins随后将会运行这个Parabank镜像的实例(称为一个容器),然后通知SOAtest去运行这些从GitHub拉下来的测试以便于我们验证Parabank实例。
现在,它并不符合真正的持续集成测试精神(因为我给你了一个预先构建好的应用程序),但我是想通过Docker来省去你用Maven来构建Parabank以及安装配置Tomcat和Java的一系列繁琐步骤。
一种更接近真实情况的持续集成测试如下图所示。开发者将源码检入GitHub。现在我们想要测试应用程序是否在经过开发人员改动后仍然是良好的状态。
GitHub上的源代码改变触发Jenkins的一次构建,Jenkins自动开始Maven构建(包括执行Junit测试)。如果所有的单元测试均通过,那么应用程序将会被打包部署到Tomcat上。然后SOAtest开始执行功能性的“黑盒测试”。
只有当单元测试(Maven构建期间)和功能性“黑盒测试”(SOAtest执行期间)都通过了以后,开发人员的代码改动才会被认为的是良好的。
让我们了解一下在第一个图中配置流程所必需的步骤!
配置 SOAtest 和 Jenkins
先决条件:
一台能够运行Docker的Windows10机器(如果是其他操作系统,文章中的一些命令的语法格式可能会不同)。这台机器可以联网。
安装Jenkins 1.651 或以上版本
安装SOAtest 9.10 或更新版本并添加到环境变量 (以便于在任何目录下调用 soatestcli 命令)
安装Docker并且添加环境变量.
步骤:
2. 我们首先安装一些Jenkins插件。选中左侧“Manage Jenkins”,然后在新出现的菜单中选择“Manage Plugins”。
3. 在“Available”标签下,选择并安装如下插件:
a.“Parasoft Findings”
b.“Git plugin”(version 3.30)
选择“Install without Restart”并在随后的安装页面勾选“Restart Jenkins when installation is complete and no jobs are running”项
4. 返回步骤1中的Jenkins主菜单,在左侧选择“New Item”
5. 输入“Parabank Deploy and Test”作为项目名称,然后选择自由风格的软件项目并确定
6. 在出现的配置菜单中,向下滚动到源码控制并选择Git。在Repo URL 的位置输入如下URL: https://github.com/sdebrosse/soatest-automation-example.git .其他字段都可以使用默认值。
7. 滚动到页面底部,在Build中添加一个构建步骤“Execute Windows batch command”(如果你使用的是Linux系统,用“Execute shell”命令代替)
8. 将这里的脚本内容复制到新的构建步骤中。你需要改变脚本顶端两个变量的值来反映您的localsettings.properties 文件的位置以及你想要创建临时工作空间的位置(SOAtest在测试过程中会创建这个工作空间)。脚本中的注释解释了每一行的作用:
9. 现在已经准备好执行我们的Jenkins job了!首先,确保你关掉了SOAtest的所有实例进程。然后选择配置页面底端的“保存”按钮,并点击左侧的“Build Now”按钮。
10. 你可以点击左侧正在运行的Job来查看控制台输出
运行成功后,日志将会在底端输出“SUCCESS”。这意味着你已经成功地从GitH上获取SOAtest项目,将Parabank部署到Docker容器中,并对Parabank实例执行测试。在进程结束时,我们自动停止了Parabank容器并且删除了临时的工作空间以清理环境。
但是,请等一下。你可能注意到日志中显示我们有一些测试失败了。
是的,对Parabank的几个测试失败了。如果我们希望在SOAtest测试失败的时候Jenkins的构建进程也会失败,可以在我们调用命令soatestcli时添加-fail选项。如下:
soatestcli.exe -fail -data %TEMP_WORKSPACE_PATH% -resource /Parabank-config"builtin://DemoConfiguration"-localsettings %LOCALSETTINGS_PATH%
如果你在SOAtest桌面UI界面中打开这些测试,你将会发现这些失败主要是测试数据/测试环境的配置问题。我们的贷款处理服务拒绝了一个它本该允许的贷款请求。
接下来我们要怎么办?
测试环境配置和测试数据是实现可靠的自动化测试的最大障碍。在以后的文章中,我将与大家一起探索一种名为服务虚拟化的技术,这项技术可以确保我们能够随时随地使用测试所需的环境配置——这将引领我们从持续集成迈入持续集成测试的世界。
Parasoft中国官网:
www.parasoftchina.com
以上是关于将SOAtest回归测试融入到持续集成测试中的主要内容,如果未能解决你的问题,请参考以下文章