テストでバグ発見!(7)状態遷移モデルで扇風機シミュレーターのバグを摘出せよ【出題編】:山浦恒央の“くみこみ”な話(149)(2/5 ページ)
提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。今回は、扇風機シミュレーターをテーマとする問題の出題編。状態遷移モデルをベースにしたデバッグに取り組もう。
3.4 状態遷移図・状態遷移表
3.4.1 状態遷移図
図3に状態遷移図を示す。
3.4.2 状態遷移表
表1に扇風機シミュレーターの状態遷移表を示す。
3.5 詳細
処理の詳細を以下に示す。
3.5.1 初期処理
プログラム開始時に以下の初期化処理を実行する。
- 動作管理ステータスを「アイドルモード」に設定する
- 運転管理ステータスを「OFF」に設定する
- 運転モードステータスを「弱」に設定する
- モーター回転数を0に設定する
3.5.2 アイドルモード
アイドルモードで「運転ON/OFFボタン」を押下すると、下記を実行する。
- 動作管理ステータスを「運転モード」に設定する
- 運転ステータスを「ON」に設定する
- 運転モードステータスを「弱」に設定する
3.5.3 運転モード
運転モードでは、モーターを回転し、風を送風する。モードは、「弱」「中」「強」の3つ存在し、モードごとの目標回転数までモーターを加減速する。また、このモードで「運転ON/OFFボタン」を押下すると、動作管理ステータスを「減速モード」、運転管理ステータスを「OFF」に設定する。
3.5.3.1 弱速モード
以下に従って、モーターを弱速(低速)回転で運転する。
- 「モード変更ボタン」を押下する場合
運転モードステータスを「中」に設定する - モーター回転数<弱速目標回転数
モーター回転数=モーター回転数+加減速設定値 - モーター回転数 > 弱速目標回転数
モーター回転数=モーター回転数−加減速設定値
3.5.3.2 中速モード
以下に従って、モーターを中速で回転する。
- 「モード変更ボタン」を押下する場合
運転モードステータスを「高」に設定する - モーター回転数<中速目標回転数
モーター回転数=モーター回転数+加減速設定値
3.5.3.3 強速モード
以下に従って、モーターを高速で回転する。
- 「モード変更ボタン」を押下する場合
運転モードステータスを「弱」に設定する - モーター回転数<強速目標回転数
モーター回転数=モーター回転数+加減速設定値
3.5.3.4 減速モード
このモードでは、モーターが停止するまで、モーターを減速する。
- モーター回転数<=0の場合、下記を実行する
動作管理ステータスを「アイドルモード」に設定する - それ以外の場合は、以下を実行する
モーター回転数=モーター回転数−加減速設定値
3.5.4. 入出力機能
このアプリケーションでは、物理的な機器(スイッチ、モーターなど)を備えていないため、ファイルで入出力(入力ファイル名:input.csv、出力ファイル名:output.csv)で動作を代用する。下記に詳細を示す。
3.5.4.1 入力処理
ファイルから、「電源ON/OFFボタン」「モード変更ボタン」を入力する。下記に入力ファイルのデータ列を示す(表2)。
運転ON/OFFボタンステータス (0:それ以外 1:押下) |
モード変更ボタンステータス (0:それ以外 1:押下) |
|
表2 入力ファイルのデータ列 |
3.5.4.2 出力処理
「項番(ログの記録回数)」「運転ON/OFFボタンステータス」「モード変更ボタン」「動作管理ステータス」「運転管理ステータス」「運転モード管理ステータス」「モーター回転数」を毎周期出力する。なお、数値を読み替えること。下記に出力ファイルのデータ列を示す(表3)。
項番 | 運転ON/OFFボタンステータス (0:それ以外 1:押下) |
モード変更ボタンステータス (0:それ以外 1:押下) |
動作管理ステータス (0:アイドルモード 1:運転モード 2:減速モード) |
運転管理ステータス (0:OFF 1:ON) |
運転モード管理ステータス (弱:0 中:1 強:2) |
モーター回転数 | |
表3 出力ファイルのデータ列 |
Copyright © ITmedia, Inc. All Rights Reserved.