Hannah Son著
アジャイルソフトウェアテストでは、コンテキストに合った適切なツールに加えて、QAプロセス、テスト計画、結果の追跡、テスト時に見つかったリスクのレポートを制御する包括的な仕組みが必要です。そこで、必然的にアジャイルテストケースの管理について検討する必要が出てきます。
アジャイルテスト管理を実現する方法
アジャイル開発手法では、QAチームメンバーは従来と比較してより戦略的な役割を演じます。
QAは製品チームおよび開発チームと連携してユーザーストーリー開発に関与し、スムーズかつ効率的に機能をテストできるよう前もって計画し、リスクに関して価値ある洞察をタイムリーに提供します。アジャイルテストケース管理もこれを反映し、常に優先順位付け、再利用性、カバレッジを重視します。
1.単一のテスト管理ソリューションに統合する
ウォーターフォール開発手法と比較すると、アジャイル開発はスクリプト化された手動テストケースにはそれほど依存していませんが、それでもテストを計画し、時間を調整し、進捗を報告し、リスクに優先順位を付ける手段が必要です。そこでテスト管理プラットフォームの出番です。
次のようなプラットフォームを探しましょう。
- チームおよびアプリケーション特有のパラメーターを追跡するためのカスタム フィールドがあり、複数のタイプのテスト (探索テスト、自動テストなど) を追跡できる。
- テストサイクルと重要なスプリント成果物またはリリースマイルストーンの同期を取るのに役立つ。
- 課題トラッカー、テスト自動化フレームワーク、継続的インテグレーションプラットフォームと統合し、テストとユーザーストーリーをリンクし、QAプロセスとDevOpsパイプライン全体を結びつけることができる。
- リアルタイムでテストの進捗を表示し、チームの誰もがテストのステータスを確認できる。
- デフォルトでトレーサビリティおよびテストカバレッジレポート機能を備えている。
2.役割、責任、タイムラインの整合性を取る
アジャイル手法では、従来よりも反復的な全員参加的アプローチが取られるため、必然的に開発の役割も変化します。
ウォーターフォール | アジャイル | |
---|---|---|
開発チームの責務 | •製品チームによって開発された製品要件またはユーザーストーリーに基づいてコードを作成する •コードの単体テストを作成する •コードが単体テストに合格したら「完成」として引き渡す | •スクラムチームの一員として要件およびユーザーストーリーの開発に参加する •新機能の機能テストに関与する •リリースの前に新機能の優先度の高いバグを修正する |
QAの責務 | •要件に基づいて特定の機能のすべてのユーザーパスのテストケースをスクリプト化する •優先度またはリスクにかかわらず、リリースの前にすべてのテストケースをテストする | •製品チームおよび開発チームと協力してユーザーストーリーおよび機能要件をテストする方法を決定し、まだバックログにあるうちから潜在的なリスクに注意をうながす •テストの方法について開発者をコーチングし、開発者が自分が開発した機能をより早期からテストし、より安定したエラーを起こしにくい方法で新機能を実装できるようにする •プルリクエストまたはマージリクエストをレビューし、新機能がテスト自動化プラットフォームによって容易にテスト可能であることを確認する |
QAが関与を開始する開発ライフサイクルステージ | •コードが作成され、製品のテスト可能なバージョンが引き渡された後 | •開発のあらゆるステージに関与する。テストライフサイクルはソフトウェア開発ライフサイクルと統合され、1つになる |
3.手動テストと自動テストの適切なバランスを見極める
自動テストと手動テストの適切なバランスを見極めることは、効果的なテストケース管理にとってきわめて重要です。この2つのバランスを取ることで、プロセスを合理化し、時間とリソースを節約し、より高いテストカバレッジを達成し、リソースを最適化し、スピードと品質のバランスを取ることが可能になります。
イエスかノーかという簡単な答えはありませんが、どのテストが手動テストに適しているか、またどのテストを自動化する必要があるかを評価するための質問があります。
- そのテストは繰り返されるか?
- 優先度の高い機能か?
- そのテストは複数のデータセットまたはパスで実行する必要があるか?
- 回帰テストまたはスモークテストか?
- 使用している自動化ツールで実現可能な範囲にあるか?
- テスト対象領域は変化が多いか?
- そのテストはランダムネガティブテストか?
- テストは並行して実行されるか、それとも特定の順序でだけ実行されるか?
それでもどのテストまたはテストスイートを自動化するべきか確信が持てませんか?次に自動化するべきものの優先順位を付けたり、テスト自動化戦略を進めたりするのに役立つ、こちらの無料自動化スコア付けモデルを使ってみてください。
4.テストに優先順位を付ける
アジャイル開発チームは、複数の機能を並行して開発することがよくあるため、どの機能を先にテストするべきかの判断が重要です。テストケースの優先順位付けはソフトウェアテストに必須の側面であり、テストチームが最も重要なテストケースから実行し、欠陥検出およびリスクカバレッジを最大化するのに役立ちます。
テストケース管理におけるテストの優先順位付けには、テストの重要性、リスク、プロジェクトにもたらす価値に基づいてテストの実行順序を決定することが含まれます。
優先順位付けプロセスに影響を与える要因には以下のようなものがあります。
- 潜在的リスクおよび影響のレベル
- 顧客の要件および好み
- ソフトウェアの重要な機能
テストケースへの優先順位付けの要因、テクニック、ベストプラクティス、メトリクスの包括的なリストについては、こちらのテストケースに優先順位を付けるためのテクニックとメトリクスを説明した役に立つ記事を参照してください。
DevOps環境でテストケース管理を実現する方法
DevOpsエコシステムでのテストケース管理には、固有のワークフロー、ライフサイクルループ、コラボーションに関する要件があります。
自動テストはDevOpsと切り離せないため、利用するテストケース管理ツールは、自動化ツールと統合するのはもちろんのこと、手動の探索テスト、スモークテスト、受け入れテストにも対応できなければなりません (通常、ソフトウェアのエンドユーザーは人間である以上、機能をテストする際にいくらか人間が関わるのが有効である場合は多いものです)。
さらに、DevOpsワークフローはCI/CDアプローチによってソフトウェアを開発するため、テスト管理ツールはGitLabやJenkinsなどのCI/CDツールと統合できる必要もあります。
アジャイルテストケース管理のベストプラクティス
1.テストケースを分類する
テストケースを論理的なグループまたはテストスイートに分けると、テストケースを見つけるのが容易になったり、特定の対象にテスト作業を集中したりできます。
2.テストケース名に注意を払う
テストケース名はわかりやすく、所属するプロジェクトやテストケースの目的を明示するものであるべきです。何千というテストケースを扱うことになる以上、わかりやすい命名規則を考えることが重要です。
テストケースが再利用可能なオブジェクトに関連付けられている場合、それも名前に取り込みます。事前条件、添付ファイル、テスト環境データに関する詳細は、テストケースの説明に含めます。
3.監修者の視点を持つ
テストケースを作成したら、批判的な目で検証します。テスト手順は明確かつ正確か?期待されるテスト結果は明確に定義されているか?必要なテスト環境の詳細が含まれているか?現実のユーザー条件に一致しているか?
中央リポジトリのすべてのテストケースが単一のプロジェクトのためのものであるか?承認された他のユーザーがコメント、添付ファイル、レポート、その他のフィードバックを追加できるか?
4.早期に反復的テストを行う
アジャイルテストファネルは、できるだけ早くテストを開始することを必要とします。ブレインストーミングや要件管理にQAメンバーを関与させ、テスト設計に有意義な貢献ができるようにします。機能が共有のコードベースに入ったら、すぐにテストするべきです。製品に漸増的な改善を導入するためにテストを活用します。
シフトレフトテストを実践することで開発プロセスのより早い段階で欠陥を捕捉し、最終的には、後の段階や運用で致命的な問題が浮上する確率を低減します。これは、コストの高い手戻りや遅延を防ぐのに役立ち、開発プロセスをスピードアップしてよりスムーズな反復を保証し、変更に合わせてすばやくテストケースを調整することを可能にします。
5.賢く自動化する
自動化により、テスト作業の増加に比例して手作業を増やすことなくスケールアップできます。自動テストは必要に応じて実行でき、時間帯を問わず継続的テストカバレッジを提供するため、繰り返し実行される時間のかかるテストケースを自動化すると、探索的テスト、創造的問題解決などのより複雑で重要な手動テストタスクやテストの戦略的な側面に時間とリソースを割り当てることができます。
6.トレーサビリティを維持する
各テストケースを対応する要件、ユーザーストーリー、機能にリンクします。トレーサビリティは、テスト作業がプロジェクトの目標に直結するよう保証し、進捗の追跡に役立ちます。テストケースから要件をたどることで、優先度の高い機能およびそれに関連するテストを特定できます。そして今度は重要な機能が徹底的にテストされることを保証し、リスクの管理に役立ちます。
また、トレーサビリティはどの要件がテスト済みであるか、テストの結果、テスト作業の全体的な進捗を示し、ステークホルダーに正確なステータスレポートを提供します。さらには、規制の厳しい業界の企業にとっては、トレーサビリティはコンプライアンス標準を維持するための要件であり、顧客に製品をリリースする前に製品の品質を検証するために従っているプロセスを証明するのに不可欠です。
以下は、どのようにテストケーストレーサビリティを保証するかに関するヒントです。
- 要件を理解する: プロジェクトの要件、ユーザーストーリ、受け入れ条件を明確に理解していることを確認します。これは、テストケースを正確に結び付けるのに役立ちます。
- テストケースをリンクする: 作成した各テストケースが対応する要件またはユーザーストーリーに直接リンクされるようにします。
- テスト管理ツールを使用する: トレーサビリティ機能を備えたテスト管理ツールを利用します。
7.テスト管理ツールを使用する
テストケース管理専用のツールを利用し、テストケースを分類、追跡、管理することで、トレーサビリティとコラボレーションが容易になります。単一のプラットフォームでテストケースを管理する方法についてビギナーにもわかりやすい情報を求めているのであれば、こちらのTestRailのテストケースに関する動画をご覧ください。
適切なテストケース管理ツールを選択する方法
テストケース管理ツールは、1つのソフトウェアテストプロジェクトで必要とされるすべてのテストケースを追跡し、管理し、モニターするため、注意深くテストケース管理ツールを選択することが重要です。
1.容易に使い始められるツールを探す
適切なテストケース管理ツールは、比較的容易に使い始め、すばやく操作できなければなりません。直感的なUI(ユーザーインターフェイス)は譲れません。どのようなレベルの関係者に対してもユーザーフレンドリーで、技術メンバー以外もログインして必要なテストデータを探せるべきです。
2.トレーニングおよびサポートの詳細を確認する
ベンダーはある程度の導入支援またはトレーニングおよびライブデモを提供している必要があります。ツールのカスタマーサポートオプションに関する詳細を確認するのを忘れないようにしましょう。有償ツールのトラブルシューティングを自力で行うより疲れることはありません。
3.ツールがサードパーティ製ツールを統合できるかどうかを確認する
テストおよびプロジェクトフローを容易にするには、サードパーティ製ツールと統合可能なテストケース管理ツールを選択するべきです。たとえば、TestRailはJira統合機能を備えているため、テストチームがプロジェクト内でタスクを作成して追跡できます。最低限でも、一般的に利用されるテストプラットフォーム、言語、フレームワークと統合可能なテスト管理ツールが適切です。
4.しっかりしたレポートおよび解析機能を備えたツールを探す
さまざまなレベルでレポートを取得できるよう、テスト管理ツールは専用のレポート機能を備えているべきです。テストカバレッジを記録し、成功/失敗率に加えてバグ追跡が可能なツールを選択します。ここでもやはり、直感的なUIが重要になります。
現代のアジャイルソフトウェア開発プロセスに対応したテストケース管理を構築すると、プロジェクトに簡潔性をもたらすことができます。テスト計画に注意深く投資し、ベストプラクティスや方法論を取り入れ、TestRailなどのテストケース管理ツールを活用して、テストサイクルを完璧に近づけます。
TestRailがどのようにアジャイルテスト導入に役立つかを詳しく知るには、無料のTestRail AcademyのTestRailによるアジャイルテストに関するコースを参照してください。
アジャイルテストケース管理FAQ
アジャイルテスト管理のよくある課題は何ですか?
課題 #1: 変化する要件
アジャイルワークフローでは、プロジェクトの途中で要件、スコープ、優先順位さえも変化することが当たり前です。一般的に、アジャイルチームは変化を予期していますが、スプリントの終盤で大きな変化が発生すると、変化に対応するのが難しい場合もあります。
解決方法: テストケースに優先順位を付ける
このようなシナリオを避けるため、品質保証チームは変化する要件に基づいてテストケースに優先順位を付けるべきです。これは、まず重要な機能のテストに集中し、後で重要度の低い機能のテストを行うことを意味します。
解決方法: オープンで透明なコミュニケーションを維持する
テスター、開発者、製品オーナー間のオープンで透明なコミュニケーションチャネルを維持する必要もあります。変わる可能性が最も高い要件はどれだと思うかをステークホルダーに尋ね、要件の変更およびその影響について定期的に議論し、要件が変更された場合には、テストチームは締め切りの延長を必要とする可能性があることをステークホルダーに知らせましょう。
解決方法: トレーサビリティを維持する
要件、ユーザーストーリー、テストケース間のトレーサビリティを維持します。トレーサビリティはカバレッジの不足を認識するのに役立ち、開発ライフサイクル全体の可視性をもたらし、リソースを節約しながら開発を加速します。
課題 #2: フィードバックが遅い
適切なテスト環境や有効なテストケース管理ツールにアクセスできないためにテストが遅れる場合があります。このような場合、継続的テストに必要なフィードバックループも遅くなります。これは、テストプロセス全体の効率を低下させ、市場投入スピードを減速させます。
解決方法: 継続的改善
定期的にテストプロセスを見直し、最適化することで、ボトルネックおよび改善対象領域を見つけ出します。テストサイクルからのフィードバックを使用して調整を行います。
解決方法: 有効なツールを使用する
テスターが必要なすべてのリソースを利用できるようにします。テストの実行に Apple デバイスが必要なら、入手できなければなりません。プロジェクトに複数のチームが関わっている場合は、効率的なテスト実行、レポート、コラボレーション機能を備えた中央化されたテスト管理ツールでコラボレーションできるようにします。
課題 #3: 大規模なコラボレーションが難しい
アジャイルは、あらゆるレベルでコラボレーションを重視します。しかし、言うは易し、行うは難しです。大規模な組織では、複数のチームによるコラボレーションに何十、何百という人間が関わることもよくあります。洗練された仕組みがなければ、このような環境で実際にコラボレートするのは不可能になります。すべての変更に関して、これほど多くの人間が共通認識を持ち続けるにはどうしたらよいのでしょうか?
多くのテスト管理ツールは、大規模なチームや極端に多いテストアクティビティに対処できるよう設計されていません。これは、成功に必要な適切なツールがない、あるいは個別に購入しなければならないという問題につながります。コストが法外に上昇し、テストケース管理が不十分、不適切、あるいはでたらめになる可能性もあります。持続可能な方法でテストをスケールアップするには、エンジニアがより包括的なテスト戦略に役立つ作業に時間とスキルを集中できるよう、柔軟なソリューションを見つける必要があります。
解決方法: 適切なテストケース管理ツールを選択する
機能横断的チームのコラボレーションを支援し、テスター、開発者、その他のステークホルダーがテストのケースの設計、実行、レポートでコラボレーションするのに最適なテスト管理ツールを選択しましょう。
テスト自動化フレームワークやJiraなどのアジャイルプロジェクト管理ツールと統合でき、テストに関連するすべての情報の中央リポジトリとして機能し、トレーサビリティを保証できるのが効果的なツールです。
高成長のスタートアップから上場企業へと成長する過程で、EventbriteがどのようにTestRailを利用してQA運用とソフトウェアテストをスケール化させたかについて参照してください。
効率的なテストケース管理の主な利点
生産性と効率の向上
テスト管理では、何もかも自動化するのが望ましいとはかぎりません。特に一部の領域が適切にカバーされていない場合など、場合によっては、手動テストによってプロジェクトのすべてのコンポーネントを徹底的にレビューするほうがメリットが大きいこともあります。最適なレベルで自動化を実現し、手動テストとのバランスを取ることで、テストケース管理は時間、労力、リソースを節約しながら、市場投入までの時間を短縮するのに役立ちます。
テストカバレッジの増加
現実への影響力に従ってテストケースを整理し、中央化された場所にテストデータを保存することで、テストチームはテストカバレッジを増加させることができます。それによって、すべてのチームメンバーが同じ前提を共有し、製品がリリースされる前に欠陥検出漏れを減少させ、結果としてリスクを最小化することができます。
TestRailなどの中央化されたテスト管理ツールは、QAプロセスの穴を特定し、開発プロセスを合理化し、テストカバレッジを視覚化することによって、テストカバレッジの増加に役立ちます。
トレーサビリティとレポートの改善
適切なテスト管理ツールは、トレーサビリティおよび確実なレポートというさらなるアドバンテージをもたらします。テスト管理ツールを使用してトレーサビリティを実現すると、テスト範囲を管理し、マイルストーンを追跡し、締め切りを調整するのに役立ちます。
TestRailなどのテスト管理プラットフォームは、結果をリアルタイムで追跡し、問題領域を明確に示したテストレポートを生成することもできます。このようなレポートおよびバグ追跡機能は、テストの成功/進捗を詳細にレポートし、ステークホルダーに伝達するのに役立ちます。
コスト削減
効率的なテストケース管理は、時間、予算、人的リソースの利用状況を最適化します。品質を向上させ、テストサイクル時間を短縮し、市場投入を迅速化し、リアルタイムの更新および正確なレポートを提供することで、テストケース管理は日々の業務を簡略化するだけでなく、費用も削減します。ただでさえ無理をしている多くのQAチームにとって、テスト管理ツールは時間を最大化するいっぽうでプロセス全体を合理化するのに役立ちます。
テストサイクル時間を短縮し、より短い期間により多くのリリースを運用環境にデプロイすることで、TestRailがどのようにコスト削減に役立ったかの事例を参照してください。
コラボレーションの促進
優れたテスト管理ツールは、すべてのテストアクティビティおよび品質メトリクスを中央化されたプラットフォームで追跡することで、チームのコラボレーションを改善し、QAに透明性と可視性をもたらします。効率的なテスト管理を実現するには、利用しているツールでテストケースの結果(手動テストか自動テストかにかかわらず)などを共有し、問題をより迅速に検出するいっぽうで皆が同じ前提を共有できなければなりません。
(この記事は、開発元Gurock社の Blog 「Guide to Test Case Management in Agile (Best Practices + Tools) 」2023年8月23日の翻訳記事です。)
関連する製品
テスト管理ツール TestRail
テストケースの管理やテスト結果の記録、チームでの情報共有など、Excelを使ったテスト管理の業務に限界を感じていませんか?TestRailはシンプルで使いやすいUIを提供し、テストにかかるさまざまな管理コストの削減に貢献します。
■ TestRailの特長 ■
- テストにさまざまな情報を関連づけて一元管理
- Webブラウザー上でテストケースを簡単に入力や編集可能
- テスト実施の準備と結果の共有が容易
- 進捗や比較などのレポートを提供
- 要件 / 課題管理ツールやテスト自動化ツールと連携
日本国内では、テスト管理にExcelを使っていたお客さまからの乗り換えが多く、Web上で完結するテスト管理を実現されています。
TestRail でテスト管理のお悩みを解決しませんか?