連載
» 2012年12月20日 10時00分 公開

状態遷移表による設計手法(6):状態遷移表を使用したテスト手法【前編】 (4/4)

[塚田 雄一 キャッツ,MONOist]
前のページへ 1|2|3|4       

状態遷移表を使用した同値分割法

 それでは、状態遷移表を使用した同値分割法について考えてみましょう。先ほどの説明にもありましたが、各イベントは、同一のアクションセルに影響のある範囲(同値)と考えることができます。よって、先ほどの状態遷移表では、「分ボタン」「10秒ボタン」「クリアボタン」「スタートストップボタン」「カウントダウン終了」と5つの同値クラスが存在します。それらを仕様書より、「時間設定の際」「時間設定の際で、50秒以外の時」など、イベントを発生させる条件として定義します。また、確認する項目についても仕様書から抽出します。

 図17にテスト項目を記しますが、例えば、では、「時間設定の際で、0分0秒以外の時」で、「スタートストップボタン」が押された場合、「カウントダウンが開始」されることを確認します。ちなみに、ブラックボックステストは、ホワイトボックステストとは異なり、処理の内部には着目しません。また、仕様書に遷移先が記述されている場合は、遷移先の確認も行いますが、今回のように、仕様書に遷移先が記述されていない場合は、遷移先などの確認は行いません(遷移先については、ホワイトボックステストで確認を行っています)。

 ちなみに、異常系についても今回は行いませんでしたが、異常系処理が仕様書に記述されている・記述されていないにかかわらず、システム構成、環境などを考慮し、もしもテストすべき項目がある場合は、テストを実施します。

状態遷移表を使用した同値分割法 図17 同値分割法

状態遷移表を使用した境界値分析

 次は、状態遷移表を使用した境界値分析について考えてみましょう。今回の状態遷移表では、「分ボタン」「10秒ボタン」「クリアボタン」「スタートストップボタン」「カウントダウン終了」と、5つの同値クラスが存在していますが、境界値分析を行う必要があるイベントは、「分ボタン」「10秒ボタン」の2つです。

 まず、「10秒ボタン」の境界値分析を行ってみたいと思います。仕様書には「10秒ボタンが押されたら、設定値を10秒カウントアップする。また、50秒の際は、分を1分カウントアップし、00秒とする」と記されています。初期値、「クリアボタン」が押された場合は「00秒」で、「50秒」の次は「00秒」に戻るため、境界値は「00秒」と「50秒」であることが分かります。ちなみに、上限を記す限界値も「50秒」であることが分かります。

 さて、次に「分ボタン」ですが、仕様書には「分ボタンが押されたら、設定値を1分カウントアップする」と記されています。おや? 境界値分析を行おうとしましたが、境界値が明確ではありませんね。通常であれば、60分が限界値で、60分以上の設定は行えない仕様にするなど、明確にしなければなりません。この状態では、どのように設計し、どのように実装されたか定かではありません。つまりこれは、仕様の不具合(バグ)です(境界値分析を行った結果、ここにきて不具合(バグ)が発見されました!)。

状態遷移表を使用した境界値分析 図18 状態遷移表を使用した境界値分析

コラム:不具合が発見された時の気持ちはさまざま……

読者の皆さんの中で、テストを行う前から、先ほどの不具合(バグ)に気が付いていた方はいますでしょうか? 気が付かなかった人は、今回、よりテストの重要性を認識できたのではないでしょうか。


突然ですが、皆さんは、不具合が発見された(発見した)時、どのような気持ちになるでしょうか?


置かれている立場にもよるでしょうが、プログラマーの立場で、自分が作成したプログラムを自身でテストしているような場合、不具合を出してしまった事実に対して、「これはマズイ」「どうしよう」「修正しなくては」などのように、多くの方がネガティブな気持ちになるのではないでしょうか。一方、第三者の立場からテストを担当している方であれば、製品を出荷する前に「不具合を発見できてよかった」「テストをやった価値があった」などと、ポジティブな気持ちになるのではないでしょうか。また、プロジェクト管理者の立場であれば、製品出荷前に、不具合が発見できたことは、ポジティブに考えられたとしても、修正工数が増加することに関しては、ネガティブにならざるを得ないのではないでしょうか。





 今回は、“状態遷移表を使用したテスト手法”を紹介しました。ソフトウェアテスト手法には、ブラックボックステストとホワイトボックステストというものがあり、状態遷移表の作成によって、テスト項目を明確化できることがお分かりいただけたのではないでしょうか。例えば、ホワイトボックステストを行う場合、状態遷移表のアクションセルに着目することで、ソースコードからテスト項目を抽出する場合に比べ、テスト項目を容易に抽出できます。また、状態遷移表は入力イベントが整理されているため、ブラックボックステストを行う際、イベント部分に着目することで、ソースコードからテスト項目を抽出した際に比べ、テスト項目を容易に抽出できます。

 さて、次回【後編】では、遷移部分に着目した「パステスト」を紹介します。お楽しみに! (次回に続く)

組み込みモデリング コーナー

組み込みモデリング コーナー

>>コーナーTOPはこちらから


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.