検索
連載

テストでバグ発見!(7)状態遷移モデルで扇風機シミュレーターのバグを摘出せよ【出題編】山浦恒央の“くみこみ”な話(149)(2/5 ページ)

提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。今回は、扇風機シミュレーターをテーマとする問題の出題編。状態遷移モデルをベースにしたデバッグに取り組もう。

Share
Tweet
LINE
Hatena
※本記事はアフィリエイトプログラムによる収益を得ています

3.4 状態遷移図・状態遷移表

3.4.1 状態遷移図

 図3に状態遷移図を示す。

図3
図3 扇風機シミュレーターの状態遷移図[クリックで拡大]

3.4.2 状態遷移表

 表1に扇風機シミュレーターの状態遷移表を示す。

表1
表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.

ページトップに戻る