状態遷移表を使用したテスト手法【後編】:状態遷移表による設計手法(7)(3/3 ページ)
状態遷移表による設計手法について解説。今回は「状態遷移表を使用したテスト手法」の【後編】として、パステストについて詳しく説明する。
遷移網羅1スイッチカバレッジを網羅するテストシナリオ
次に、1スイッチカバレッジを網羅するテストシナリオを考えてみましょう。1スイッチカバレッジを網羅するテストシナリオは、先ほど作成したパターンを組み合わせます。
例えば、①→②の後に、②→②をつなげてテストするシナリオを考えてみると、①→②→②というテストシナリオになります。その後、②→①をつなげると、①→②→②→①というテストシナリオになります。このようにして作成したテストシナリオを図13に示します。
1スイッチカバレッジにおけるテストシナリオ
作成したテストシナリオにおけるイベント発生順序とイベント発生による遷移の流れを図14に示します。
1スイッチカバレッジ評価(テストで発見できること)
それでは、1スイッチカバレッジでどこまでテストが行えるかを確認してみましょう。
0スイッチカバレッジのテストケースでは、図15のテスト項目8つのうち4項目のテストが行えました。1スイッチカバレッジの3つのテストシナリオを実施すると、8項目全てのテストが行えます。
どこまでテストすればよいのか
先ほどの1スイッチカバレッジでは、8つ全ての項目をテストできました。これらは、最低限テストしておきたい項目であるため、1スイッチカバレッジまでは確認した方がよいでしょう(ただし、他のケースを考えた場合、これで十分とは言い切れません)。
また今回、「分ボタン」「秒ボタン」「クリアボタン」については、全て「時間設定ボタン」イベントとしてテスト項目を考えました。それらを別々のボタンと捉えてテスト項目を考えた場合、例えば、「秒ボタン」を6回押して、0分0秒の条件にして、「スタートストップボタン」イベントを発行するテストを行うには、6スイッチカバレッジのテストを行う必要があります。Nスイッチカバレッジは、0スイッチカバレッジ→1スイッチカバレッジ→2スイッチカバレッジ→3スイッチカバレッジ……というように上限はありません。上位のカバレッジを行った方がよいのですが、テストには、当然、コストが掛かります。実際の現場では、それらを考慮して、どこまでのカバレッジ確認を行うかを検討してください(図16)。
遷移網羅1スイッチカバレッジ隣接行列計算方法
ここでは、0スイッチカバレッジから、計算により1スイッチカバレッジを求める手法を紹介します。
計算による1スイッチカバレッジの算出方法ですが、0スイッチカバレッジを2乗することで求められます。また、0スイッチカバレッジは、行列であるため、行列演算を行います。図17に行列演算の2乗による計算方法を示します。
遷移網羅1スイッチカバレッジ隣接行列計算
先ほどの計算方法を使用して、実際に遷移前の状態と遷移後の状態を記した0スイッチカバレッジから1スイッチカバレッジを求めてみます(図18)。
0スイッチカバレッジの「時間設定状態」から「時間設定状態」へ遷移(自己遷移)するイベントは、①と②になります。これを隣接行列で2乗の計算を行うと、①①、①②、②①、②②、③⑤の5つになります。このようにして、隣接行列の計算結果と、先ほど、1スイッチカバレッジを求めたものを比較してみると、1スイッチカバレッジの確認ができます。
おわりに
以上、「状態遷移パスのテスト」の説明で、本連載は最終回となります。
組み込みソフトウェア開発の現場では、古くから“設計品質を向上させるための手法”として状態遷移表が用いられてきました。最近ではモデル検査、さらにはプロダクトライン設計手法、マルチコア環境における並列処理設計手法に対応するなど、その進化を続けています。
現在、状態遷移表を使用していない、あるいは、使用したことがない方は、本連載を参考にして、ぜひチャレンジしてみてください! 長期間、ご愛読いただきありがとうございました。(連載完)
Copyright © ITmedia, Inc. All Rights Reserved.