提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。第3回は、大学の単位取得を判定するプログラムから、ファイル入力に潜むバグを見つけ出しましょう。
このシリーズでは、筆者がバグを入れた仕様とプログラムを提示し、テスト設計してバグを見つけるものです。今回は、ファイル入力に関係した問題を出題します。自分でテスト項目を設計・実行し、バグを見つけてください。
プログラムの超基本は、「データを入力し、データに処理を加えた結果を出力する」です。例えば、キーボードから文字を入力し、その文字を画面に表示します。データを入力する手段はさまざまですが、ファイルから入力する場合がありますね。例えば、IPアドレスなど、自由に変更できる値を使用する場合、テキストファイルなどにIPアドレスの値を記述し、読み出すことでIPアドレスをプログラム実行時に変更可能です。
今回は、ファイル入力に関連するプログラムのバグを見つけていただきます。
下記に示す仕様および提示するプログラム(Python)からテスト項目を作成し、バグを検出せよ。バグを検出した場合は、バグレポートにまとめること。また、入力データはScore.csvに作成し、実行結果はResult.csvに出力する。なお、筆者が意図したバグは2件である。環境構築をしていない場合は、Pythonの環境構築を行うこと(検索エンジンから、Python 環境構築などと調べると画像付きで説明しているWebサイトが見つかる)。
⇒ScoreEvaluation.pyのダウンロードはこちらから
※)使用するWebブラウザや設定によって、上記のリンクをクリックしてもソースコードが文字化けした状態で表示される可能性があります。その場合は、右クリックメニューから「名前を付けてリンク先を保存」を選ぶことでファイルをダウンロードできます。また、ダウンロードしたファイルを開けない、またはセキュリティの観点からWebサイトからファイルをダウンロードして開きたくないといった場合には、記事末付録のソースコードのテキストをコピーして使用してください。なお、文字化けする場合は、utf-8で開いてください。
大学の授業では、生徒の理解度を評価し、単位認定することが一般的である。その際、生徒の理解度を表す指標として、「S」「A」「B」「C」「/」などの指標を用いて表現する。従来は、教員が手作業で実施していたが、専用のソフトウェアである「単位取得判定プログラム」を作成することとした。
初期段階として、外部ファイルに生徒のテストの点数データを入力し、大学の講義における授業の成績評価を判定する(図1)。
図1は、単位取得判定プログラムのイメージを示したものである。教員が、生徒の点数データをScore.csvに入力し、プログラムを実行する。実行後、出力結果を「Result.csv」として出力し、生徒の成績を判断する。
Copyright © ITmedia, Inc. All Rights Reserved.