連載
» 2021年11月17日 10時00分 公開

テストでバグ発見!(5)電卓プログラムに潜むバグ【出題編】山浦恒央の“くみこみ”な話(147)(1/3 ページ)

提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。今回は電卓プログラムをテーマとする問題の出題編。かなりのステップ数になる電卓プログラムに潜むバグを見つけ出そう。

[山浦恒央 東海大学 大学院 組込み技術研究科 非常勤講師(工学博士),MONOist]

1.はじめに

 このシリーズでは、筆者がバグを入れた仕様と、動作するプログラムを提示し、テスト設計してバグを見つけるものです。これまでは1回分の記事の中で問題を出題し、解答を示してきましたが、今回と次回は、電卓を題材に【出題編】と【解答編】に分けてお送りします。今回の【出題編】をしっかり読み込んで、自分なりのテスト項目を作成し、バグを見つけて、次回の【解答編】を楽しみにお待ちください。

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

2.電卓とは

電卓 ※写真はイメージです

 電卓とは卓上電子計算機の略で、縦横数十cmの小さなディスプレイ付きの筐体に、0〜9までの数値と、加減乗除(+、−、*、÷)などのボタンが備わっており、操作をすると、計算結果を画面に出力します。かつては、生活の必需品でしたが、現在はスマートフォンの電卓アプリを使うことが多いと思います。

 電卓は、人間が日常よく使う計算を瞬時に実行できるメリットがあります。例えば、買い物の合計金額の計算や、飲み会の割り勘計算までさまざまな場所で活用できます。

 電卓は生活になじみがあり、ステップ数の観点からも一定の規模感があるため、テストの題材にはピッタリだと思いました。そこで、今回は、バグが入った電卓プログラムを出題します。

 なお、今回は、現実のアプリケーションプログラムとほぼ同等の本格的で複雑な仕様と、大規模なプログラムを導入したため、解答は翌月(2021年12月)の次回といたします。

 現実のプログラム開発に近い仕様書と、大規模プログラムにじっくり取り組み、開発技術者、あるいは、品質保証エンジニアの立場で、バグを見つけていただけましたら幸いです。また、プログラムはステップ数が非常に多いためダウンロードのみとし、ソースコードテキストの記事末付録は用意していません。

3.【問題】電卓アプリケーション 制限時間:150分

 下記に示す仕様および提示するプログラム(Python)からテスト項目を作成し、バグを検出せよ。また、バグを検出した場合は、バグレポートにまとめること※1)

提示物:問題のプログラム(Calculator.py):Python3.9.5で確認済み(Windows)

成果物:記述済みのテスト項目、記述済みのバグレポート、気付き事項リスト(もしあれば)

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

※1)使用するWebブラウザや設定によって、上記のリンクをクリックしてもソースコードが文字化けした状態で表示される可能性があります。その場合は、右クリックメニューから「名前を付けてリンクを保存」を選ぶことによってファイルをダウンロードできます。

3.1 概要

図1 図1 電卓アプリケーションのGUI

 この文書は、電卓アプリケーションの仕様を表したものである。図1に、GUIを示す。

 このアプリケーションは、プログラムを開始すると、ウィンドウ内に、「表示エリア」と各種ボタンを配置している「操作エリア」を表示する。

 ウィンドウから最小化が可能で、プログラムを終了する場合は、「×」ボタンを選択するとプログラムを終了する。

 各種操作は、ボタンから実行し、数値「0〜9」の整数と、「.」含めた小数を表現できる。また、基本演算機能として、「加算・減算・乗算・除算・剰余」があり、特殊演算機能として、「平方根・符号反転」の演算を実行できる。

 演算処理を実行する場合は、「=」を選択することで、表示エリアに演算結果を出力する。また、演算結果を出力後、再度演算子(+、−、*、/、%)を入力することで、繰り返し演算も可能である。さらに、演算をクリアする場合は、「C」を選択することで、最初から演算をやり直すことができる。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.