
【初心者向け】テスト観点について
テスト観点(test perspective)とは、「ソフトウェアやシステムをテストする際に、評価すべき特定の側面や機能」を指します。
テスト観点は、テストプロセスを計画、設計、実行する際に、目標となる品質要素を明確にすることで、効果的なテストケースを作成し、重要な問題を特定できるようにする役割があります。
これは、製品やサービスの品質向上に大きく貢献する重要な要素であると言えます。
1. テスト観点が必要な理由

テスト観点が必要な理由は、以下のような点が挙げられます。
1.品質保証の効率化
テスト観点を明確にすることで、テストの目的や焦点が明確になり、効果的なテストケースを作成できるようになります。これにより、テストプロセス全体が効率化され、品質保証の精度が向上します。
2.問題の特定と対応
テスト観点をもとにテストケースを作成し、実行することで、重要な問題や不具合を効果的に特定できます。これにより、開発チームが問題に対処し、改善を行うことが容易になります。
3.リスクの低減
テスト観点を明確にしてシステム全体を網羅的に評価することで、機能や性能、使いやすさ、セキュリティ、互換性などのリスクを低減できます。これにより、顧客やユーザーに高品質な製品を提供できるようになります。
4.コミュニケーションの改善
テスト観点を明確にすることで、開発チームやテストチーム、関係者間のコミュニケーションが改善されます。明確なテスト観点を共有することで、互いの理解が深まり、問題解決の効率化や品質向上につながります。
5.プロジェクトの進捗管理
テスト観点を定義することで、テストの範囲や進捗状況を明確に把握できます。これにより、プロジェクトの進捗管理が容易になり、期限内に品質の高い製品をリリースすることが可能になります。
2. テスト観点のデメリット

テスト観点は、品質保証やプロジェクト管理において重要な役割を果たしますが、デメリットも存在します。
1.過剰のドキュメント化
テスト観点を詳細に洗い出し、記録することは品質保証のために重要ですが、あまりにも細かく観点を定義しすぎると、時間とリソースの無駄につながることがあります。ドキュメント作成に費やす時間が長くなり、開発やテストの実作業に割く時間が減少することが懸念されます。
2.テスト観点漏れ
テスト観点が不十分または不適切である場合、効果的なテストケースを作成できず、重要な問題が見逃されるリスクがあります。これは、テスト観点が曖昧であったり、特定の機能や要素に偏りすぎていたりすることが原因となります。
3.テスト観点の過剰な依存
テスト観点は、テストの目標や焦点を明確にするためのガイドラインであり、全ての問題を網羅するものではありません。テスト観点に固執しすぎると、観点外の問題や隠れたリスクを見逃してしまう可能性があります。
4.テスト観点の定義と維持にコストがかかる
開発プロジェクトの初期段階でテスト観点を定義し、開発が進むにつれてそれを更新し続ける必要があります。これにより、プロジェクトのコストが増加する場合があります。
3. テスト観点の要素

ソフトウェアテストは、製品・サービスの信頼性・品質確保のために重要な工程です。
上記を果たすためには、網羅性。効率性の高いテスト設計が重要となります。
そのため、テスト観点はそれらを実現する要素として、多角的な視点から洗い出していくことが必要です。また、テスト観点を考える際に、必要となる要素は以下のとおりです。
1.機能要素
2.検証方法
3.入力条件
4.出力結果
これらの4つの要素を組み合わせながら、テスト観点は設定されます。
次項で各要素について順に解説します。
3-1. 機能要素
テスト観点をまとめる上では「どのシステム・機能を検証する?」を明確にする部分です。
検証すべき機能・動作を要件定義書から洗い出していきます。
機能要素の具体的な例は以下のとおりです。
機能要素の例
・各ページの画面表示機能
・ボタン選択時の画面遷移機能
・入力確認のアラート機能 など
3-2. 検証方法
テスト観点においては、「(対象システム・機能に対し)どのようにテストするのか」を選定する部分にあたります。
それぞれの機能(動作)に対して、何を確認し、どのような検証補法を用いるのかが重要なポイントになります。
具体的には次のような検証方法があります。
主な検証方法
・表示内容確認
・動作確認
・組み合わせ確認 など
3-3. 入力条件
テスト観点を考慮する上で、「テスト対象にどの値・イベントが入力・発生され得るのか」「テスト対象に何をインプットするか」といった各種要素(条件)も必要になります。
入力条件として考えられる例は以下のとおりです。
入力条件の例
・どんな数値が入力され得るか
・文字列の場合、大文字小文字の区別
・空文字・スペース・ゼロ・NULL
・うるう年など、イレギュラーな年月日
・(アプリケーションの場合)音楽が再生終了直前に曲送りするなどのイベント など
3-4. 出力結果
テスト観点を考慮する上で、「テスト対象の出力結果として、何を観察すれば良いのか」という要素(結果)も必要になります。
これらをふまえた上で、出力条件として考えられる例は以下のようになります。
出力条件の例
・異常値が入力された場合、エラーメッセージが出るか
・文字化け、文字切れをしていないか
・入力を意図しない文字種の区別がなされているか
・動画・音声の同期にズレはないか など
4. テスト観点の作り方
引用:https://service.shiftinc.jp/column/5029/
テスト観点の一例として、次のようなものがあります。
・Thomas J.Ostrandの4つの視点
ユーザー視点、仕様視点、バグ視点、設計・実装視点
・国際規格ISO/IEC 25010(JIS X 25010)における8つの品質特性
機能適合性、性能効率性、互換性、使用性、信頼性、セキュリティ、保守性、移植性
しかし、これらはそのままテスト観点として使用するには、まだ粒度が粗いといわざるを得ません。
そこで、実際にテストをするうえで理解しやすいテスト観点を作成するために、テスト観点の各項目を詳細にブレイクダウンする形で作る方法について解説していきます。手順は次の通りです。
①テストの目的を確認する
②「対象」を「部品」に分解する
③「部品」はどんな機能をもつものかを書き出す
④部品の機能にキーワードをつけて回答を書き出す
⑤回答を分類し名詞化する
⑥「(テスト目的)のために(対象)の(部品)の(何)を確認する」に当てはめる
ひとつずつ詳しく見てみましょう。
4-1. ①テストの目的を確認する
プロジェクト目的を達成するために、テストでは何を確認すべきか考えることで、テストの目的が決まります。考えられるテストの目的は次のようなものが代表的です。
・仕様書通りの機能を有しているか
・画面の表示や操作に問題はないか
・複雑な機能は問題なく動作するか
上記以外にも、プログラムに応じたテストの目的を考える必要があります。
開発者とテスターが必ずしも同じではないことも関係していますが、あいまいな指示や目的のままでは、何をどのようにテストするのかが不明瞭になってしまいます。
テスターに対して明確なテストの指示を出すためにも、テスト目的は明確にしなければならないのです。
なお、ここではプロジェクト目的、テスト目的が決まっているものとして進めます。
4-2. ②「対象」を「部品」に分解する
「対象」を「部品」に分解するとは、アクションを起こすのに動作が求められる部分はどこなのかを明確にすることです。
一般的に、開発資料に影響範囲調査から判明した「対象」が記載されています。
しかし、テスト観点を作るには「対象」を適切な部品単位まで分解する作業が必要になるのです。
具体的な「部品」は以下の通りです。
・見える範囲:テキストボックスやボタンなどの画面部品
・見えない範囲:登録、参照、更新、削除などプログラムで制御された機能
ほかにもいくつかの該当する「部品」が存在する場合があります。
開発資料を参考に、思いつく範囲で書き出しましょう。
4-3. ③「部品」はどんな機能をもつものかを書き出す
「部品」まで分解できたら、それぞれの部品が何をするためのものかを書き出します。
いいかえれば、ユーザーが部品に対して起こすアクションを考えることです。
具体的には、次のようなことが考えられます。
・テキストボックス:「入力」するためのオブジェクト
・ボタン:「押下」(クリック、タップ)するためのオブジェクト
・登録機能:何らかの情報を「登録」するための機能
このように、「部品」がどんな機能をもつのかを書き出していきます。
仕様書や開発資料を見て、どのような機能があるのかを整理してください。
4-4. ④部品の機能にキーワードをつけて回答を書き出す
ここでは「条件」「変化」「数」「種類」をキーワードにそれぞれ考えます。
部品であるテキストボックスの機能「入力」を例にそれぞれのキーワードをつなげて考えてみましょう。
【テキストボックスの機能「入力」例】
・入力条件-「入力するための条件があるか?」
ある→編集権限をもつユーザーのみ入力可能
・入力変化-「入力によって変化があるか?」
ある→入力前は空欄、入力後は入力内容が表示される
・入力数-「入力における数はなにか?」
→入力できる桁数、入力できる値
・入力種類-「入力の種類はなにか?」
→半角数字のみ
こうすることで、特定のアクションに対してどのような変化が起こるのかが明確になります。
ひとつの部品につき、複数の回答が得られる場合もあるため、それらもすべて書き出すようにしてください。
4-5. ⑤回答を分類し名詞化する
キーワードをつけて考えた回答を分類し、名詞化するとテスト観点になります。
名詞化とは、回答を端的な名詞に置き換えることです。
具体的にどういうことか、実際の例を見てみましょう。
・入力条件-「編集権限をもつユーザーのみ入力可能=編集権限による」
→権限
・入力変化-「入力によって変化があるか?」
入力前は空欄→初期値
入力後は入力した内容が表示される→表示内容
・入力数-「入力における数はなにか?」
入力できる桁数→入力桁数
入力できる値→入力値
・入力種類-「入力の種類はなにか?」
半角数字→文字種
名詞化を行うことで、システムの基本構造が構築できます。
5. 「(テスト目的)のために(対象)の(部品)の(何)を確認する」に当てはめる
①~⑤で導き出した結果を「(テスト目的)のために(対象)の(部品)の(何)を確認する」にあてはめてみましょう。
具体的には次のようになります。
・テキストボックスの機能が正常かを確認するために、テキストボックスの入力の権限を確認する
・ボタンの機能が正常かどうかを確認するために、ボタン押下の入力値を確認する
上記のように納得できる文章、内容になっていれば、それはテスト観点としてふさわしいと判断できます。
意味が通らない、違和感がある文章・内容なのであれば、①~⑤を見直してみてください。
以上が、簡単なテスト観点のつくり方の流れです。