
在现代软件开发中,持续集成和持续交付(CI/CD)已成为确保快速、高质量发布的关键实践。对于已经使用Katalon Studio进行自动化测试的团队而言,一个自然而然的问题是:如何将这些自动化测试无缝嵌入到CI/CD流水线中,让其自动运行并反馈结果?这正是Katalon Runtime Engine(KRE)大显身手的地方。
为何要在CI/CD中运行Katalon测试?
Katalon Runtime Engine是一款允许用户在无头(headless)模式或命令行界面下执行Katalon测试的强大引擎。将其集成到CI/CD流水线中,能为开发团队带来多重显著优势:
- 快速简便:无需在构建服务器或代理机器上手动安装完整的Katalon Studio图形界面。只需配置好KRE,测试任务即可自动执行。
- 支持无显示设备:测试可以在没有物理显示器或图形用户界面的服务器(如Linux服务器)上稳定运行,这为资源分配和测试环境管理提供了极大的灵活性。
- 执行更稳定:可以为测试执行分配一个独立的虚拟显示缓冲区(例如在Jenkins中使用Xvfb)。这有效隔离了图形环境,避免了因界面冲突导致的不稳定或失败,特别适用于需要浏览器UI操作的测试。
简而言之,通过KRE实现CI/CD集成,意味着自动化测试能够像代码编译、打包一样,成为一个标准化、可重复、无人值守的流水线环节。
广泛兼容的CI/CD生态系统
Katalon Runtime Engine的一个突出优点是其卓越的兼容性,它能够与市场上主流的CI/CD工具和平台无缝集成。无论是自建的服务还是云原生的解决方案,团队都能找到对应的配置方案。
以下是一份Katalon官方支持或提供示例配置的CI/CD环境清单:
| 支持的CI/CD环境 | 示例配置文件/插件 |
|---|---|
| 通用命令行(CLI)环境 | run_chrome.bat, run_chrome.sh |
| Azure DevOps | azure-pipelines.yml |
| AWS CodeBuild | buildspec.yml |
| Bamboo | Katalon Studio for Bamboo插件 |
| Bitbucket Pipelines | bitbucket-pipelines.yml |
| Buildkite | buildkite.yml |
| CircleCI | circleci.yml(通过Katalon Orb) |
| CodeShip | codeship-services.yml, codeship-steps.yml |
| Katalon Docker镜像(KDI) | docker-compose.yml |
| GitHub Actions | Katalon Studio GitHub Action |
| GitLab CI/CD | gitlab-ci.yml |
| Google Cloud Build | cloudbuild.yml |
| Harness | .harness配置文件 |
| Jenkins | Jenkinsfile |
| TeamCity | TeamCity Plugin |
| Travis CI | .travis.yml |
这份列表展示了Katalon致力于融入各类开发运维工作流程的承诺,确保团队可以在其熟悉的技术栈内使用统一的自动化测试方案。
集成云端测试环境:TestCloud
除了在自有基础设施上运行测试,Katalon还提供了名为TestCloud的云端测试执行环境。其集成过程非常便捷:团队只需要拥有TestCloud的订阅或试用账户,甚至不需要额外的Katalon Runtime Engine许可证,即可在任意配置了KRE的CI/CD流水线中使用TestCloud。
这为团队带来了显著的便利性,无需维护复杂的浏览器和移动设备矩阵,即可在多种预设的、最新的操作系统与浏览器组合环境中执行测试。
如何在CI/CD中执行单个测试套件到TestCloud?
要通过KRE命令行触发测试套件在TestCloud环境中运行,需要指定一些关键参数。下表列出了这些必需的配置项:
| 命令行参数 | 描述 | 数据类型 | 是否必需 |
|---|---|---|---|
-browserType="TestCloud" |
指定执行测试套件使用的浏览器类型。值为"TestCloud"即表示使用TestCloud环境。 | 字符串 | 必需(针对单个测试套件执行) |
-testcloudEnvironmentId |
指定执行环境的ID。该ID对应一个具体的操作系统、浏览器类型和版本的组合,可通过Command Builder工具生成。 | 字符串 | 必需(针对单个测试套件执行) |
-testcloudTunnel |
允许通过TestCloud隧道执行测试。 | 布尔值 | 可选 |
-testcloudMobileDeviceId |
TestCloud移动设备的唯一ID。 | 字符串 | 执行移动测试时必需 |
-testcloudMobileId |
TestCloud移动操作系统版本的ID。 | 字符串 | 执行移动测试时必需 |
-testcloudAppId |
TestCloud应用程序的ID。当在Katalon中选择了"使用TestCloud应用仓库中的应用覆盖"选项时,KRE会生成此命令。 | 字符串 | 可选 |
一个实际的配置示例能帮助我们更好地理解。例如,在GitHub Actions中,可以使用以下工作流模板来执行KRE命令,将测试运行到TestCloud环境:
yaml
name: CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v3.0
- name: Katalon Studio Github Action
uses: katalon-studio/katalon-studio-github-action@v3.0
with:
version: '8.6.5'
projectPath: '${{ github.workspace }}'
args: '-noSplash -retry=0 -testSuiteCollectionPath="Test Suites/Sample Test Suite" -browserType="TestCloud" -testcloudEnvironmentId="256" -apiKey= ${{ secrets.API_KEY }} --config -webui.autoUpdateDrivers=true'
在这个示例中,工作流在代码推送到主分支或创建拉取请求时触发。它使用官方的Katalon GitHub Action来运行指定项目路径下的测试,并通过-browserType和-testcloudEnvironmentId参数明确指向ID为256的TestCloud环境。
执行测试套件集合(Test Suite Collection)
对于更复杂的测试场景,例如需要按顺序执行多个测试套件,Katalon提供了测试套件集合功能。当使用TestCloud环境执行测试套件集合时,流程更为简化。
因为各个测试套件所使用的TestCloud环境信息已经包含在测试套件集合文件内部(这些集合可以在Katalon Studio中进行管理),所以在通过KRE执行时,无需再次指定 -browserType和 -testcloudEnvironmentId参数。配置了TestCloud的测试套件会被自动识别并上传到相应的TestCloud环境中执行。
结语
将Katalon自动化测试集成到CI/CD流水线中,绝非一项复杂的挑战。借助Katalon Runtime Engine的灵活命令行接口和对主流CI/CD工具的广泛支持,团队可以轻松实现测试执行的自动化与标准化。而TestCloud的集成选项,进一步将测试环境的管理负担转移至云端,让开发团队能够更专注于代码和测试逻辑本身,从而真正实现快速、可靠且可持续的软件交付。