連載
» 2022年01月18日 10時00分 公開

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

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

3.6 データ設計

 データ設計を下記に示す。

3.6.1 データ定義

 データ定義を示す(表4)。

No. 名称 データ型 変数名 入力(input.csv)/
出力(output.csv)/
定数値
備考
1 運転ON/OFFボタンステータス int opeBtnStatus 入力/出力 押下する際は1、それ以外は0として入力する
2 モード変更ボタンステータス int modeBtnStatus 入力/出力 押下する際は1、それ以外は0として入力する
3 動作管理ステータス int stsManager 出力 扇風機シミュレーターの動作モードを管理する変数
0:アイドルモード
1:運転モード
2:減速モード
4 運転管理ステータス int opeStsManger 出力 運転ON/OFFを管理するステータス
OFF:0
ON:1
5 運転モード管理ステータス int modeStsManger 出力 運転モード(弱・中・強)を管理する変数
弱:0
中:1
強:2
6 モーター回転数 int currentSpeed 出力 現在のモーターの回転数
7 弱速目標回転数 int LOW_TGT_SPEED 定数値
(300)
弱速モード時の目標回転数
8 中速目標回転数 int MID_TGT_SPEED 定数値
(500)
中速モード時の目標回転数
9 強速目標回転数 int HIGH_TGT_SPEED 定数値
(800)
強速モード時の目標回転数
10 加減速設定値 int accValue 定数値(50) 1ループあたりの回転数の増加値/減少値
表4 データ定義

3.7 制限事項

  • プログラムはブラックボックスとして問題に取り組むこと
  • この問題では、プログラムへの入力はファイルから実行する。また、入力するファイルには、3.5.1に示す以外の不正な値を入力しないものとする
  • 入力ファイル名は、「input.csv」とする
  • 出力ファイル名は、「output.csv」とする

3.8 動作例

 今回の問題はファイル入力(input.csv)からテストデータを作成するため、作成例を以下に示す(表5)。

運転ON/OFFボタンステータス
(0:それ以外 1:押下)
モード変更ボタンステータス
(0:それ以外 1:押下)
備考
(実際にはこの行は作らない)
0 0 運転OFF
1 0 運転ONボタン押下し、運転モードへ遷移
1 1 運転ON状態で、モード変更ボタン押下し、中速回転モードに遷移する。また、モーター回転数=50となる
1 0 運転ON状態で、また、モーター回転数=100となる
1 1 運転ON状態で、モード変更ボタン押下し、高速回転モードへ遷移し、モーター回転数=150となる
表5 高速回転モードのテストデータ例

4.終わりに

 今回の題材として、組み込み製品の典型例である「扇風機」を取り上げました。ファイル入力から時系列でテスト項目を作ることは、少し混乱するかもしれませんが、やってみれば簡単にバグは見つかると思います。ぜひ、チャレンジしていただき、来月、答え合わせをしましょう。

Copyright © ITmedia, Inc. All Rights Reserved.