連載
» 2022年04月14日 10時00分 公開

テストでバグ発見!(10)機能追加した扇風機シミュレーターのバグを検出せよ【出題編】山浦恒央の“くみこみ”な話(152)(3/4 ページ)

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

3.5 処理の詳細

 処理の詳細を以下に示す。

3.5.1 初期処理

 プログラム開始時に以下の初期化処理を実行する。

  • 動作管理ステータスを「アイドルモード」に設定する
  • 運転管理ステータスを「OFF」に設定する
  • 運転モードステータスを「弱」に設定する
  • モーター回転数を0に設定する
  • 首振り管理ステータスを「OFF」に設定する

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 首振りモード

 このモードでは、首振りモードによって首振り角度を変更する。なお、本問題では、あくまでもモード変更のみに限定して考えること。

  • 首振り管理ステータスがOFFの状態で「首振りモード変更ボタン」を押下:
    首振り管理ステータスを「首振りONモード」に遷移する。
  • 首振り管理ステータスがONの状態で「首振りモード変更ボタン」を押下:
    首振り管理ステータスを「首振りOFFモード」に遷移する。

3.5.5 入力機能

 このアプリケーションでは、物理的な機器(スイッチ、モータなど)を備えていないため、ファイル入出力(入力ファイル名:input.csv、出力ファイル名:output.csv)で動作を代用する。下記に詳細を示す。

3.5.5.1 入力処理

 プログラム実行時、ファイルから表3に示す項目を入力する。

No. 入力項目
1 運転ON/OFFボタンステータス(0:それ以外、1:押下)
2 モード変更ボタンステータス(0:それ以外、1:押下)
3 首振り変更ボタンステータス(0:それ以外、1:押下)
表3 入力データ一覧

3.5.5.2 出力処理

 プログラムの実行後、表4に示すデータを出力する。

No. 出力項目
1 項番(ログ記録回数)
2 運転ON/OFFボタンステータス(0:それ以外、1:押下)
3 モード変更ボタンステータス(0:それ以外、1:押下)
4 首振り変更ボタンステータス(0:それ以外、1:押下)
5 動作管理ステータス(0:アイドルモード、1:運転モード、2:減速モード)
6 運転管理ステータス(0:OFF、1:ON)
7 運転モード管理ステータス(0:弱、1:中、2:強)
8 モーター回転数
9 首振り管理ステータス(0:OFF、1:ON)
表4 出力データ一覧

Copyright © ITmedia, Inc. All Rights Reserved.