第186回: 「ソフトウェアテストしようぜ」3 シーリングライト
◀前の記事へ 次の記事へ▶
≡ はじめに
前回は、「庫内スイッチ」のソフトウェアテストの話を書きました。
内容としては、「機能間の結びつき」をテストしているというものでした。そして、「機能間の結びつきが複雑になってきたらFRAMでモデル化(図化)して疑問点は作った人に確認してテストしている」という話を書きました。
さて、今回のお題は、私の部屋の天井についている「シーリングライト」です。
≡ お題(シーリングライト)の説明
前回の再掲になりますが、お題の説明です。
私の部屋の天井についているシーリングライト(照明機器)です。シーリングライトのくせに間接照明になっている点が気に入っています。
リモコンはこちらです。
それぞれのボタンの意味は以下の通りです。
全灯: 一番明るく点灯する(100%点灯モード)
お好みの明るさ: 明暗ボタンで明るさを10段階変化できる(調光モード)
ブルーライト(💡): ブルーライトが点灯する(ブルーライトモード)
消灯: 明かりが消える
明: 明るくなる(明るさは記憶する)
暗: 暗くなる(明るさは記憶する)
です。ブルーライトとはこんなのです。
※ ブルーライトの明るさの強さは変えられません。
≡ テスト対象を理解する
テストを作る前に、テスト対象を理解することが何より大切です。
前回の公開直後、こんなツイートをいただきました。
AAさん、勘がよすぎです。リプライツイは、
リモコンを別角度から撮ってみます。
該当箇所をリモコンの裏から撮ってみます。
このように、CH 1,2,3の3つの周波数チャンネルの切り替えができます。この機能があることで、例えば大広間に複数のシーリングライトが設置してあるときに、一つのリモコンで3つのライトを操作することができます。
ところが、この機能、AAさんが指摘されたとおり、普通の部屋で使うときには、
なんですよね。何かの拍子にスイッチが切り替わって、「リモコンが利かなくなった」って騒ぐやつです。(笑)
以上のことから、仕事のテストのときなら真っ先に確認したいUI/UXのテストです。カテゴリでいえば、「使用性の非機能テストタイプ」かな。
また、リナさんからは以下の指摘をいただきました。
こちらの観点はまったく考えていなかったので、すばらしいなーと思いました。確かに、例えば、水道の蛇口とか、同じだけ動かしても開くときと締めるときでは水量に違いがあるんですよね。
白いのと黄色いのは蛍光灯の種類のことかな。リモコンがどっかいったときの話は後で出てきます。
また、
は、仕事でテストするときにも思い出したいお言葉です。バリデーションの観点大事です。
≡ テストを作成する(ステップ1)
それでは、今回も2ステップに分けて、“私はこういうテストを考えた”ってことを書いていきます。
今回は、
リモコンで切り入りしたときと、部屋の物理スイッチとの関係
をテストしたいと思いました。
上は、部屋の物理スイッチの写真です。どこの家庭にもあると思います。
実際、全灯のときに、物理スイッチを「早く切り入り」すると、シーリングライトはブルーライトモードになります。「調光モードだったときにはどうなるのか?」などなど気になりますよね。
一般的な話をすれば、「同じ機能を複数の操作で実現できる個所は念入りにテストする」ことをお勧めします。
≡ テストを作成する(ステップ2)
次にステップ2です。
■ 表のテスト
まずは、普通に仕様を網羅するテストを作ります。今回でいえば、状態遷移モデルを利用します。
状態遷移テストをつくるのには、GIHOZを使うことをお勧めします。簡単にきれいな図が描けますし、そこから、テストパターンの生成もおこなってくれるからです。
まずは、仕様を確認し、そこから状態遷移図をGIHOZで描きます。
全灯: 一番明るく点灯する(100%点灯モード)
お好みの明るさ: 明暗ボタンで明るさを10段階変化できる(調光モード)
ブルーライト(💡): ブルーライトが点灯する(ブルーライトモード)
消灯: 明かりが消える
明: 明るくなる(明るさは記憶する)
暗: 暗くなる(明るさは記憶する)
状態遷移図は、「状態」を先に見つけるとよいです。この仕様でいえば、「100%点灯モード」、「調光モード」、「ブルーライトモード」、「消灯」が状態となります。
ここでは、最初に考えた4つの状態で話を進めます。GIHOZにアクセスして状態を入力します。
ここまで行けば、あとは、状態から状態へ線が引ける(=遷移できる)かなと考えて線を引けばOKです。
なんか、ごちゃごちゃして線の引き忘れがないか、心配になりますが、GIHOZでは状態遷移図の下ににある[状態遷移表とテストケースを更新]ボタンを押せば大丈夫です。
ボタンを押すと以下の状態遷移表が得られます。この表で線の引き忘れに気が付きます。
CSVとして手元にも保存できるのはうれしいですね。
画面をスクロールしていくと、テストケースの一覧表がでてきますので、こちらをテストします。これが「表」のテストです。
ここで、1つ注意してほしいことがあります。それは「1スイッチのテストケース」には、「無効遷移」が現れないことです。
例えば、「消灯」状態のときに、「消灯ボタン」を押すと、無効遷移なので「消灯」状態のままでいるテストは「状態遷移表のテストケース」にはあらわれますが、「1スイッチのテストケース」にはでてきません。無効遷移のテストは非常に重要ですので、必ず「状態遷移表のテストケース」も実施します。消灯のケースでいえば、「消灯時に消灯ボタンを押すと全灯になる」バグがあるかもしれないから。
あと、GIHOZが、テストケースをテストしやすい順番に並び替えるテスト実装の機能をサポートするようになると、さらに良いなあと思いました。
つまり、1スイッチテストケース表を終了状態が開始状態につながるように並び替える機能があるといいのになと思いました。
■ 裏のテスト
裏のテストでは、意地悪な条件を考えます。この図でいえば、調光モードで一番暗い「明るさ1」のときに[暗]ボタンを押してみるなどです(ループして一番明るくならないかを確認するテストです)。
≡ 次回のお題
次回のお題はこちらです。
リビングの天井についているシーリングファン(ライト付き)です。
こちらも、リモコンの写真をつけます。
それぞれのボタンの意味は以下の通りです。(右上側面のチャンネル切り替えスイッチの説明は省きます)
こちらの説明はマニュアルを書き写したものです。
【ファン】ファン停止・運転ボタン: ボタンを押すごとに【運転⇔停止】と切り替わります
【照明】照明切/入ボタン: 照明の点灯・消灯をおこないます
【▲▼】ファン風向切替・照明調光ボタン: ファンの風向切替 照明の調光をおこないます
【弱中強】ファン風量切替ボタン: ファン運転時、ファンの風量:弱・中・強をダイレクトに選択できます
上記に加えて、「メモリー機能」として「最後に設定した状態を自動的に記憶する機能です。運転停止後、再びボタンを押すとファン(風向/風量)、証明(調光)それぞれ停止前の状態で運転(点灯)します。停電などで通電が停止したのちの電源通電時は、通電停止前の状態で運転・点灯します」と書いてあります。
≡ おわりに
今回は、「シーリングライト」のテストがテーマでした。
次回のシーリングファンですが、今回と似ていると思います。機能がファンの運転と照明の2つになったときにテストをどう考えるのか、そのあたりがテーマとなります。