テストでバグ発見!(10)機能追加した扇風機シミュレーターのバグを検出せよ【出題編】:山浦恒央の“くみこみ”な話(152)(4/4 ページ)
提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。今回は、これまで題材にしてきた扇風機シミュレーターに対して保守開発を本格的に適用した問題の出題編となる。
3.6 データ設計
データ定義を表5に示す。
No. | 名称 | データ型 | 変数名 | 入力(input.csv)/出力(output.csv)/定数値 | 備考 |
---|---|---|---|---|---|
1 | 運転ON/OFFボタンステータス | int | opeBtnStatus | 入力/出力 | 押下する際は1、それ以外は0として入力する |
2 | モード変更ボタンステータス | int | modeBtnStatus | 入力/出力 | 押下する際は1、それ以外は0として入力する |
3 | 首振り変更ボタンステータス | int | swingBtnStatus | 入力/出力 | 押下する際は1、それ以外は0として入力する |
4 | 動作管理ステータス | int | stsManager | 出力 | 扇風機シミュレーターの動作モードを管理する変数 0:アイドルモード 1:運転モード 2:減速モード |
5 | 運転管理ステータス | int | opeStsManger | 出力 | 運転ON/OFFを管理するステータス OFF:0 ON:1 |
6 | 運転モード管理ステータス | int | modeStsManger | 出力 | 運転モード(弱・中・強)を管理する変数 弱:0 中:1 強:2 |
7 | モーター回転数 | int | currentSpeed | 出力 | 現在のモーターの回転数 |
8 | 弱速目標回転数 | int | LOW_TGT_SPEED | 定数値(300) | 弱速モード時の目標回転数 |
9 | 中速目標回転数 | int | MID_TGT_SPEED | 定数値(500) | 中速モード時の目標回転数 |
10 | 強速目標回転数 | int | HIGH_TGT_SPEED | 定数値(800) | 強速モード時の目標回転数 |
11 | 加減速設定値 | int | accValue | 定数値(50) | 1ループあたりの回転数の増加値/減少値 |
12 | 首振り管理ステータス | int | swingStsManager | 出力 | 首振りON/OFFを管理するステータス 首振りOFF:0 首振りON:1 |
表5 データ定義 |
3.6 処理フロー
下記に、大まかな処理フローを示す(図5)。
運転ON/OFFボタンステータス(0:それ以外、1:押下) | モード変更ボタンステータス(0:それ以外、1:押下) | 首振り変更ボタンステータス(0:それ以外、1:押下) | 備考 (実際にはこの行は作らない) |
|
---|---|---|---|---|
0 | 0 | 0 | 運転OFF | |
1 | 0 | 0 | 運転ONボタンを押下し、運転モードへ遷移 | |
0 | 1 | 0 | 運転ON状態で、モード変更ボタンを押下し、中速回転モードに遷移する。また、モーター回転数=50となる | |
0 | 0 | 0 | 運転ON状態で、また、モーター回転数=100となる | |
0 | 1 | 0 | 運転ON状態で、モード変更ボタン押下し、高速回転モードへ遷移し、モーター回転数=150となる | |
表6 出力データ一覧 |
3.7 制限事項
- プログラムはブラックボックスとして問題に取り組むこと
- この問題では、プログラムへの入力はファイルから実行する。また、入力するファイルには、不正な値を入力しないものとする
- 入力ファイル名は、「input.csv」とする
- 出力ファイル名は、「output.csv」とする
4.まとめ
今回は、扇風機シミュレーターの機能追加版(保守版)問題を出題しました。いかがでしたでしょうか。長々と書いていますが、やってみれば、簡単にバグは見つかると思います。次回の解答編までにじっくりと取り組んでいただければと思います。
山浦先生の書籍が発売中です!
前シリーズ「ソフトウェア技術者のためのバグ百科事典」を大幅に加筆、修正した山浦恒央先生の書籍「ソフトウェア技術者のためのバグ検出テキスト」が日科技連出版から好評発売中です。連載でも取り上げた、「要求仕様書のバグ」「実装抜けのバグ」「テスト業務のバグ」など、バグを36種類に分類して解説しています。囲碁や将棋であれば、「相掛かり」「矢倉」「四間飛車」「藤井システム」のような戦法を網羅した内容になっています。
前著「ソフトウェア技術者のためのバグ検出ドリル」(2019年11月刊行)も好評発売中です。実際にバグを含む要求仕様書、設計書、コーディング、デバッグ、保守を具体的に取り上げ、練習問題として31問を出題しました。同書は、囲碁や将棋における「次の一手」的な問題であり、ピンポイントの場面を取り上げ、実践力を鍛えることを目的としています。
両書とも興味のある方は、Amazon.comや書店でチェックしてください!
東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ≫連載「山浦恒央の“くみこみ”な話」バックナンバー
- テストでバグ発見!(9)状態遷移図への機能追加の勘所は「混ぜるな、危険!」
提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。今回は、前回までの題材だった扇風機シミュレーターを使って、状態遷移図への機能追加を行う。その勘所は「混ぜるな、危険!」だ。 - テストでバグ発見!(8)状態遷移モデルで扇風機シミュレーターのバグを摘出せよ【解答編】
提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。今回は、扇風機シミュレーターをテーマとする問題の解答編。状態遷移モデルをベースにしたデバッグに取り組もう。 - テストでバグ発見!(7)状態遷移モデルで扇風機シミュレーターのバグを摘出せよ【出題編】
提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。今回は、扇風機シミュレーターをテーマとする問題の出題編。状態遷移モデルをベースにしたデバッグに取り組もう。 - テストでバグ発見!(6)電卓プログラムに潜むバグ【解答編】
提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。今回は、前回出題した電卓プログラム問題の解答編だ。演習問題としては大規模だが、正面からじっくり向き合い、適切にテスト設計すればバグを検出できるはず! - テストでバグ発見!(5)電卓プログラムに潜むバグ【出題編】
提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。今回は電卓プログラムをテーマとする問題の出題編。かなりのステップ数になる電卓プログラムに潜むバグを見つけ出そう。