テストでバグ発見!(9)状態遷移図への機能追加の勘所は「混ぜるな、危険!」:山浦恒央の“くみこみ”な話(151)(2/4 ページ)
提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。今回は、前回までの題材だった扇風機シミュレーターを使って、状態遷移図への機能追加を行う。その勘所は「混ぜるな、危険!」だ。
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の場合、下記を実行する:
動作管理ステータスを「アイドルモード」に設定する - それ以外の場合は、以下を実行する:
モーター回転数=モーター回転数−加減速設定値
4.【問題】扇風機への「首振りモード」の追加 制限時間:1時間
扇風機シミュレーターの第2バージョンとして、「首振りモード」を追加することになった。3項で示した仕様と下記に示す問題文を参考に、状態遷移図、状態遷移表に機能追加せよ。
4.1 扇風機シミュレーターの追加仕様
扇風機シミュレーターの機能追加として、通常の運転動作に加えて、「首振り」動作を追加することとなった。
4.2 扇風機シミュレーターのボタンイメージ
首振りON/OFFボタンを追加する(図4)。
4.3 詳細仕様
下記に詳細な仕様を示す。
4.3.1 首振り処理
下記に従って、首振り処理を実行する。
- 首振りボタンをONする場合、首振り動作モードをONとする
- 首振りボタンをOFFする場合、首振りモードをOFFとする
4.4 制限事項
この問題では、首振りモードのON/OFFの切り替えに限定し、具体的な処理は含めないものとする。
それでは、実際に状態遷移図と状態遷移表を書いてみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.