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

提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。第2回は、自動販売機シミュレーターのプログラムからバグを見つけ出しましょう。

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

1.はじめに

 このシリーズでは、筆者がバグを埋め込んだ仕様とプログラムを提示し、テストを設計して実際にバグを見つけるものです。前回は、チュートリアル編をお届けしました。手順が理解いただけたと思います。今回は、いよいよ本番です。

⇒連載「山浦恒央の“くみこみ”な話」バックナンバー

2.前回のおわび

 前回から、「テストでバグ発見!」ということで新シリーズを始めました。早速ですが、その中で、一点間違いがあることが分かりました。

 前回の成人年齢を判定する問題では、成人年齢として、「21歳」を成人としています。それらしく話を進めているのですが、正しくは「20歳」からでした。問題にバグがあるお恥ずかしい状態になり、申し訳ありません。

 問題を作ることに注力しすぎると、問題自身のバグに気付かないことが多々あります。皆さんは、問題自体にもバグがある場合もあると考えながら問題に取り組んでいただければと思います。

 気を取り直して、今回は、自動販売機を題材としたプログラムのバグを検出してください。

3.【問題】自動販売機シミュレーター 制限時間:120分

自動販売機 ※写真はイメージです

 下記に示す仕様と提示するプログラムから、テスト項目を作成し、バグを検出せよ。また、バグを検出した場合は、バグレポートにまとめること。なお、筆者が意図したバグは2件である。

  • 提示物:問題のプログラム(VendingMachine.py)
  • 成果物:記述済みのテスト項目、記述済みのバグレポート

⇒VendingMachine.pyのダウンロードはこちらから

※)使用するWebブラウザや設定によって、上記のリンクをクリックしてもソースコードが文字化けした状態で表示される可能性があります。その場合は、右クリックメニューから「名前を付けてリンク先を保存」を選ぶことでファイルをダウンロードできます。また、ダウンロードしたファイルを開けない、またはセキュリティの観点からWebサイトからファイルをダウンロードして開きたくないといった場合には、記事末付録のソースコードのテキストをコピーして使用してください。文字化けする場合は、utf-8で開いてください。

3.1 概要

 本仕様は、自動販売機の動作をGUI上で模擬するものである。

3.1.1 全体像

 プログラムの実行画面を図1に示す。

図1 図1 自動販売機シミュレーターの画面

 GUIには、「商品エリア」「総額エリア」「金額投入エリア」「メッセージエリア」がある。

3.1.2 商品エリア

 商品エリアは、8個のボタンから購入する商品を選択する(図2)。

図2 図2 商品エリア

3.1.2 総額エリア

 総額エリアでは、使用者が投入した金額の総額を表示する(図3)。また、お釣りボタンを選択することで、投入金額をクリアできる。

図3 図3 総額エリア

3.1.3 金額投入エリア

 金額投入エリアは、6個のボタンから、使用者が投入したい金額を選択する(図4)。

図4 図4 金額投入エリア

3.1.4 メッセージエリア

 メッセージエリアでは、プログラム動作時の状態を文字で表す(図5)。

図5 図5 メッセージエリア
       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.