テストでバグ発見!(2)自動販売機シミュレーターのバグを見つけろ!:山浦恒央の“くみこみ”な話(144)(3/4 ページ)
提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。第2回は、自動販売機シミュレーターのプログラムからバグを見つけ出しましょう。
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)。
4.4 気付き
今回は、意図したバグ以外でもさまざまな箇所に疑問や曖昧さを感じた人もいるでしょう。例えば、以下です。
- ボタンの大きさから商品名の文字数が増えると表示枠が足りなくなる
- 画面が小さいため、見づらい
5.終わりに
今回は自動販売機を模擬したプログラムを題材としたバグ検出問題を出題しました。前回より量が多く、混乱する要素も多かったと思いますが、いかがでしょうか。テストを実施する際、複雑な条件が重なった異常ケース、組み合わせケース、最大構成ケースをチェックする前に、まずは、正常機能をテストすることが重要です。異常ケースばかり考えていると、正常ケースの実施を忘れることが少なくありません。
上記の2件以外にもさまざまなバグがあると思います。併せて見つけていただければと思います。
本コラムから、バグ検出の練習と事象を正しく説明する力を養っていただければ幸いです。
Copyright © ITmedia, Inc. All Rights Reserved.