基本的なテストプロセスにおけるテストの活動・Part 2
基本的なテストプロセスにおけるテストの活動・Part1では、「テスト計画」「テストのモニタリングとコントロール」「テスト分析」の、最初の3つのテストプロセスにおける活動を紹介しました。本記事では、次に続く2つの活動を一緒に見ていきましょう。
- テスト設計
- テスト実装
テスト分析段階でテスト対象を特定した後、その対象をどのように検証するかを明確にする必要があります。この活動が「テスト設計」と呼ばれます。
④テスト設計
テスト分析で明確にしたテスト条件を元にして、高位レベルテストケース、および他のテストウェア(テストデータやテスト環境設計書)を設計していきます。これが「テスト設計」と呼ばれます。
テスト設計活動には、次の4つの主な活動があります。
テストケース及ぶテストケースのセットを設計し、優先度を割り当てる
テストベース分析が完了した後、テスト計画に基づいてテスト設計を開始し、大項目から中項目といった粒度でテスト条件を高位レベルのテストケースに変換します。高位レベルのテストケースとはテスト手順や期待結果などの詳細を含めないものです。
このように、テスト手順や期待結果などを詳細に検証するのではなく、テスト条件を網羅するようにテストを設計していきます。この網羅性を満たすためには、要件や仕様に対するカバレッジと、システムやソフトウェアの構造に対するカバレッジの両方を考慮する必要があります。
また、テストアプローチに基づいて、テストケースごとに優先度を割り当てます。
テスト条件とテストケースを支援するために必要なテストデータを識別する
各項目レベル(単体テスト)や項目が結合したシステムレベル(結合テスト)で用意すべきテストデータの違いを検証し、必要なテストデータを識別します。また、検証レベルごとに適切なテストデータを明確にします。
テスト環境を設計し、必要なインフラストラクチャーやツールを識別する
物理的と論理的な両方の視点から、必要なテスト環境を識別します。
- 物理的な視点では、テスト環境と開発環境を分ける必要があるかどうかを検証します。ミルドウェア、オペレーティングシステムのバージョン、バンドルアプリケーションの種類、ネットワーク連携アプリケーションなどを考慮して、適切な組み合わせを検証します。
- 論理的な視点では、テスト実行時におけるファームウェアやミドルウェアの可変パラメーターのデフォルト値や、可変なテーブルの設定を検証します。
テストベース、テスト条件、テストケースの間で双方向のトレーサビリティを確立する
開発が進む中で、双方向のトレーサビリティを確立できない場合はプロダクトの開発における一貫性を保つことができません。
例えば、要件定義書があり、そのトレーサビリティが確立されていれば、要件定義書に変更があった場合に関連するテストケースを早期に特定でき、一貫性を保つために適切な修正を行うことができます。
逆に、トレーサビリティの管理が不十分な場合は、テストケースと要件の間に変更のずれが生じやすく、重大な欠落や誤りを引き起こすことがあります。
⑤テスト実装
テスト実装段階では、テスト設計で作成された高位レベルのテストケースから詳細なテストシナリオやテスト手順を作成します。また、テスト環境の構築もこの活動に含まれます。
さらに、テスト担当者に必要なスキルも特定し、テストケースやテスト手順はテスト担当者のレベルに合わせて記載する必要があります。
テスト実装には以下の6つの主要な活動が含まれます。
テスト手順を開発して優先順位を割り当てる。場合によって自動化のテストスクリプトを作成する
テスト設計に基づいてテストケースとテスト手順の作成を行います。テスト実行の優先順位はテスト計画とテスト設計によって決定されます。ただし、この優先順位は実装上に変更されることがあります。
自動テストの場合は、手動テストの実行を自動化する方法と、テスト対象からツールを使用して自動的にテストケースやテスト手順を生成する方法があります。それぞれの方法に応じて、テストスクリプトを準備しておきます。
テスト手順やテストスクリプト(あれば)からテストスイートを作成する
一般的には、テスト手順やテストデータの作成とテストハーネスの準備は並行して行いますが、その前提としてはテストハーネスの仕様が決まっている必要があります。テストハーネスを使用してテストデータを作成する場合はテストハーネスが完成するまで待ってからテストデータを準備することになります。その後、テストスクリプトを作成します。このような成果物をまとめてテストスイートを整備します。
効率的なテスト実行ができるためにテスト実行スケジュールでテストスイートを調整する
テストスイートはテスト手順やテストハーネスの準備、片づけなどテスト実行の効率を考慮してテストケースをまとめたものです。テストスイートの作成はスケジュールに従うだけでなく、テストの目的も考慮する必要があります。もしテストの目的が機能の確認であれば、同じ機能に関連するテストシナリオを1つのテストスイートにまとめることになります。
テスト環境を構築し、必要なものが全て正しくセットアップされていることを確認する
テスト実行前に、テストツールやテストハーネス、シミュレーション環境など、必要なインフラストラクチャーの準備もこの活動に含まれます。テスト対象となるシステムの範囲はテスト計画によって決定されます。タスク管理においては、テスト環境の全体的な構築に関するタスクと、日々のテスト実行の準備に関するタスクを分けて管理します。
テストデータを準備して、テスト環境に適切に読み込ませてあることを確認する
テスト対象が派生開発(バージョンアップや仕様変更など)の場合、既存のシステムで実際に使用されたデータを活用することがあります。ただし、そのデータには個人情報や機密情報などのセンシティブな情報が含まれている可能性があるので、十分な注意が必要です。
テストベース、テスト条件、テストケース、テスト手順、テストスイートの間で双方向のトレーサビリティを検証し更新する
テストベース、テスト条件、テストケース、テスト手順、テストスイートの間で双方向のトレーサビリティを検証し更新することは、すべての要件とテスト条件が連携され、一貫性を保ちながら管理されていることを確認するためのプロセスです。このプロセスは、全ての要件を漏れなく網羅し、開発段階でエラーや問題を発見することにより、リスクを最小限に抑えるのに役立ちます。さらに、双方向のトレーサビリティを維持することで、関連するテスト条件やテストケースを明確に特定し、テストプロセスを最適化します。これにより、ソフトウェアの品質が向上し、テストの効率も高まります。
本記事では、ソフトウェアテストプロセスにおける2つの活動について学びました。以下のリンクにあるミニテストを行って、これらの活動に関する知識を確認してみましょう!