つれづれなる技術屋日記

しがない技術屋。専門は情報工学で、「つれづれ技術屋」って呼んで。

再考 メイヤーズの三角形問題

知り合いのTwitterのつぶやきで、表題の「メイヤーズの三角形問題」が取り上げられた。ある数値の組み合わせが、どんな三角形の種類なのかというもの。つぶやきでの考えが自分の考えとちょっと違ってたので、「メイヤーズの三角形問題」をもう一度考えてみた/再読してみた。

メイヤーズの三角形問題とは、書籍「ソフトウェア・テストの技法」の冒頭で取り上げられている、読者への試験みたいなもの。

 

 上のAmazonのは、日本語訳の第2版。

 

f:id:honda-jimusyo:20200916112716j:plain左のが日本語の初版。もう35年以上も前の出版で、言わば古典。

なお、第2版ではXPの事などが追記されてるが、本三角形問題の細部で表現などが異なっている(後述)。また、Amazonでは”マイヤーズ”となっているが、ここでは訳本内でも書かれている”メイヤーズ”の表現を用いる。

問題は、第1版ではカードから/第2版では入力ダイヤグラムから、3つの整数を読み込んで、その数字の組み合わせで不等辺三角形、二等辺三角形、正三角形のどれかを印刷/表示するプログラムに対するテストケースを書きなさいというもの。

メイヤーズが記載しているのは、13個のテストケースと、1つの予想される出力を示したかというもの。13個の中に、1つの辺がゼロになるものをテストケースに含めているかとか、1つの辺が負数のものをテストケースに含めているかというのがある。14点満点だけど、プログラマの平均得点は7.8点であるとのこと。

また、「全ての可能なあやまりを見つけられると保証はしないが」と述べてて、細部は自分で考えなさいとのスタンスだ。特に14番目でのエラー時のメッセージ(細部仕様)は、各自で考えなさいと暗に示していると個人的に考える。

 

さて、ここから細部になるけど、12として非整数の話しがある。第1版では非整数のこととしか書いてないが、第2版では”2,5,3.5,5.5”と例示がなってる。つまり数値が4つ。多分、本当は5.5は無いのだろう。(個数が異なるテストは13にある。ただし、例示は2つ。) Twitterので知り合いとのやり取りでは、0詰め数値のことが言われていたけど、それをテストに含めるのは良いことかもしれない。0詰め数値は、3を”03”のように表記する方法。 ちなみに、例示されてるのは”3,3,4;3,4,3;4,3,3”のような表現。";"を便宜的なデリミタと考えて、3と3と4が1つのカードに書かれているなどと読めばいいのか、デリミタなども含めて記述されてるかによるけど、それらに関するテストも気になった。

つまり、先に述べた4つ書かれているケースとか、デリミタまで含めて記述さていたら、”,”の代わりにスペースだったり別記号だった時のテストなどもあった方が良さそうである。 整数でないものとして例示は少数だけど、アスキー文字なども考えられる。 再度深く読んでみると、こんなテストケースもあった方が良いのとか思い付いたから不思議なものである。

そもそも第2版は、GUIによるもので、GUIに絡むテスト項目は無いように思える。疑るような視点で再読してみることをお勧めする。(もしかしたら、検討した人とか検討した発表があるかもしれない。ちょっと探してみる。)

また、ここで示されてる条件でテストを請け負えるかとか、どんなテスト計画にするかとか少し膨らませて考えるのも悪くないかと思う。あるいは示されてることをRFPとして、十分と言えるか、あるいは何が不十分かと考えたりするのも悪くない。 なお、第2版と第3版は、カード→入力ダイヤグラムや印字→表示への変化以外に、有効な数値組み合わせという表現から、意味のあるという表現に変わっている。ただしこれは訳上の変更かもしれないが。久々に版による違いなどが面白いと感じた一時でもあった。

©2005-2022 ほんだ事務所(honda-jimusyo) All rights reserved.