GitLab とは
GitLab とは、ソフトウェア開発のためのDevSecOps(※)プラットフォームです。
※DevSecOpsは、開発(Development)、セキュリティ(Security)、運用(Operations)のプロセスを統合し、効率的かつ安全にソフトウェアを開発・運用するための手法のこと。
GitLab は Gitリポジトリの管理、コードレビュー、CI/CD(継続的インテグレーションと継続的デリバリー)、プロジェクト管理など、ソフトウェア開発の全段階をサポートする機能を提供しています。
テスト自動化ツールとの連携
今回、UIテスト自動化ツール Ranorex(※) で作成したテストシナリオをGitLabのCI/CD機能を使って動かしてみました。
※Ranorex は、デスクトップ/Web/モバイルアプリの自動化に対応しています。
テスト対象アプリのUI操作を記録し、テストの作成/実行を可能とします。
GitLabのCI/CD機能でパイプラインを実行するには、GitLab Runnerというツールを使用します。
今回は、以下のような構成図で検証してみました。
環境構築① PowerShell と GitLab Runnerの設定
今回、以下のWebページを参考に、環境構築しました。
・GitとCI/CDに関する知識ゼロのSEが、Windows OSにGitLabのRunnerを入れてCI/CDパイプラインでPowerShellコマンドを試すだけ
https://blogs.networld.co.jp/entry/2022/06/13/130206
私の環境では、以下のソフトウェアをインストールしています。
- PowerShell 7.4.6
- GitLab Runner ※64bit向けの最新Runnerを使用
環境構築② GitLab の設定
GitLab 上では、今回 Personal ProjectとしてRanorex_Integrationプロジェクトを作成しました。
GitLabのリポジトリ上に、Ranorex のソリューション一式をプッシュしています。
GitLabでCI/CD機能を使用するには、プロジェクトのルートディレクトリに .gitlab-ci.yml ファイルを設置します。
ymlファイルには、ジョブ(ビルド、テスト、デプロイなど)を定義し、定義したジョブがパイプライン上で実行されます。
今回は、build と run のジョブを用意しました。各ジョブの概要とymlファイルの内容は、以下となります。
- build ジョブ:リポジトリ上にあるRanorex ソリューションをMSBuildでビルドする
※Ranorex ソリューションは、MSBuildでビルドをかけることで、最新のexeモジュールを作成することができます。 - run ジョブ:新たに生成されたexeモジュールを実行する
stages:
- build
- run
variables:
MSBUILD_PATH: "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/MSBuild/Current/Bin/MSBuild.exe"
SOLUTION_PATH: "ranorex_WebTest\\ranorex_WebTest.sln"
EXE_PATH: "ranorex_WebTest\\ranorex_WebTest\\bin\\Debug\\ranorex_WebTest.exe"
build_job:
stage: build
tags:
- Ranorex_integration
script:
- 'echo "Current directory:"'
- 'pwd'
- '& "$env:MSBUILD_PATH" "$env:CI_PROJECT_DIR\$env:SOLUTION_PATH" /p:Configuration=Debug'
run_job:
stage: run
tags:
- Ranorex_integration
script:
- 'Start-Process -NoNewWindow -FilePath "$env:CI_PROJECT_DIR\\$env:EXE_PATH"'
dependencies:
- build_job
パイプラインの実行
パイプラインを実行すると、順番にジョブが実行されていきます。
ジョブごとにコンソール画面が表示されるため、ジョブの実行状況も確認できます。
Ranorex で作成したUIテストを自動実行したので、マシン上でテストが実行されました。
また、Ranorex 側で生成されるレポートも出力されています。
このように、テスト自動化ツールで作成したシナリオをGitLabのCI/CDパイプラインで実行することができました。
直面したエラー
RanorexのテストシナリオをGitLab CI/CDパイプラインで実行しようとすると、以下のエラーが発生しました。
この操作には、対話型のウィンドウ ステーションが必要です。
このエラーは、GitLab RunnerをWindowsのサービスで起動していることが原因でした。
※Windowsのサービスは一般的に対話型セッションを持たないため、UIテスト自動化ツールを実行しようとすると、このエラーが発生することがあります。
対応策として、以下の手順によりエラーが解消されました。
-
コマンドプロンプトを管理者権限で実行します
-
GitLab Runnerの実行モジュールのフォルダーに移動し、以下のコマンドを実行します
gitlab-runner-windows-amd64.exe run
これにより、GitLab Runnerが起動します。
再度GitLab上からパイプラインを実行するとエラーが解消され、Ranorex のテストが実行できました。
まとめ
GitLabのRepositoryとCI/CD(Pipelines)機能を使用し、UIテスト自動化ツールで作成したテストを実行してみました。
GitLabを今回初めて触ってみましたが、GitLabのUIは大変わかりやすく直観的に使用できることから、初心者でも使用しやすいと感じました。
自動テストをCI/CDに組み込むことでよりテストの効率性が向上します。自動テストをCI/CDに組み込みたい方は、ぜひ本記事を参考としてみてください。