ソフトウェアテストの流れ
早速ですが、皆さんはソフトウェアテストのプロセス(工程)をご存知でしょうか?
JSTQB(※)によると、テストプロセスを構成する主な活動を以下のようにグルーピングしています。どのプロジェクトも基本的なテストプロセスは、「テスト計画~テスト完了」の順序で進行します。

テスト計画とは
テスト計画とはテスト活動全体におけるルールです。
このような内容のテストを、このような方法で、このような日程で行いましょう、ということを定めたドキュメントです。テスト計画を作成する目的は様々ですが、主に以下のようなものが挙げられます。
・十分な品質のテストを実行できる
どの程度の品質を目指すのか、テストの範囲、内容を明確に定義することで、抜け漏れなく意図した製品品質まで引き上げるためのテストを実行することができます。
・関係者間の認識の齟齬を防ぐことができる
テストにはプロジェクトマネージャ、開発者、テスト設計者、テスト実行者等、様々なステーク ホルダーが存在します。共通の認識でテストを実行することで、認識齟齬によるミス、トラブルを防止することができます。
・プロジェクトリスクを低減させることができる
テストにはプロジェクトマネージャ、開発者、テスト設計者、テスト実行者等、様々なステーク ホルダーが存在します。
共通の認識でテストを実行することで、認識齟齬によるミス、トラブルを防止することができます。

テスト計画に含まれる内容として、下記のようなものがあります。
・テストの目的
・テストの内容
・テスト環境
・テストの開始、終了基準
・テスト成果物の定義
・体制とスケジュール
上記のうち、最も重要であり、最初に定義する必要があるのがテストの目的です。
なぜなら、テストの目的こそが実行するテスト全体を表現したものであり、どのようなテストスコープ、テスト内容が適切であるか判断されるからです。
【例1】
新規製品・サービスのリリースを行うための評価
・すべての機能からバグが検出される可能性があるため、全機能でのテストが必要
・品質向上のため、機能テスト・非機能テストなど幅広いアプローチでのテストが必要
【例2】
リリース済みの製品・サービスの機能追加、変更が入る際の評価
・追加・変更される機能で新規リリース同等のテストが必要
・既存の機能が新規・変更機能の影響を受けて不具合が発生しないかの確認も必要
【例3】
限定的な目的。ユーザビリティ評価や負荷テスト
・それぞれの目的に応じた範囲、実施内容の検討が必要
テストの目的からテストスコープ、テスト内容を定めた上で、その情報を中心としてテスト環境、開始終了基準、成果物の定義、体制・スケジュールなどを定めていきます。
例えば、専門知識を要するテストを実行する際、その知識を備えた人員を配置することを決める、など目的を定めぬまま、他の要件を定義すると適切なものとならず、テスト実行に支障をきたす可能性があります。

テスト計画を作成するためには様々な情報が必要となりますが、その多くはお客様とのヒアリングから収集します。
この際、現場に詳しいエンジニアが同席することで、多くの情報を引き出し、より品質の高いテスト計画を作成することができます。
テストの内容について
-テストの粒度はどの程度がいいのか (個々の機能を詳細な条件でテストする、ざっと確認する 等)
- 機能テスト以外のテストの要否 (非機能テスト、負荷テスト、脆弱性診断)
-開発でバグが出そうだと気になっている点、重点的に見て欲しい機能等
テスト環境について
- アプリ、サービスの推奨環境
- ターゲットユーザーが使用する環境
- テスト時に提供可能な環境、本番環境と異なる点等
スケジュールについて
- 仕様が固まるタイミング (見積り、テスト設計開始スケジュールに影響)
- テスト環境が整うタイミング (テスト実行開始スケジュールに影響)
- リリース時期 (テスト業務終了スケジュールに影響)等
その他
- 成果物の形式、提出方法
- 窓口の担当、コミュニケーション方法等
