連載
テストでバグ発見!(7)状態遷移モデルで扇風機シミュレーターのバグを摘出せよ【出題編】:山浦恒央の“くみこみ”な話(149)(3/5 ページ)
提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。今回は、扇風機シミュレーターをテーマとする問題の出題編。状態遷移モデルをベースにしたデバッグに取り組もう。
※本記事はアフィリエイトプログラムによる収益を得ています
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.