No.11のテスト項目をご覧ください。二等辺三角形のメッセージが漢字の「二」になっています。仕様を確認してみましょう。
「3辺の値のうち、2辺が等しい場合は、画面に「2等辺三角形」と出力する。」
そのため、画面には「2等辺三角形」と表示してほしい所が、「二等辺三角形」となっており、仕様と食い違っています。
このバグは、仕様とプログラムのどちらが間違っているか判断するのが迷います。今回の問題では、正三角形の場合は、「三」と漢字で表記していますが、「2等辺」は数値となっており、一貫性がありません。このような場合は、仕様定義者に確認を取り、判断する必要がありそうです。
今回は、仕様に合わせるとして、「2等辺三角形」が正しいこととしました。
メッセージの間違いは、軽微なバグなのですが、ユーザーに「本当に真面目に作っているのか?」と不信感を与えることがあります。特に、ユーザーインタフェースには、注意が必要です。筆者の経験上、メッセージやレイアウトなどは、見る人の嗜好により、何回も修正が入ることが多く、時間を取られます。その場合、外見に時間を浪費し中身がボロボロになりかねません。
テストで見つかるバグではありませんが、プログラムを眺めていると、コメントにおかしい所があります。main関数のコメントをリスト4に示します。
/*********************** * 関数名: main * 機能 : (1)辺1〜3を初期化する。 (2)辺1〜3の値をコンソールからそれぞれ取得する。 (3)三角形を判定する。 * 引数 : 辺の値 * 戻り値: なし ***********************/
リスト4が、main関数のコメントです。引数がないにもかかわらず、引数があることになっています。また、戻り値もなしになっています。
これは、筆者がコメントを作成している時の記述ミスです。コメントは、プログラムを見直す際のヒントになるのですが、コメント自体にもバグがあることに注意してください。コメントのバグは、機能追加や変更を実施する保守フェーズで「誤解の素」になります。
今回の自己採点シートを示します。
問題 | 項目 | 配点(点) |
---|---|---|
三角形判定プログラム | 問題に挑戦した | 25 |
自分のテスト項目とテスト項目例を比較した | 25 | |
半角・全角のどちらを入力するべきか悩んだ | 5 | |
テスト項目から、「0」、「空白」がエラーにならないバグを検出した | 15 | |
テスト項目から、「三角形の成立条件」が機能しないバグを検出した | 15 | |
テスト項目から、2等辺三角形のメッセージが仕様と一致しないことを検出した | 10 | |
main関数のコメントのバグを見つけた | 5 | |
その他のバグを見つけた | 1件当たり+5 | |
表3 自己採点シート |
テストには、「検証」という「後戻りの作業」が多くあります。今回は、前回の三角形判定問題のテスト項目とバグを示しました。
テスト項目や修正方法が皆さんと完全に同じになることはないと思います。また、筆者が想定できなかったバグもあるでしょう。今回の問題を題材として、自分なりの考察をしていただければと思います。
この問題は、グレンフォード・マイヤーズが書いた「ソフトウェア・テストの技法」の三角形判定問題を参考にしています(参考文献[1])。この問題は、テストの例題によく登場する問題です。一読をお薦めします。
[1]ソフトウェア・テストの技法 第2版(グレンフォード・J・マイヤーズ 他、2006年、近代科学社)
東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)
Copyright © ITmedia, Inc. All Rights Reserved.