連載
» 2021年08月17日 10時00分 公開

テストでバグ発見!(2)自動販売機シミュレーターのバグを見つけろ!山浦恒央の“くみこみ”な話(144)(3/4 ページ)

[山浦恒央 東海大学 大学院 組込み技術研究科 非常勤講師(工学博士),MONOist]

4.解答

4.1 今回のバグ

 この問題のバグは、「在庫が1の商品が購入できない」「総額エリアに1万円以上投入できる」です。見つけられたでしょうか。

4.2 出題の意図

 テストでは、さまざまなケースを想定することが大事ですが、正常機能を確実に確認することが重要です。今回は、複雑な組み合わせケースのテストではなく、シンプルに、仕様通りの動作をするかのテストを意図しています。

4.3 テスト項目の作成例

 テスト項目の作成例を以下の表3に示します。

No. テスト項目 期待値 出力結果 良否
1 金額投入が正しく実施できることを確認する
手順:
金額投入エリアで「5000円投入」「1000円投入」「500円投入」「100円投入」「50円投入」「10円投入」を選択し、総額エリアの総額が正しいことを確認する
総額 5000 総額 5000
メッセージ 5000円を投入しました メッセージ 5000円を投入しました
2 総額 1000 総額 1000
メッセージ 1000円を投入しました メッセージ 1000円を投入しました
3 総額 500 総額 500
メッセージ 500円を投入しました メッセージ 500円を投入しました
4 総額 100 総額 100
メッセージ 100円を投入しました メッセージ 100円を投入しました
5 総額 50 総額 50
メッセージ 50円を投入しました メッセージ 50円を投入しました
6 総額 10 総額 10
メッセージ 10円を投入しました メッセージ 10円を投入しました
7 総額が上限金額を超える場合は、金額を投入できないことを確認する
手順:
金額投入エリアで「5000円投入」「1000円投入」「5000円投入」を実施し、5000円投入が実施されないことを確認する
総額 5000 総額 5000
メッセージ 5000円を投入しました メッセージ 5000円を投入しました
総額 6000 総額 6000
メッセージ 1000円を投入しました メッセージ 1000円投入しました
総額 11000 総額 11000
メッセージ 5000円を投入しました メッセージ 5000円投入しました
8 商品が正しく購入できることを確認する
手順:
「5000円投入」し、総額が5000円の状態で、下記を実施する
・「コーラ」ボタンを選択
・「オレンジ」ボタンを選択
・「サイダー」ボタンを選択
・「スポドリ」ボタンを選択
・「コーヒー」ボタンを選択
・「お茶」ボタンを選択
・「紅茶」ボタンを選択
・「ビール」ボタンを選択
総額 4900 総額 4900
メッセージ コーラを購入しました メッセージ コーラを購入しました
9 総額 4760 総額 4760
メッセージ オレンジを購入しました メッセージ オレンジを購入しました
10 総額 4640 総額 4640
メッセージ サイダーを購入しました メッセージ サイダーを購入しました
11 総額 4560 総額 4560
メッセージ スポドリを購入しました メッセージ スポドリを購入しました
12 総額 4460 総額 4460
メッセージ コーヒーを購入しました メッセージ コーヒーを購入しました
13 総額 4320 総額 4320
メッセージ お茶を購入しました メッセージ お茶を購入しました
14 総額 4200 総額 4200
メッセージ 紅茶を購入しました メッセージ 紅茶を購入しました
15 総額 3900 総額 3900
メッセージ ビールを購入しました メッセージ ビールを購入しました
16 総額が足りない場合は、購入できないことを確認する
手順:「10円投入」を選択し、総額が10円の状態で、「コーラ」ボタンを選択する
総額 10 総額 10
メッセージ 金額か在庫が足りません メッセージ 金額か在庫が足りません
17 お釣りボタンが正しく機能することを確認する
手順:
「50円投入」で総額が50円の状態で、お釣りボタンを選択する
総額 0 総額 0
メッセージ 50円を排出しました メッセージ 50円を排出しました
18 在庫0の商品は購入できないことを確認する
手順1:1000円投入
手順2:コーラを5回購入する
手順3:もう一度コーラを選択し、購入できないことを確認する
総額 500 総額 600
メッセージ 金額か在庫が足りません メッセージ 金額か在庫が足りません
表3 テスト項目の作成例

 時間が無制限ならさまざまなテスト項目を考えられますが、120分という制限時間を考慮すると、上記が妥当だと思ます。

4.3 バグレポート

 以下に2件のバグレポートを示します(図6、図7)。

図6 図6 バグレポート1(クリックで拡大)
図7 図7 バグレポート2(クリックで拡大)

4.4 気付き

 今回は、意図したバグ以外でもさまざまな箇所に疑問や曖昧さを感じた人もいるでしょう。例えば、以下です。

  • ボタンの大きさから商品名の文字数が増えると表示枠が足りなくなる
  • 画面が小さいため、見づらい

5.終わりに

 今回は自動販売機を模擬したプログラムを題材としたバグ検出問題を出題しました。前回より量が多く、混乱する要素も多かったと思いますが、いかがでしょうか。テストを実施する際、複雑な条件が重なった異常ケース、組み合わせケース、最大構成ケースをチェックする前に、まずは、正常機能をテストすることが重要です。異常ケースばかり考えていると、正常ケースの実施を忘れることが少なくありません。

 上記の2件以外にもさまざまなバグがあると思います。併せて見つけていただければと思います。

 本コラムから、バグ検出の練習と事象を正しく説明する力を養っていただければ幸いです。

Copyright © ITmedia, Inc. All Rights Reserved.