テストでバグ発見!(1)まずは成人判定プログラムでチュートリアル:山浦恒央の“くみこみ”な話(143)(1/4 ページ)
今回から、提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」が始まります。第1回は、チュートリアルとして成人判定プログラムからバグを発見してみましょう。
1.はじめに
これまで皆さんには、バグ検出ドリル編(連載第101〜121回)、バグ百科事典編(連載第122〜第141回)で、バグの知識習得とバグ検出を練習してきました。今回から、両者を融合させた実践問題集となる新シリーズ「テストでバグ発見!」をお送りします。
2.新シリーズのコンセプト
「バグ検出ドリル」編では、仕様とソースコードからバグを検出・修正する問題を作成し、実施しました。また、「バグ百科事典」編では、ソフトウェア開発で発生するさまざまなバグを取り上げました。
それぞれのシリーズを連載していくうちに、実行可能な成果物を使ってテストする問題集はあまり多くないと感じました。そこで、第3弾となる今シリーズは、提示された仕様とプログラム(バグを含む)から、自分でテストケースを設計し、バグを実際に見つけ、バグレポートまで作成する実践的なシリーズとしました。
新シリーズでは、テストでバグを見つける能力と、事象を正しく説明する能力を養うことを目的としています。
3.新シリーズ「テストでバグ発見!」の概要
3.1 問題の実施方法
問題の取り組み方を説明します。以下の5つのステップに沿って取り組んでみてください。
ステップ1:問題文を読む
問題文(仕様)を一通り読みます(図1)。
【問題】三角形の面積を求めるプログラム 制限時間:15分
- 仕様:三角形の面積を算出する
- 詳細
- 底辺と高さを入力し、三角形の面積を求める
- ……
- ……
図1は、三角形の面積を求めるプログラムの仕様(問題文)です。まずは、仕様を読み、どのような問題か確認してください。また、制限時間を設定していますので、ご注意ください。
ステップ2:テスト項目を作成する
仕様と提示したプログラムを参考に、テスト項目を作成します(表1)。
No. | 底辺 | 高さ | 期待値 | 出力結果 | 合否 |
---|---|---|---|---|---|
1 | 3 | 4 | 6 | ||
2 | 3 | 2 | 3 | ||
表1 テスト項目作成例 |
表1は、テスト項目の作成例です。例えば、三角形の面積を求める問題の場合、入力が底辺=3、高さ=4の場合、「3*4/2=6」のような期待値が想定されます※1)。
※1)本シリーズでは、特定のテスト技法にはとらわれません。自分の好きな方法で試してください。なお、今回はブラックボックステストを想定しています。
ステップ3:プログラムを起動し、テストする
テスト項目から、配布したプログラムをテストします。例えば、言語がPythonの場合は、「ファイル名.py」で実行しますね(コンソールから実行する場合)。下記の図2が実行例です。
sourcefile.py 底辺:3 高さ:4 面積は12です。
図2は、プログラムを実行し、テストをした実行例です。底辺=3、高さ=4の場合、正しい面積の出力結果は6となるべきですが、12となっています。このケースでは、バグだと分かりますね。なお、プログラムが正しく起動できない場合は、以下を疑ってください。
- 筆者と同等の環境になっているか
- そもそもの問題が間違っていないか
ステップ4:バグレポートを作成する
バグを見つけたら、バグレポートを作成します(図3)。
図3には、バグレポートの例を示しました。フォーマットは自由ですから、自分なりのバグレポートを作成してください。なお、特に指定がない場合は、筆者が用意したバグレポートを使用しても構いません。
ステップ5:解答を確認し、バグが見つけられたか確認する
本書に示す解答から、以下を確認します。
- 筆者が意図したバグを検出できているか
- 重要なテスト項目を作成できているか
- バグの事象を正しく把握し、説明できているか
上記の観点から、自分の理解を深めましょう。
ステップ6:気付き事項を作成する
気付き事項を記載します(図4)。
気付き
- 入力は全角数字も入力できるのかのチェックも必要
- ……
図4は、気付き事項の記載例です。前々回のシリーズのバグ検出ドリルでは、筆者の意図した解答と異なる意見をたくさん頂きました。筆者自身、全てをカバーすることはできませんので、「これもバグではないか」「筆者の解答と異なる」という箇所があれば、気付き事項にまとめてください。恐らく、それもバグでしょう。
3.2 本シリーズの実行環境
本シリーズの想定する環境は、Python/C/C++/C#/VBAのどれかを想定しますが、場合によっては変更となる可能性があります。また、自身の環境と異なる場合は、バグの挙動が変わる可能性があります。
以上で、新シリーズの概要を把握できたと思います。要約すると、出題した仕様とプログラムからテスト項目を作成し、バグを見つけます。バグがある場合は、バグレポートにまとめればOKです。
今回は、チュートリアル編として成人判定プログラムに挑んでもらいます。簡単にバグが見つかると思いますので、やり方を確認しながら問題に取り組んでいただければと思います。なお、本問題は、Python(バージョン3.9.5)で作ったものです。環境がない場合は、環境構築を行ってください。
Copyright © ITmedia, Inc. All Rights Reserved.