テストの基礎

マイヤーズの三角形問題

テストの奥深さを語る有名なエピソードとして、「マイヤーズの三角形問題」というものがあります。

マイヤーズは、『ソフトウェア・テストの技法』の著者です。この本は、1980年に日本語版の初版が発売されて以来、数十年経った今でも読み継がれている、テスト分野の名著です。

この『ソフトウェア・テストの技法』の第一章に、「マイヤーズの三角形問題」は記されています。

「マイヤーズの三角形問題」の命題

『ソフトウェア・テストの技法』では、以下のような命題が記されています。

• このプログラムは、カードから3つの整数を読む
• この3つの値は、それぞれ三角形の3辺の長さをあらわすものとする
• このプログラムは、三角形が、不等辺三角形・二等辺三角形・正三角形のうちどれであるかを決めるメッセージを印字する
このプログラムをテストするのに十分と思われる一連のテストケース(すなわち、十分なデータのセット)を、紙に書き記してみよ。

非常に単純なプログラムですが、これをテストする場合、どのようなテストケースが考えられるでしょうか。

「マイヤーズの三角形問題」の回答例

マイヤーズは、14パターンのテストケースが考えられるとしています。

<テストケースの例>
• 有効な不等辺三角形
• 有効な正三角形
• 有効な二等辺三角形
• 1つの辺がゼロの値を持つ場合
• 1つの辺が負の値
• すべての辺が0 など

この回答例は、テストケースそのものではなく、テストケースの十分性を評価するパターンを挙げたものです。このパターンを踏まえてテストケースを作成すると、その件数はより多くなります。

機能仕様の単純さに比べて、想像よりもさまざまなテストケースがあると思いませんか?
しかし、ここで着目すべきは、テストケースの数ではありません。
大事なのは、「一つひとつのテストケースに、それぞれ意味や意図がある」ことです。

テストケースは、機能仕様書から単純に抽出できるものではありません。
テストとは、

  • 何を
  • 何のために
  • どんなテストを行うのか

を考えることが重要で、そのために用意周到に計画し、設計して、導き出す必要があるのです。
テストの計画・設計方法を学ぶ上で知っておくべきテストの基礎を、これから学んでいきましょう。