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

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

» 2022年01月18日 10時00分 公開
※本ページはアフィリエイトプログラムによる収益を得ています

1.はじめに

 本シリーズは、筆者が仕様とバグを埋めたプログラムを提示し、読者の方にテスト設計してバグを見つけてもらう趣向です。実際の品質保証エンジニアの業務に近い実践的な内容にしてあります。今回のプログラムは扇風機シミュレーターで、状態遷移モデルをベースにしたデバッグに取り組んでいただきます。

⇒連載「山浦恒央の“くみこみ”な話」バックナンバー

2.扇風機とは

扇風機 ※写真はイメージです

 暑い夏のお助けアイテムの一つが、扇風機です。扇風機は、回転する羽を高速で回し、回転数を変更して、人間の体を冷やすものですね。扇風機は家で使うものとのイメージがありますが、ここ数年、過酷な暑さから、ハンディータイプの扇風機を首にぶら下げている学生をよく見ます。

 今回取り上げる扇風機は、状態遷移モデルで動作する典型的な組み込み製品で、状態遷移に着目したテストの演習に適しています。状態遷移モデルはソフトウェア設計の基本であり、非常に強力なモデルで、プログラマーには必須技術です。状態遷移モデルになじみがない読者用のため、付録で同モデルを分かりやすく解説しましたので、参照してください。また、今回のプログラムはC言語で作りました。C言語の稼働環境を構築するステップも付録で説明してあります。

 今回の問題は、文章では回りくどい表現になっていますが、図で表した状態遷移モデルをベースにデバッグすると、簡単にバグが見つかります。ぜひ、チャレンジしてください。

3.【問題】:扇風機シミュレーター 制限時間:3時間

 下記に提示した仕様を実装したC言語のプログラムがある(ただし、バグがある)。仕様をもとにテストケースを設計し、プログラムを実行してバグを検出せよ。また、バグを検出した場合は、バグレポートにまとめること。

提示物:問題のプログラム(ElectricFan.c、ElectricFan.h):Visual Studio 2019コンソールアプリケーション、mingw(gcc)で動作確認済(Visual Studioで実施する場合は、「SDLチェックをOFF」にしてビルドすること)

成果物:記述済みのテスト項目、記述済みのバグレポート、気付き事項リスト(もしあれば)

※1)使用するWebブラウザや設定によって、上記のリンクをクリックしてもソースコードが文字化けする場合があります。その場合、右クリックメニューから「名前を付けて保存」を選ぶとファイルをダウンロードできます。

3.1 概要

 このドキュメントは、扇風機シミュレーターの仕様を示したものである。このシミュレーターでは、使用者が指令した入力に従って、扇風機の動作を模擬する。

3.2 機能要求

 機能要求を下記に示す。

3.2.1 ユースケース図

 このシミュレーターのユースケース図を図1に示す。

図1 図1 扇風機シミュレーターのユースケース図

3.2.2 運転ON/OFF機能

 使用者が、「運転ON/OFFボタン」を入力することで、運転ON/OFFを実現できる。

3.2.3 送風機能

 運転ONの場合、モーターを回転させる。

 運転OFFの場合、モーターを停止させる。

3.2.4 モード変更機能

 使用者が「運転モード変更ボタン」を押すことで、モーターの回転数を弱、中、強の3段階に変更できる。

3.2.5 扇風機模擬機能

 入出力ファイルから扇風機の動作を模擬できる。

3.3 ボタンのイメージ

 図2に示す通り、「運転ON/OFFボタン」と、押すたびに、風速が弱、中、強の順にサイクリックに変わる「運転モード変更ボタン」がある。なお、今回の問題の都合上、入出力は、ファイル操作で実行する。

図2 図2 ボタンのイメージ
       1|2|3|4|5 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.