提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。第2回は、自動販売機シミュレーターのプログラムからバグを見つけ出しましょう。
このシリーズでは、筆者がバグを埋め込んだ仕様とプログラムを提示し、テストを設計して実際にバグを見つけるものです。前回は、チュートリアル編をお届けしました。手順が理解いただけたと思います。今回は、いよいよ本番です。
前回から、「テストでバグ発見!」ということで新シリーズを始めました。早速ですが、その中で、一点間違いがあることが分かりました。
前回の成人年齢を判定する問題では、成人年齢として、「21歳」を成人としています。それらしく話を進めているのですが、正しくは「20歳」からでした。問題にバグがあるお恥ずかしい状態になり、申し訳ありません。
問題を作ることに注力しすぎると、問題自身のバグに気付かないことが多々あります。皆さんは、問題自体にもバグがある場合もあると考えながら問題に取り組んでいただければと思います。
気を取り直して、今回は、自動販売機を題材としたプログラムのバグを検出してください。
下記に示す仕様と提示するプログラムから、テスト項目を作成し、バグを検出せよ。また、バグを検出した場合は、バグレポートにまとめること。なお、筆者が意図したバグは2件である。
⇒VendingMachine.pyのダウンロードはこちらから
※)使用するWebブラウザや設定によって、上記のリンクをクリックしてもソースコードが文字化けした状態で表示される可能性があります。その場合は、右クリックメニューから「名前を付けてリンク先を保存」を選ぶことでファイルをダウンロードできます。また、ダウンロードしたファイルを開けない、またはセキュリティの観点からWebサイトからファイルをダウンロードして開きたくないといった場合には、記事末付録のソースコードのテキストをコピーして使用してください。文字化けする場合は、utf-8で開いてください。
本仕様は、自動販売機の動作をGUI上で模擬するものである。
プログラムの実行画面を図1に示す。
GUIには、「商品エリア」「総額エリア」「金額投入エリア」「メッセージエリア」がある。
商品エリアは、8個のボタンから購入する商品を選択する(図2)。
総額エリアでは、使用者が投入した金額の総額を表示する(図3)。また、お釣りボタンを選択することで、投入金額をクリアできる。
金額投入エリアは、6個のボタンから、使用者が投入したい金額を選択する(図4)。
メッセージエリアでは、プログラム動作時の状態を文字で表す(図5)。
Copyright © ITmedia, Inc. All Rights Reserved.