マイヤーズの三角形問題

この問題は最近買ったテスト本に載っていたのだが、結構本質を突いていて面白いと思った。テスト技術者としての経験や能力を測るための、ひとつの指標。

あるプログラムのテストを実施する。

  • このプログラムは、カードから3つの整数を読む。
  • この3つの値は、それぞれ三角形の3辺の長さを表すものとする。
  • プログラムは、三角形が不等辺三角形、二等辺三角形、正三角形のうちどれであるかを決めるメッセージを印字する。

これらの条件から、プログラムのテストケースを考えよ。


自分が考えたテストケースは、次のようなものだ。

  1. ケース:入力時引数の個数を2個以下にしてプログラムを実行する。
    • 想定される結果:対応するエラーメッセージが出力される。
  2. ケース:入力時引数の個数を4個以上にしてプログラムを実行する。
    • 想定される結果:4個目以降の引数が切り捨てられる。
  3. ケース:入力時の引数に、整数でない値を与えてプログラムを実行する。
    • 想定される結果:対応するエラーメッセージが出力される。
  4. ケース:入力時の引数に、3つの整数を与える。ただし、1つは0以下の整数を与える。
    • 想定される結果:対応するエラーメッセージが出力される。
  5. ケース:入力時の引数に、3つの正整数を与える。ただし、3数を小さい順に a, b, c とするとき、 a + b <= c であるとする。
    • 想定される結果:対応するエラーメッセージが出力される。
  6. ケース:入力時の引数に、3つの正整数を与える。ただし、値は3つとも異なるとする。また、3数を小さい順に a, b, c とするとき、 a + b > c であるとする。
    • 想定される結果:不等辺三角形と出力される。
  7. ケース:入力時の引数に、3つの正整数を与える。ただし、値は2つが同じであるとする。また、3数を小さい順に a, b, c とするとき、 a + b > c であるとする。
  8. ケース:入力時の引数に、3つの正整数を与える。ただし、値は3つとも同じであるとする。
    • 想定される結果:正三角形と出力される。