テスト設計で「テスト観点」という言葉がよく使われるのですが、意味が広く、議論の発散の要因になりがちと感じています。そこで、今回は「テスト観点」の用語について、前提の「観点」の用語とともに簡単に解説したいと思います(いろいろな定義付けがされている言葉なので、あくまで筆者の見解になります)。
観点とは
まず「観点」という用語ですが、これは「着目したい特質・側面の方向性」という意味付けの言葉です。
例えば椅子について考える場合ですと、「上から見たらどう観えるか」「前から見たらどう観えるか」といったものが観点になります。また空間座標的なものに限らず、次のようなものも観点に該当します。
- 重さはどうか、材質はどうか、耐用年数はどうか
- ●●の規格に適合しているか
- ●●のレビューサイトでの評価はどうか
このように観点には多種多様なものがあります。
なお観点を愚直に表現すると長くなるので、しばしば観点は単語に省略表記されます。例えば「重さはどうか」「材質はどうか」「耐用年数はどうか」といった観点は、観点のモデリングなどでは「重さ」「材質」「耐用年数」と省略表記される場合がよくあります。
観点の用途
観点の用途として、主に以下の2つがあります。
- 対象の側面・特質を観察・分析するために使われる
- 例えば、ソフトウェアを作ろうとする際に、作りたいソフトウェアを表現するために、複数の観点を用います。
- 側面・特質の観方を明示するために使われる
- 例えば、テストエンジニアのテスト設計のノウハウを明示化する際に、対象者の特質を明示するため、対象者の観点を抽出します。
観点の導き方
観点は、目的と制約に沿って導かれ、使用されます。
目的に基づいた観点の選択
まず観点は目的に沿って選ばれます。
例えば「大きな椅子を部屋に運び込めるか明らかにする」という目的があるとします。
この目的を詳細化すると例えば「椅子がドアの枠内に入るか明らかにする」という目的が出てきます。するとその目的達成手段の検討のために、「椅子の高さはどれぐらいか」「椅子の横幅はどれぐらいか」という観点が導かれます。
また詳細化で「椅子を手で運べるか明らかにする」という目的が出てきます。するとその目的達成手段の検討のために、「椅子の重さはどれぐらいか」という観点が導かれます。
このように目的達成の手段の検討を支えるため、観点が導出されます。
制約に基づいた観点の選択
一方、観点は制約に見合うように選択・整理されます。
ここでいう制約の代表的なものとして、時間・人・コストなどのリソース制約があります。観点は無数にありますが、リソースは有限です。リソースに見合うように、観点を整理・絞り込む必要があります。
また観察者の限界もあります。観点が増えすぎると、人間が認知できる限界を超え、観察や分析が困難になります。すなわち観察者が扱えるまで、観点を整理・絞り込む必要があります。
「整理・絞り込み」には、次のアプローチが使われます。
- 必要性の低い観点を捨てる
- 抽象化する
- 関心ごとの分離を行って、分けて考えられるようにする
- 構造化などの整理を行って扱いやすくする
観点を組み合わせる
一定以上の複雑さを持つ目的に対応する場合、多数の観点の組み合わせが求められます。
例えば「立体の椅子の形状を把握する」ことを目的とする場合、正面から見る観点だけでは目的を果たせません。前、上、下、右、左、後の6面と、複数の観点を組み合わせる必要があります。
より複雑な目的に対応しようとすると、必要な観点は更に増えます。例えば「椅子を製造する」という目的ならば、立体形状だけでなく、重さ、材質、加工方法、コスト、材料の納入見込み、耐用年数、製品の品質のばらつきといった観点の検討も必要になります。
こうした観点の爆発に対しては、観点の抽出過程の段階でも、最終的な観点の成果物表現の段階でも、前述の削減・抽象化・分割・整理が求められてきます。
観点を導くためのインプット
観点は様々なインプットを使って導き出されます。
まず観る対象の特質を抽出し、そこから観点をピックアップするアプローチがあります。例えば後述するテスト観点については、テスト対象を記載したテストベースから情報を分析し、テスト設計の観点に反映する場合があります。
また外部から観点を持ってくるアプローチもあります。
よくあるのが観る者の知見に基づいた観点です。「過去の失敗経験に基づいて失敗リスクの高い特質に着眼する」「長年学んできた膨大な知見に基づいて、有効な観点を総合的にピックアップする」「作業している中で感じた気がかりを観点にする」といったアプローチは普遍的に採用されます。
また、外部の形式知を使うアプローチも一般的です。形式知とは、グッドプラクティス、パターン、標準といったものです。ソフトウェア開発ですと、仕様から設計構造を見出すためのGRASPパターンや、ISO25010の品質特性といったものが該当します。なお外部の形式知から観点を導入する際は、対象に合わせた取捨選択やテーラリングが求められるのが一般的です。
テスト観点とは
次に本題のテスト観点についてです。
テスト観点は、テストの活動で使われる観点です。
様々なテストの活動に対応して、様々なバリエーションがあります。例えば次のようなものがあります。
- テストの計画や戦略を検討するための観点(観点の対象:テストの計画や戦略)
- テストのニーズ・シーズからテストの要求を分析するための観点(観点の対象:定義されたテスト要求)
- テストベースから必要なテストを見つけ出すための観点(観点の対象:テストケース)
例えば「テストベースから必要なテストを導くための観点」ですと、具体例としては以下のようなものが該当します。
- ログイン機能のふるまいと仕様書の記載の合致性のテストは必要ないか?
- 通信過負荷時の動作の確認は必要ないか?
- APIの処理速度のテストは必要か?
どれも「テスト観点」と省略されて語られる場合があります。会話の混乱のもとになりがちなので、具体的な意味付けを行いたい場合は、「テスト観点」が具体的にどの観点について語っているか明確化した方が無難です。
一般的なテスト観点の用例
なお一般的にテスト観点というと、「テストのインプット(テストベースなど)から、テストケースを導くために用いる、テストすべき特質や側面」を指す場合が多いです。この観点は、以下の2つに分類されます。
- 目的(What)から目的達成手段(HowTo)への転換の切り口(例えば、要求を実装へ転換するための取っ掛かり)
- 抽象的・曖昧なテストケースから具体的なテストケースへ設計する手段
前者は、テスト分析の切り口です。Ostrandの4つのビュー、企業が公開しているテスト観点表など、形式知化されている観点が代表例になります。後者も包含します。
後者は、いわばテストの意図です。ここではテスト観点とテストケースが全射の関係を持ちます。十分にブレークダウンされたテスト観点はテスト条件として扱えます。