アジャイル開発をスムーズに進めて高い品質を保つには、テストの実施が重要です。この記事では、アジャイル開発のテスト担当者に向けて、アジャイルテストの4象限やテストのポイントを解説します。アジャイル開発の概要や手法もまとめているので、ぜひ参考にしてください。
アジャイル開発とは
そもそもアジャイル開発とは、どのような開発方法でしょうか。ここでは、アジャイル開発の概要を解説します。
システム・ソフトウェア開発における手法の1つ
アジャイル開発とは、システム・ソフトウェア開発の手法です。プロジェクトの内容を複数のサイクルに分けて開発を進めます。具体的には、計画、設計、実装、テストなどの工程を短期間で繰り返します。小さい単位で開発の工程を進めるため、途中で問題が発生した場合や仕様変更が生じた場合にも、柔軟な対応が可能です。
1990年頃から提唱され始めた
アジャイル開発は、1990年頃から提唱されるようになったといわれています。主流だったウォーターフォール開発の課題が多く指摘されるようになり、アジャイル開発に注目が集まりました。
ウォーターフォール開発では事前に決めた工程を順に進めますが、何らかの変更があれば前の工程に戻って修正しなければなりません。ビジネスを取り巻く環境は変化が激しく、開発途中の修正も多く発生します。そのため、ウォーターフォール開発は、開発に着手してからリリースまでに長い時間がかかります。
このような背景から、修正が容易で短期間でのリリースを目指せるとして、アジャイル開発が多くのプロジェクトで採用されるようになりました。
アジャイル開発のメリット
アジャイル開発のメリットは、開発途中の変更がしやすい点です。アジャイル開発の場合、修正に対応するために設計をやり直す必要がある部分は、あくまでも仕様変更に関係する部分のみです。仕様変更に関係ない部分の対応は不要なため、手間がかかりません。よって、現代の変化が激しい環境に対応しやすいといえます。
アジャイルテストの4象限とは
アジャイルテストの4象限とは、アジャイル開発におけるテスト手法の1つです。縦軸では、上側がビジネスの視点、下側が技術の視点を示します。横軸では、右側が製品評価、左側がチーム支援を表します。アジャイルテストの4象限を用いると、さまざまな側面からプロダクトの評価が可能です。以下では、それぞれ象限の特徴を解説します。
左下・アジャイル第1象限
左下のアジャイル第1象限は、内部コードの品質を重判断する部分です。テストの量の増加やテストの自動化などにより、チームに対するサポートの充実やプロダクトの品質の維持を目指します。
左上・アジャイル第2象限
左上・アジャイル第2象限は、要件について適用する部分です。要件がビジネスルールに則っているかを重視しており、テストの回数は少なめです。また、手動による対応も少なく、チームの支援にもなります。
右上・アジャイル第3象限
右上・アジャイル第3象限は、第1象限と第2象限のテストに対するフィードバックを示しています。手動による細やかな探索テストの実施により、信頼性の向上を目指します。
右下・アジャイル第4象限
右下・アジャイル第4象限は、安定性やセキュリティなどを対象としています。機能面には直接関係しないものの、快適に使用できるかチェックしてプロダクトに対する信頼を高めます。
アジャイル開発における課題
アジャイル開発には課題もあります。特に重要度の高い3つの課題を解説します。
内容の変更が多くテスト内容が定まらない
アジャイル開発では途中で変更が生じるケースも少なくありません。別のチームの仕様変更の影響を受ける可能性もあります。よって、テストの内容がなかなか定まらず、確立しにくい点に注意が必要です。
ドキュメントが存在しない
アジャイル開発では軽量プロセスが重視されるため、ドキュメントよりも実際のプログラムの作成が優先されがちです。しかし、ドキュメントが存在しないと第三者がテストする際に基準が分からず、適切な判断ができない恐れがあります。
全体のマネジメントが難しい
アジャイル開発では、品質を含む全体のマネジメントが難しいといわれています。短期間のスプリントについて、時期を少しずつずらして実施するためです。チームごとに責任の範囲や着手の時期が異なり、一括で管理できるわけではありません。
アジャイル開発のテストのポイント
アジャイル開発のテストには、さまざまなポイントがあります。以下で具体的に解説します。
テストの対象範囲を絞り込む
アジャイル開発のテストでは、対象範囲を絞り込むことでテスト時間の短縮や効率化が図れます。テストの対象範囲を絞り込む際は、対象にする部分と省く部分の判断が重要です。省いた部分に問題がある場合、テストを実施したにもかかわらず不具合が発生し、余計な手間がかかります。過去に生じた障害の事例を参考にし、類似している部分は優先的にテストの対象に含めましょう。
各スプリントでテストをする
アジャイル開発は機能ごとにスプリントを設け、順番に開発を進めます。そのため、テストもスプリント単位で実施する必要があります。各スプリントは独立しており、ほかのスプリントの影響を受けずにテストの実施が可能です。また、不具合の発見や修正もすべて各スプリント内で完結します。
テストをスピーディに実施する
アジャイル開発は速さが重視されているため、テストもスピーディに実施する必要があります。また、可能な限り早い段階で問題点の発見を目指しましょう。早い段階で修正すれば、工数を最小限に抑えられます。
テストの自動化を進める
テストで不具合が見つかれば、適宜修正が必要です。また、ある部分を修正して他の部分にも影響が出れば、そちらへの対応も求められます。それぞれ時間がかかるため、テストを自動化するとより効率的です。特にアジャイル開発はスプリント単位でテストを実施するため、テストの自動化により大きなメリットを得られます。
テストベースにユーザーストーリーを盛り込む
テストベースとは、テストの際に参考にするデータや情報のことです。具体的には、テストの実施方法、手順、数値などのデータが記載されています。また、テストベースには、ユーザーストーリーを盛り込むことが大切です。
ユーザーストーリーとは、プロダクトを使用するユーザーの要望をテキストでまとめたものです。ユーザーストーリーを作成するには、ユーザーの要望の正確な把握が前提となります。なお、要件定義とは異なるため、専門用語を使わず誰でも分かりやすい内容にする必要があります。
テストケースをタスク化する
チームのタスクリストやテスト計画などをもとにし、テストケースをタスク化しましょう。具体的には、テストの対象となる機能一覧や予定工数などをタスクとして定義します。テストケースをタスク化すると、ステークホルダーとの間でテストの状況や全体像を共有しやすくなります。また、テストの基本や詳細の設計にかかる工数も抑えられる可能性が高いです。
探索的テストを用いる
探索的テストとは、テストの結果を参考にして次のテストの内容を探索する手法です。一般的な開発では、テストケースを作成し、それにもとづくスクリプトを実行します。しかし、探索的テストはスクリプトを使用しません。また、テストケースも作成しないため、テストにかかる時間を短縮できます。
アジャイル開発の手法
アジャイル開発の手法としては、テスト駆動開発やスクラムなどがあります。ここでは、アジャイル開発の手法について解説します。
テスト駆動開発
テスト駆動開発とは、開発を進める前の時点でテストを実施する手法です。具体的には、コードの作成前にテストを行います。テストを作ってコンパイルを実行し、テストを通過するコードを見極めたうえで、実際のコードの作成に着手する流れです。
テストを通過したコードについては、適宜リファクタリングを実施します。テストの作成からリファクタリングまでを1つのサイクルとして繰り返します。
リファクタリングとは
リファクタリングとは、外部の動作に影響を与えない状態で、コードの内部構造を最適化する方法です。なお、リファクタリングで内部構造を整えた後は、外部動作の確認も行う必要があります。
スクラム
スクラムは、アジャイル開発におけるメジャーな手法です。機能ごとに計画、設計、開発、テストのスプリントを繰り返します。スプリントとは、プロダクトをリリースまでのサイクルのことです。
スクラムでは優先順位が高い機能から開発に着手するため、短期間で大きな成果を出しやすいでしょう。また、ユーザーの要求に沿った内容を実現しやすく、工数の見積もりを正確に出せる特徴もあります。
まとめ
アジャイル開発ではテストが重要であり、さまざまなポイントを意識して実施する必要があります。アジャイルテストの4象限をもとにテストを実施し、質の高いプロダクトを目指しましょう。
株式会社Sun Asteriskは、DXコンサルや開発のリソースの提供などに対応しています。ケイパビリティの広さが強みです。幅広い会社をサポートしてきた実績があり、さまざまなニーズに対応できます。開発を成功に導くためにも、ぜひご相談ください。
貴社の状況にあわせて最適なチームをご提案します。アジャイル開発のご相談やお見積りのご依頼は、お気軽にお問い合わせください。
Sun*アジャイル開発に関するソリューションやこれまでの開発実績をまとめた資料のダウンロードはこちらから。