ATS|テスト自動化

2022.2.21

【第2回】:CI/CDの実現方法とツール

CI/CDのためのテスト自動化アプローチ

昨今のサービス開発では、「CI/CD (継続的インテグレーション/継続的デリバリー)」の重要性が認識されつつあります。CI/CDとは、プログラム変更からリリースまでにおける一連のプロセスを統合的に自動化し、継続的な開発・リリースを実現するアプローチです。

連載第1回では、CI/CDの基礎知識について解説しました。詳細については、前回の記事をご一読ください。

CI/CDのためのテスト自動化アプローチ 【第1回】:CI/CDの基礎知識

CI/CDの実現においては、あらゆる開発プロセスを包括するプラットフォームの構築が求められます。従来の開発プロセスを抜本的に変える手法であり、費用対効果を上げるためには実現方法を正しく理解し、適切なツールを選定することが重要です。

そこで第2回となる本記事では、CI/CDの実現方法と組み合わせる代表的なツールについて解説します。

CI/CDの実現方法や主要ツールに関して

CI/CDの実現においては、複数のツールを併用して1つの自動化プラットフォームを構築します。主に用いられるツールは、下記の4つです。CI/CDツールが全体制御を担い、他の3ツールと連携することで一連のプロセスを統合します。

 ・CI/CDツール
 ・バージョン管理ツール
 ・テスト自動化ツール
 ・バグ管理ツール

大まかな自動化プロセスの流れは、下記の通りです。ただし、ツールによって若干異なる場合があります。

 1.開発者が、バージョン管理ツールにより変更したプログラムをコミットする。
 2.CI/CDツールが、プログラムの変更を検知しビルドを行う。
 3.テスト自動化ツールが、CI/CDツールの指示を受けて自動テストを実行する。
 4.テストの結果が問題なければ、CI/CDツールはステージング環境へのデプロイを行う。バグが検出された場合は、バグ管理ツールへの通知を行い、デプロイは行わない。

各ツールについて、代表例も交えつつ詳しく解説します。

CI/CDツール

前回も触れたCI/CDツールは、プログラムの変更からリリースまでのプロセスを統合し、自動処理の実行や管理を行うツールです。CI/CDを構成する各ツール (詳細は後述) への指示出しや、実行状況の可視化が可能となります。

具体的には、各ツールへの指示内容を「ジョブ」などの単位で定義し、適切に順序付けることで1つのCI/CDパイプラインを構築します。CI/CDツールは全体制御としての位置付けであり、それ自体が全ての自動化を実現するわけではありません。

代表的なCI/CDツールとしては、「Jenkins」が挙げられます。自社サーバーにインストールして利用するCI/CDツールで、拡張性・セキュリティ性に優れています。また、Webブラウザを通じて柔軟なCI/CDパイプラインの構築が可能です。

バージョン管理ツール

CI/CDの起点となるのが、プログラムの変更を管理するバージョン管理ツールです。機能追加やバグ改修などの変更をバージョン単位で正確に記録できます。CI/CDに限らず、ミスのないデリバリーを実現する上では欠かせません。

新しいプログラムの変更が発生すると、バージョン管理ツールはCI/CDツールに通知します。それを受けて最新のソースコードを取得し、ビルドを行うのはCI/CDツールの役割です。またバグ改修のコミット時には、後述のバグ管理ツールにその情報を通知します。

バージョン管理ツールとしては、「Git」が代表的です。ローカル環境にリポジトリを作成できるためチーム開発に適しており、世界的に用いられています。また、Gitをベースに作られたWebサービスである「GitHub」も、CI/CDの実現に使われることがあります。

テスト自動化ツール

プログラムの品質を保証する上で欠かせないのが、信頼性の高いテストプロセスを確立するためのテスト自動化ツールです。テスト自動化ツールはCI/CDツールからの指示を受けて、最新のプログラムに対して自動テストを実行します。また、テストの結果バグが発生した際には、バグ管理ツールへの通知を行います。

CI/CDの目的である継続的な開発・リリースを実現する上で、幅広いテストに対応できるテスト自動化ツールを選定することが重要です。全てのテスト範囲をカバーできず手動のテストに甘んじるようでは、バグの流出につながりかねません。

こうした要件を満たすテスト自動化ツールとしては、「Eggplant」が有力です。高度なAI (人工知能) による探索的テストとモデルベーステストの手法を組み合わせることにより、テストにおける全プロセスを自動化します。また、自動化が難しいユーザビリティテストなど、幅広いテスト種類に対応可能です。Eggplantの詳細については、次回以降でしっかり論じたいと考えています。

バグ管理ツール

自動テストの結果に問題があれば、当然ながらリリースするためにバグの改修が欠かせません。テストや試験運用で生じたバグを集約し、改修状況を管理するのがバグ管理ツールです。開発者のバグ改修を効率化し、迅速なデリバリーを実現する上で重要な役割を担います。

バグ管理ツールは、テスト自動化ツールから通知されたバグを起票し、CI/CDツールにも通知します。また、バージョン管理ツールからの改修通知を受けて、バグの状況をアップデートすることも可能です。開発者とQA担当者間のリアルタイムな情報共有の実現につながります。

バグ管理ツールとしては、「JIRA Software」が代表的です。バグだけでなくプロジェクトや課題といった幅広い管理が可能で、外部ツールとの連携機能も充実しています。昨今主流となっているアジャイル開発の現場を中心に、世界的に広く用いられています。

CI/CDにおけるテスト自動化ツールの重要性とは?

今回は、CI/CDの実現方法についてお伝えしました。CI/CDを実現することで迅速な開発・リリースを継続的に実現でき、多様化するユーザーのニーズに対応できます。その一方で、CI/CDの適用は開発チームへのインパクトが大きい取り組みであり、実現方法の正しい理解が欠かせません。

CI/CDの実現には、今回ご紹介したように多くのツールが必要となります。その中でもテスト自動化ツールは、CI/CDの成否を左右する重要なポイントです。プログラムの品質を保証するためにはテストの実行が基本であり、テストはソフトウェア開発工程の重要なプロセスとして組み込まれてきました。

しかし、従来のウォーターフォール型の開発プロセスにみられる手動テストではテスターの負荷が非常に高く、非効率的かつ反復的な作業が伴います。そのため、テスト自動化ツールの選定・導入が正しく実施されなければ、QCDの向上につながらないばかりか様々な課題が生じるのです。

第3回では、CI/CDにおけるテスト自動化ツールの役割と重要性についてお伝えします。

■ ADOC Testing Service for Eggplantの概要へ
■ ADOC Testing Service for Eggplantの資料請求へ

CI/CDのためのテスト自動化アプローチ の記事一覧

CI/CDのためのテスト自動化アプローチ

  • 2022.4.15
  • 【第5回】:Eggplantを適用するメリット

BLOG シリーズ 一覧