0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitLab とは

GitLab とは、ソフトウェア開発のためのDevSecOps(※)プラットフォームです。
※DevSecOpsは、開発(Development)、セキュリティ(Security)、運用(Operations)のプロセスを統合し、効率的かつ安全にソフトウェアを開発・運用するための手法のこと。

GitLab は Gitリポジトリの管理、コードレビュー、CI/CD(継続的インテグレーションと継続的デリバリー)、プロジェクト管理など、ソフトウェア開発の全段階をサポートする機能を提供しています。

テスト自動化ツールとの連携

今回、UIテスト自動化ツール Ranorex(※) で作成したテストシナリオをGitLabのCI/CD機能を使って動かしてみました。
※Ranorex は、デスクトップ/Web/モバイルアプリの自動化に対応しています。
 テスト対象アプリのUI操作を記録し、テストの作成/実行を可能とします。

GitLabのCI/CD機能でパイプラインを実行するには、GitLab Runnerというツールを使用します。
今回は、以下のような構成図で検証してみました。
GitLab実行構成.png

環境構築① 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 ファイルを設置します。
project.png

ymlファイルには、ジョブ(ビルド、テスト、デプロイなど)を定義し、定義したジョブがパイプライン上で実行されます。
今回は、build と run のジョブを用意しました。各ジョブの概要とymlファイルの内容は、以下となります。

  • build ジョブ:リポジトリ上にあるRanorex ソリューションをMSBuildでビルドする
    ※Ranorex ソリューションは、MSBuildでビルドをかけることで、最新のexeモジュールを作成することができます。
  • run ジョブ:新たに生成されたexeモジュールを実行する
.gitlab-ci.yml
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

パイプラインの実行

パイプラインを実行すると、順番にジョブが実行されていきます。
pipeline.png
ジョブごとにコンソール画面が表示されるため、ジョブの実行状況も確認できます。
console.png

Ranorex で作成したUIテストを自動実行したので、マシン上でテストが実行されました。
また、Ranorex 側で生成されるレポートも出力されています。
image.png

このように、テスト自動化ツールで作成したシナリオをGitLabのCI/CDパイプラインで実行することができました。

直面したエラー

RanorexのテストシナリオをGitLab CI/CDパイプラインで実行しようとすると、以下のエラーが発生しました。

この操作には、対話型のウィンドウ ステーションが必要です。

このエラーは、GitLab RunnerをWindowsのサービスで起動していることが原因でした。
※Windowsのサービスは一般的に対話型セッションを持たないため、UIテスト自動化ツールを実行しようとすると、このエラーが発生することがあります。

対応策として、以下の手順によりエラーが解消されました。

  1. Windowsのサービス画面を開き、gitlab-runner を停止します
    image.png

  2. コマンドプロンプトを管理者権限で実行します

  3. GitLab Runnerの実行モジュールのフォルダーに移動し、以下のコマンドを実行します

gitlab-runner-windows-amd64.exe run

image.png

これにより、GitLab Runnerが起動します。
再度GitLab上からパイプラインを実行するとエラーが解消され、Ranorex のテストが実行できました。

まとめ

GitLabのRepositoryとCI/CD(Pipelines)機能を使用し、UIテスト自動化ツールで作成したテストを実行してみました。
GitLabを今回初めて触ってみましたが、GitLabのUIは大変わかりやすく直観的に使用できることから、初心者でも使用しやすいと感じました。

自動テストをCI/CDに組み込むことでよりテストの効率性が向上します。自動テストをCI/CDに組み込みたい方は、ぜひ本記事を参考としてみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?