テストでバグ発見!(1)まずは成人判定プログラムでチュートリアル山浦恒央の“くみこみ”な話(143)(3/4 ページ)

» 2021年07月15日 10時00分 公開
※本ページはアフィリエイトプログラムによる収益を得ています

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 図5 成人判定プログラムのバグレポート作成例(クリックで拡大)

5.4 気付き事項作成例

 今回の例では、例えば、以下が考えられます。

  • 将来の成人年齢の変更に合わせて、未成人と成人の境目を18歳に変更可能にすべきではないか

6.終わりに

 新シリーズとして、動かしてバグを見つける実践問題集「テストでバグ発見!」をスタートしました。バグは見つけられましたか。今回はチュートリアルですから、まずは、やり方をつかんでいただければOKです。

 次回から、もう少し難しい問題にする予定です。本コラムに取り組み、バグ検出の練習と、事象を正しく説明する力を養っていただければ幸いです。

Copyright © ITmedia, Inc. All Rights Reserved.