テストでバグ発見!(5)電卓プログラムに潜むバグ【出題編】:山浦恒央の“くみこみ”な話(147)(2/3 ページ)
提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。今回は電卓プログラムをテーマとする問題の出題編。かなりのステップ数になる電卓プログラムに潜むバグを見つけ出そう。
3.2 機能要求
機能要求を下記に示す。
3.2.1 入力機能
3.2.1.1 整数の入力
操作エリアから0〜9を入力できる。
3.2.1.2 小数の入力
操作エリアから「.」を入力することで、小数を表現できる。
3.2.1.3 演算子の入力
操作エリアから「加算・減算・乗算・除算・剰余」を表す、「+」「−」「*」「/」「%」を入力できる。
3.2.1.4 特殊演算の入力
四則演算・剰余以外の特殊な演算として、操作エリアから、「平方根」「符号反転」を表す、「√」「+/−」を入力できる。
3.2.1.5 演算実行の入力
操作エリアから「=」を入力できる。
3.2.1.6 クリアの入力
操作エリアから入力内容のクリアを表す、「C」を入力できる。
3.2.2 演算機能
指定の入力に従って式を入力後、操作エリアから「=」を選択することで、下記の演算を実行できる。
3.2.2.1 基本演算
入力情報に従って、「加算・減算・乗算・除算・剰余」を実行できる。
3.2.2.2 繰り返し演算
一度演算した後、繰り返し演算が実行できる。
3.2.3 特殊演算
「平方根・符号反転」を実行できる。
3.2.4 表示機能
操作エリアからの入力情報や演算結果は、表示エリアに表示できる。なお、入出力する桁数は、最大で整数部3桁、小数部3桁とする(○○○.○○○)。
3.3 詳細設計
3.3.1 状態遷移図・状態遷移表
状態遷移図(図2)、状態遷移表(表1)を下記に示す。
3.3.1 初期処理
プログラムを開始すると、入力待ちモードに遷移する。また、「=」ボタンは無効化する。
3.3.2 数値入力イベント
3.3.2.1 入力待ちモード
操作エリアから「0〜9」か「.」の入力がある場合は、入力情報を表示エリアに表示し、入力処理1に遷移する。ただし、未入力の状態で「.」を選択した場合は、「0.」を表示する。
3.3.2.2 入力処理1モード、入力処理2モード
操作エリアから「0〜9」か「.」の入力がある場合は、表示エリアに数値を表示する。ただし、以下のルールがある。
- 数値が既に存在する場合は、右から連結して表示する
例:12の状態で1を入力すると、121となる - 先頭に0がある場合は、0を2回続けて入力できない。また、0の後に数値を入力した場合は、0を別の数値に上書きする
- 未入力の状態で「.」を選択した場合は、先頭に0.を付与する
- 小数は最大で3桁までしか入力できない
- 入力値の制限は、最大値(999.999)、最小値(−999.999)とする
Copyright © ITmedia, Inc. All Rights Reserved.