CIツールとしてJenkinsを使用して自動テストプロジェクトをオーケストレーションする

Diogo Rede著

この記事は、「TestRailで実現する円滑なテスト自動化」と題したシリーズ記事の一部です。このシリーズでは、次の図のように、自動テストの結果をTestRailに集約する方法を詳しく説明します。

このサンプルでは、CIツールとしてJenkinsを使用して自動テストプロジェクトを取得し、実行します。この記事では、前回まではローカルマシンで実行していた自動テストプロジェクトをJenkinsで取得して実行するジョブの作成および設定方法を説明します。最終的には、これまでと同じ結果になりますが(上の図のステップ2および3を実行)、CIツールに統合される点が異なります。

Jenkinsインスタンスのセットアップ

注意: すでに実行中のJenkinsインスタンスがあり、Python 3.10.xを実行するエージェントがある場合、このセクションをスキップできます。

以下のステップを実行するためにすばやくJenkinsインスタンスをセットアップしたい場合、次の手順に従って、以下のカスタムJenkins Dockerfile (公式のJenkins Dockerイメージを元に構築)をビルドし、実行します。

FROM jenkins/jenkins:lts
USER root
RUN apt-get update
RUN apt-get install -y \
        build-essential \
        zlib1g-dev \
        libncurses5-dev \
        libgdbm-dev \
        libnss3-dev \
        libssl-dev \
        libreadline-dev \
        libffi-dev \
        libsqlite3-dev \
        wget \
        libbz2-dev
RUN wget https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tgz && \
        tar -xvf Python-3.10.0.tgz && \
        cd Python-3.10.0 && \
        ./configure --enable-optimizations && \
        make -j 2 && \
        make altinstall && \
        python3.10 --version
USER jenkins

1.Docker ファイルを保存した場所でコマンドラインを開きます。

2.次のコマンドを実行します。

docker build -t jenkins:local
docker run -p 8080:8080 -p 50000:50000 jenkins:local

3.コンソールのキーをコピーし、ブラウザーで http://localhost:8080 を開きます。

4.インストール ウィザードに従います (すべてデフォルト値を使用して続行できます)。

Jenkins でジョブを作成する

Jenkins でジョブをセットアップするのは非常に簡単です。次の手順を実行します。

1.Jenkins インスタンスを開き、[New Item] をクリックします。

2.新規アイテム名を入力し、Freestyle プロジェクトを選択して [OK] をクリックします。

Git リポジトリをセットアップする

ジョブを作成するときに、使用するソース コード管理ツールを設定できます。ジョブを開始した時、最初に実行するアクションはコードの取得です。コードの取得を設定するには、次の手順に従います。

1.[Source Code Management] セクションで Git を選択します。

2.[Repository URL] を設定します (このサンプルでは、https://github.com/gurock/automation-frameworks-integration.git)。

3.[Branch Specifier] を設定します (このサンプルでは、*/main)。

ビルド ステップを設定する

ビルド ステップでは、ジョブで実行したい処理を定義します。今回の場合、自動テスト プロジェクトを実行したいので、シェルを使用してこれを実現します。

1.[Build] セクションの [Add build step] ドロップダウンを使用して [Execute shell] ステップを追加します。

2.[Execute shell] ステップの [Command] に環境のセットアップとテスト プロジェクトの実行に必要なコマンドを含むスクリプトを挿入します。

シェル スクリプトの説明

以下は、上記で使用したスクリプトのコピーと各セクションの簡単な説明です。

# Go to test project folder
cd samples/python/pytest

# Setup virtual environment
python3.10 -m venv ./venv
. ./venv/bin/activate

# Install and run test project
pip install -r requirements.txt
pytest "./tests"

# Go to test project folder

スクリプトは、まず、実行する自動テストプロジェクトがある Pytestサンプルプロジェクトのベースフォルダーに移動します。

# Setup virtual environment

このプロジェクト専用のPython仮想環境を作成します。そうすると、一定のベースラインから開始できるので、よいプラクティスです。仮想環境を作成したら、環境をアクティベートする必要があります。すると、シェルはグローバルなPythonではなく仮想環境を使用します。

# Install and run test project

仮想環境をアクティベートしたら、後はPytestプロジェクトをインストールして実行するだけです。

ジョブを実行する

1.上記のとおりにジョブを設定して保存したら、ジョブを実行します。それには、左側のパネルの [Build Now] アクションをクリックするだけです。

2.ジョブが完了した後、ビルドの [Console Output] ページでログを確認すると、期待どおりスクリプトが実行されたことがわかるでしょう。

最終結果

これで、自動テストプロジェクトの実行が自動化されました。Jenkinsのインスタンスがオンライン状態であり、同僚からもアクセスできる場合、同僚もボタンをクリックして自動テストスイートを開始できます。そのほかにも、たとえば、テストが常に制御された一貫性のある環境で実行されるため、実行に再現性があり、環境の変化による不安定さを軽減できるなどの利点があります。次の図は、これまでに構築した部分を表しています。CI ツール内で完全に自動テストプロジェクトが実行可能になりました。

よりいっそうの可視化を実現し、自動テストの結果についてさらに詳細な解析とレポートを実行できるようにするため、結果をTestRailに集約して手動テストと自動テストの結果を統合できます。これを行う方法については、ブログシリーズ記事のステップ3「自動テストの結果をTestRailに送信する」を参照してください。

(この記事は、開発元Gurock社の Blog 「Orchestrating an automated tests project with Jenkins as your CI tool」2022年9月25日の翻訳記事です。)

関連する製品

テスト管理ツール TestRail

テストケースの管理やテスト結果の記録、チームでの情報共有など、Excelを使ったテスト管理の業務に限界を感じていませんか?TestRailはシンプルで使いやすいUIを提供し、テストにかかるさまざまな管理コストの削減に貢献します。

■ TestRailの特長 ■

  • テストにさまざまな情報を関連づけて一元管理
  • Webブラウザー上でテストケースを簡単に入力や編集可能
  • テスト実施の準備と結果の共有が容易
  • 進捗や比較などのレポートを提供
  • 要件 / 課題管理ツールやテスト自動化ツールと連携

日本国内では、テスト管理にExcelを使っていたお客さまからの乗り換えが多く、Web上で完結するテスト管理を実現されています。

TestRail でテスト管理のお悩みを解決しませんか?

テストの生産性向上をTestRailでお試しください

クラウドおよびオンプレミス、デモサイトでTestRailがお試しいただけます。

  • TestRailクラウド(クラウドサービス)
    • クラウドサービス環境でTestRailをお試しいただけます。
  • TestRailサーバー(オンプレミス版)
    • お客様のマシンにTestRailをインストールしてお試しいただけます。
  • TestRailデモサイト
    • インストールなどの設定なしにTestRailにサンプルデータが登録された環境にて操作をお試しいただけます。

eBook 公開中

Paul Gerrard著 効果的なテスト管理12の秘密 (日本語)

テスト計画やテスト管理に役立つ12のトピックを解説します。

詳細はこちら