テストでバグ発見!(1)まずは成人判定プログラムでチュートリアル:山浦恒央の“くみこみ”な話(143)(3/4 ページ)
今回から、提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」が始まります。第1回は、チュートリアルとして成人判定プログラムからバグを発見してみましょう。
5.解答
5.1 今回のバグ
この問題のバグは、「成人となるはずの年齢(例えば60)を入力しても、成人とならない」がバグです。なお、このプログラムでは、21〜58までを成人になるように記述しています。
5.2 出題の意図
今回は、仕様通りの動作を正しくテストできるかを意図しています。成人の幅を21〜58としていますので、最初からバグに気づいた人もいるかもしれません。下記に解説を記載します。
5.2.1 テスト項目の作成例
テスト項目の作成例と出力結果を表3に示します。
No. | 年齢 | 期待値 | 出力結果 | 良否 |
---|---|---|---|---|
1 | -1 | エラー | エラー | 良 |
2 | 0 | 未成人 | 未成人 | 良 |
3 | 20 | 未成人 | 未成人 | 良 |
4 | 21 | 成人 | 成人 | 良 |
5 | 200 | 成人 | エラー | 否 |
6 | 201 | エラー | エラー | 良 |
表3 テスト項目作成例 |
表3に示す通り、この問題のバグは、No.5で200を入力した際に出力結果の良否が「否」となることです。
今回は、1次元の範囲をテストすれば検出できる問題です。最も一般的なやり方が、同値分割・境界値分析で仕様の両端をテストするものです。その結果、リスト2のようなテスト項目となります。境界の2点だけでは不安の人は、「-1」「0」「1」「19」「20」「21」「199」「200」「201」と3点ずつテストしても構いません。
また、人によっては、代表値、例えば、「10」「60」などもテストする場合もありますし、最大・最小の「3000」「-3000」のような値を試してもよいでしょう。
5.3 バグレポート
バグレポートの作成例を図5に示します。
5.4 気付き事項作成例
今回の例では、例えば、以下が考えられます。
- 将来の成人年齢の変更に合わせて、未成人と成人の境目を18歳に変更可能にすべきではないか
6.終わりに
新シリーズとして、動かしてバグを見つける実践問題集「テストでバグ発見!」をスタートしました。バグは見つけられましたか。今回はチュートリアルですから、まずは、やり方をつかんでいただければOKです。
次回から、もう少し難しい問題にする予定です。本コラムに取り組み、バグ検出の練習と、事象を正しく説明する力を養っていただければ幸いです。
Copyright © ITmedia, Inc. All Rights Reserved.