ソフトウェアテストにおいて、「テスト分析」は重要なプロセスの1つです。しかし、テスト分析は「テスト設計」と混同されることが少なくありません。
テスト分析の正しい意味や進め方を把握していない方も多いのではないでしょうか。
本記事ではテスト分析とは何か、基本からわかりやすくお伝えします。テスト分析の手法から流れ、ポイント、テスト設計との違いまで紹介するため、ぜひ参考にしてください。
- もくじ
1.テスト分析とは
まずはテスト分析の基本事項を整理しましょう。ここでは、テスト分析の定義や、混同されやすいテスト設計との違いについてお伝えします。
1-1 テスト分析の定義
テスト分析とは、「テストベース」を分析し、「何をテストすべきか」を明確にするプロセスのことです。テストベースは要件定義書や設計書、ソースコードなど、実施するテストのもととなる文書や成果物、情報を指します。
テストの実施にあたっては、まず「テスト計画」により目的や日程などの基本事項を明確にします。テスト計画の実施後に行うプロセスが、テスト分析です。テスト分析が不十分だとテストの実施漏れにつながるため、重要なプロセスといえます。
1-2 テスト分析とテスト設計の違い
テスト分析と混同されやすいプロセスとして「テスト設計」があります。両者の違いを把握しておきましょう。端的にいえば、テスト分析は「テスト観点の洗い出し」、テスト設計は「テスト手段の具体化」に焦点を当てるのが違いです。
例として「入力された年齢に応じて料金を算出する機能」のテストを考えましょう。テスト分析では、機能の仕様や設計を把握し、テストすべき観点を洗い出します。たとえば、「大人料金・子供料金が正しく区別されること」といった観点が一例です。
一方のテスト設計では、さまざまなテスト技法を用いながらテスト手段を具体化します。たとえば、「年齢が17歳の場合に500円(子供料金)と表示されること」「年齢が18歳の場合に800円(大人料金)と表示されること」などが挙げられます。厳密には、ソフトウェアの画面仕様を踏まえてテスト手順・期待値を考え、テストケースにまで落とし込みます。
このように、テスト設計の前段階でテスト観点を洗い出すのがテスト分析です。ただし実際には、テスト分析をテスト設計の一部の扱いとして、まとめて実施することもあります。
2.テスト分析方法の2ステップ
テスト分析は、大まかに2ステップで進めていきます。テスト品質を高めるために、正しいテスト分析方法を把握しておきましょう。
2-1 テストベースの分析
まずは、テストベースの分析を行います。具体的には、テスト対象のソフトウェアに関する文書や成果物などを参照し、どのような仕様・設計となっているかの把握が必要です。
ただし、テストレベル(テストの粒度)によって参照すべきテストベースは変わります。
テストレベル | テストベースの例 |
---|---|
システムテスト(ソフトウェア全体) | 要件定義書、ユーザーストーリー(後述) |
結合テスト(複数要素の連携) | 基本設計書、機能仕様書 |
単体テスト(関数やモジュール単位) | 詳細設計書、ソースコード |
こうしたテストベースをもとに、テスト対象の仕様や設計に対する理解を深めます。
2-2 テスト対象要素の洗い出し
テストベースの分析結果を踏まえて、テスト対象となる要素を洗い出します。どの機能や入力項目をテストすべきか、どのような観点・条件でテストすべきか、といった洗い出しが必要です。
たとえば、『年齢欄に18未満の数値が入力された場合は「500円」、18以上の数値が入力された場合は「800円」と表示する』という記載を考えましょう。この場合、下記のような項目がテスト対象要素の例として挙げられます。
- 境界値の前後で表示が正しく切り替わるか
- 無効な年齢(0未満や1000など)の場合に異常な表示が行われないか
- 数値でないデータ(アルファベットや記号)の場合に異常な表示が行われないか
こうした要素をテスト観点やテスト条件として整理し、それぞれに優先順位をつけます。優先度は、テストに要する工数や、不具合発生のしやすさ、不具合発生時のリスクの大きさなどをもとに設定しましょう。
また、テストベースの該当箇所と、洗い出したテスト観点・テスト条件は紐づけしておくことが理想です。双方向のトレーサビリティ(追跡しやすさ)を確保することで、問題が発生した際に必要な情報を参照しやすくなります。
3.代表的なテスト分析手法
テスト分析の効率・品質を高めるうえで、さまざまな手法を取り入れることが効果的です。ここでは、テスト分析において使われる代表的な2つの手法を紹介します。
3-1 HAYST法
「HAYST法」は、テスト分析からテスト実施までのやり方を体系化したフレームワークです。HAYSTは「Highly Accelerated and Yield Software Testing」の略で、「高い速度と成果を実現するソフトウェアテスト」といった意味合いがあります。
本来のHAYST法は、「直交表」というテスト技法を活用してテストケースを生成する手法でした。しかし昨今では、テストベースからの機能洗い出しやテスト条件の抽出などを含む、広範なプロセスをカバーするフレームワークとして広く活用されています。
3-2 ユーザーストーリー
「ユーザーストーリー」は、ユーザーにとっての「理想の体験」を端的なフレーズで表現する手法です。ユーザーの要求を言語化し、プロダクトの価値と結びつけやすくする目的で使われることがあります。
一般的にユーザーストーリーは、要件定義の前段階で採用される手法です。しかしテスト分析においても、システムテストのテストベースとして役立ちます。ユーザーのニーズを簡単に把握できるため、より詳細なテストベースの分析時に理解がスムーズになります。
なお、ユーザーストーリーについて詳しくは、次の記事をご覧ください。
4.テスト分析を成功させるポイント
テスト分析に失敗すると、テストすべき要素が十分に洗い出されず、テストの実施漏れにつながります。テスト分析を成功させ、必要なテストを漏れなく実施するために、次のポイント3つを押さえておきましょう。
4-1 テストベースの不明確な箇所は無くす
テストベースの分析において、不明確な箇所があれば無くしましょう。仕様書や設計書にあいまいな記載があったり、そもそも記載されていなかったりするケースも少なくありません。テスト対象要素を洗い出すうえで、不明確な箇所があると漏れにつながります。
たとえば、先ほどの『年齢欄に18未満の数値が入力された場合は「500円」、18以上の数値が入力された場合は「800円」と表示する』にも不明確な箇所があります。
- 年齢の下限値、上限値はいくつか
- 入力が異常な場合は何が表示されるのか
- 全角や半角の違いはどのように扱われるのか
こうした不明確な箇所は開発者へ早期に問い合わせ、必要な情報を得ておきましょう。なお、不明確な箇所を見つけ出すうえでは、さまざまなテスト技法の知識が必要です。
4-2 過去のテスト結果や不具合表も活用する
過去のテスト結果や不具合表の活用も効果的です。過去にNG判定だったテストケースや不具合の詳細を知ることで、どのようなテストで不具合が出ているのかを把握できます。
テスト観点・テスト条件の洗い出しにおいて、見逃しやすい部分にも気付けるでしょう。また、過去のデータから不具合が発生しやすい箇所を分析することで、優先度の設定もしやすくなります。
4-3 テスト教育をしっかり行う
高品質なテスト分析を実現するためには、テスト教育をしっかり行うことが大切です。テスト技法の知識がなければ、テストベースの不備や不明確を正確に洗い出せません。テスト分析には、テスト教育で学んだ知識が役立つ場面が多いです。
効率的にテスト教育を実施したい企業には、パソコンで学べるeラーニングがおすすめです。なかでも弊社のeラーニングは専門家監修のため信頼性が高く、動画により視覚・聴覚を活かして効率的に学習できます。自社のテスト教育を拡充したい場合は、ぜひお試しください。
ソフトウェア品質セミナー eラーニング版「品質とテストの基本編」
ソフトウェアテストの意義と重要性、並びにソフトウェア業務の概観と品質の考え方を体系的に把握することを目的としています。そして、基本的な発想法の講義を実施し、実業務での活用の視点を提供します。
まとめ:正しいテスト分析を行い、テスト品質の向上を
テスト分析とは、テストベースを分析し、「何をテストすべきか」を明確にするプロセスのことです。「テストベースの分析」「テスト対象要素の洗い出し」の2ステップで進めます。HAYST法やユーザーストーリーといった手法を採用することも効果的です。
テスト分析が不十分だとテストの実施漏れにつながるため、重要なプロセスといえます。本記事の内容を参考に正しいテスト分析を行い、テスト品質を向上させましょう。
ソフトウェア品質セミナー eラーニング版「ソフトウェアテストの設計 技法編」
ソフトウェアテストの設計においてよく使われる、テスト設計技法の使い方とメリット、注意点などを解説しています。テスト設計やテストケースの作成において役立つ知識を提供します。