【入門編】Jenkinsによる自動テスト環境の構築:JUnit/Seleniumとの連携で品質を底上げ – バージョン管理・CI/CD活用バイブル

こんにちは!日々のデプロイ作業やテストの実行に追われて、「もっと開発そのものに集中したい……」と感じていませんか?

今回は、CI/CD自動化の古き良き、そして今なお現場の要塞として君臨するJenkinsを使って、「コードをプッシュしたら、自動でテストが走り、結果が綺麗にグラフ化され、失敗したらSlackに通知が飛ぶ」という、エンジニアなら誰もが憧れる全自動の品質担保パイプラインの作り方を解説します。

これをマスターすれば、「テストし忘れた!」というヒューマンエラーとは今日でお別れです。毎日の開発作業が劇的に楽になりますよ。さあ、一緒に最強の自動化環境を作っていきましょう!

—

1. Jenkinsってどんなツール?(役割と心構え)

一言で言うと、Jenkinsは「あなたの代わりに24時間働いてくれる、超優秀な専属QAエンジニア」です。

開発者がコードをGitHubなどのリポジトリにプッシュした瞬間を察知し、以下の面倒な作業を背後で完璧にこなしてくれます。
1. コードをチェックアウトする
2. アプリケーションをビルドする
3. 単体テストやブラウザテスト(Selenium等)を実行する
4. 結果をまとめて、チームに報告する

「人がやるとミスをする、忘れる、時間がかかる」ことは、すべて機械に任せる。これがDevOpsの基本思想であり、Jenkinsはそのための最も強力な相棒です。

—

2. 基礎セットアップ:Jenkinsの起動と初期設定

まずはJenkinsを動かしましょう。今回は最も手軽でクリーンなDockerを使った方法で立ち上げます。以下のコマンドをターミナルに叩いてみてください。

docker run \
-d \
–name jenkins-master \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
jenkins/jenkins:lts

これだけで、あなたのローカル環境(あるいはサーバー)にJenkinsの要塞が築かれます。
ブラウザで `http://localhost:8080` にアクセスすると、初期パスワードを求められます。慌てずに以下のコマンドでパスワードをゲットしましょう。

docker exec jenkins-master cat /var/jenkins_home/secrets/initialAdminPassword

画面に従って「推奨プラグインのインストール(Install suggested plugins)」を選べば、基礎セットアップは完了です!

—

3. HelloWorld的動作確認:フリースタイルプロジェクトを作ってみる

まずはJenkinsが動くことを確かめるために、簡単なジョブ(タスク)を作ります。

1. Jenkinsのトップ画面から [新規ジョブ作成] をクリック。
2. ジョブ名(例: `hello-world-job`)を入力し、[フリースタイル・プロジェクトのビルド] を選択して「OK」。
3. 設定画面の下部にある「ビュルド」セクションの [ビルドステップの追加] > [シェルの実行] を選択。
4. 以下のスクリプトを書き込みます。

!/bin/bash
echo “=================================”
echo ” Jenkinsからの最初の挨拶: Hello World! ”
echo “=================================”
date

5. 保存して、左メニューの [今すぐビルド] をクリック!

左下の「ビルド履歴」に青い丸(成功の証!)が出たら成功です。コンソール出力を見て、「Hello World!」が表示されていれば、第一関門突破です。

—

4. 本丸:JUnit/Seleniumとの連携によるテスト自動化

ここからが本番です。Javaの単体テストフレームワークであるJUnit、そしてWebブラウザ操作を自動化するSeleniumを使ったテストをJenkinsに組み込みます。

実務を想定し、今回は宣言的にパイプラインを定義できるJenkinsfile(Pipeline構想)を使います。プロジェクトのルートディレクトリに、以下の`Jenkinsfile`を配置してください。

pipeline {
// 利用するエージェント(今回はDockerコンテナ内で実行)
agent any

stages {
// 1. コードのチェックアウト
stage(‘Checkout’) {
steps {
git ‘https://github.com/your-username/your-selenium-junit-repo.git’
}
}

// 2. ビルド & テストの実行
stage(‘Build and Test’) {
steps {
// MavenやGradleを使ってテストを実行(例はMaven)
// テストが失敗しても後続の処理(レポート集計)を続行するため捕縛する設定
sh ‘mvn clean test’
}
}
}

// すべてのステージが終了した後の処理
post {
always {
// 【重要】JUnitのテスト結果XMLを集計してJenkinsに認識させる
junit ‘target/surefire-reports/.xml’
}
failure {
// 【重要】テスト失敗時のSlack通知
slackSend(
channel: ‘#ci-notifications’,
color: ‘danger’,
message: “【悲報】ビルドまたはテストが失敗しました!\nジョブ名: ${env.JOB_NAME} ( #${env.BUILD_NUMBER} )\n<${env.BUILD_URL}|確認する>”
)
}
}
}

この設定のポイント

  • `junit ‘target/surefire-reports/.xml’`: テストツールが出力するXML結果をJenkinsが読み込み、「何件中何件成功したか」を自動で集計・グラフ化してくれます。
  • `slackSend`: 失敗(`failure`)した時だけSlackに飛ぶようにしています。成功するたびに通知が来ると「オオカミ少年」になってしまうため、失敗時のみ通知するのがプロの現場の定石です。

(※事前にJenkinsに「Slack Notification」プラグインを入れ、ワークスペースのトークンを設定しておいてください)

—

5. 品質を可視化する:テスト結果のトレンドグラフ

上記のパイプラインを数回回すと、Jenkinsのプロジェクトトップページに魔法のような変化が起きます。

そう、「テスト結果のトレンド(推移グラフ)」が自動で描画されるのです!

  • 縦軸:テストの総数 / 失敗数
  • 横軸:ビルド回数(時間の経過)

このグラフを見るだけで、「おや、最近リリースされた機能のせいで、テストの失敗率がじわじわ上がっているぞ」「全体のテスト実行時間が伸びているな」といったプロジェクトの健康状態が、一目で把握できるようになります。マネージャーへの報告資料としてもそのまま使えますね。

—

おわりに:自動化は「未来への投資」

今回は、Jenkinsを使ったJUnit/Seleniumテストの自動化、結果の集計、そしてSlack通知までの流れを駆け足でご紹介しました。

最初は設定ファイルを書くのに少し戸惑うかもしれませんが、一度この仕組みを作ってしまえば、あなたが寝ている間も、コーヒーを飲んでいる間も、Jenkinsが文句一つ言わずにコードの品質を守り続けてくれます。

「これをマスターすれば、毎日の作業が劇的に楽になりますよ」。
ぜひ今日の開発から、あなたのプロジェクトにも「自動化の守護神」を召喚してみてください!

タイトルとURLをコピーしました