状態遷移モデルを活用した
赤外線自動テスト装置の紹介
２０１０年１月２８日

キャッツ株式会社
ソフトウェア事業部
田村 政和
Copyright© 2010 CATS Co.,ltd. All rights reserved.

目次
１. 組込み開発におけるテストの現状
２. システムテストを改善する方法
３. 赤外線自動テスト装置の紹介
４. 状態遷移モデルとは
５. 状態遷移モデルとテスト
６. テストケース作成方法
７. 適用案の提案
８. 期待される効果
９. 今後の課題
１０. まとめ
Copyright© 2010 CATS Co.,ltd. All rights reserved.

2

格言“If it can happen, it will happen.”「起こる可能性のあることは、いつか実際に起こる。」（マーフィーの法則より）“Anything that can go wrong will go wrong - at
the worst possible moment.”「うまく行かなくなりうるものは何でも、うまく行かな
くなる－しかも最悪のタイミングで」（マーフィーの法則より）情報システムの開発では、計画時の2倍の費用と2倍の時間がかかり、1/2の機能しか実現しない「222の法則」（作者不明）
引用元：
マーフィーの法則 －Wikipedia－、
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%BC%E3%83%95%E3%82%A3%E3%83%BC%E3%81%AE%E6%B3%95%E5%89%87
マーフィーの法則がIT版になって帰ってきた！ －＠IT情報マネジメント－
http://www.atmarkit.co.jp/im/cits/serial/murphy/01/01.html

Copyright© 2010 CATS Co.,ltd. All rights reserved.

3伝えたいこと

ソフトウェア開発において、ツールを活用することで、
開発効率／品質の向上ができる
ツールの本質を理解することが重要になる

Copyright© 2010 CATS Co.,ltd. All rights reserved.

4

１. 組込み開発におけるテストの現状
製品出荷後に不具合を起こした製品数

約6割は製品出荷後に不具合を起こしている2009年版 組込みソフトウェア産業実態調査報告書：経営者・事業責任者向け調査
https://sec.ipa.go.jp/download/files//report/200706/es07rALL.zip
Copyright© 2010 CATS Co.,ltd. All rights reserved.

5

１. 組込み開発におけるテストの現状
工程ごとの投入人数比率

人海戦術でテスト
することが多い

2009年版 組込みソフトウェア産業実態調査報告書：経営者・事業責任者向け調査
https://sec.ipa.go.jp/download/files//report/200706/es07rALL.zip
Copyright© 2010 CATS Co.,ltd. All rights reserved.

6

１. 組込み開発におけるテストの現状
各工程の平均開始時期とその平均期間

テスト工数の割合が多い

2009年版 組込みソフトウェア産業実態調査報告書：経営者・事業責任者向け調査
https://sec.ipa.go.jp/download/files//report/200706/es07rALL.zip
Copyright© 2010 CATS Co.,ltd. All rights reserved.

7

１. 組込み開発におけるテストの現状
ソフトウェア不具合発見工程別件数比率と発生工程の内訳

システムテストでほとんどの不具合を検出している2009年版 組込みソフトウェア産業実態調査報告書：経営者・事業責任者向け調査
https://sec.ipa.go.jp/download/files//report/200706/es07rALL.zip
Copyright© 2010 CATS Co.,ltd. All rights reserved.

8

１. 組込み開発におけるテストの現状
テスト完了基準

３０％は基準が明確でない

2009年版 組込みソフトウェア産業実態調査報告書：経営者・事業責任者向け調査
https://sec.ipa.go.jp/download/files//report/200706/es07rALL.zip
Copyright© 2010 CATS Co.,ltd. All rights reserved.

9

１. 組込み開発におけるテストの現状
製品企画

製品検査

手戻り
SYP1:システム要求定義

SYP4:システムテスト
バグ

システム・エンジニアリング・プロセス
SYP2:システムアーキテクチャ設計

SYP3:システム
結合テスト

手戻り
バグ

SWP1:ソフトウエア
要求定義

ソフトウェアエンジニアリングプロセス

SWP2:ソフトウエア・アーキテクチャ設計

SWP7:ソフトウエア
総合テスト

SWP6:ソフトウエア
結合テスト

SWP3:ソフトウェア
詳細設計

SWP4:実装

SWP5:単体テスト

引用元： 組込みソフトウェア向け開発プロセスガイド
http://sec.ipa.go.jp/index.html

Copyright© 2010 CATS Co.,ltd. All rights reserved.

10

１. 組み込み開発におけるテストの現状
現状から見えてくる課題– システムテストが最後の砦である– 人海戦術でテストすることが多い– テストにかかる工数の割合が多い– テスト完了基準が明確でない場合がある– 過去のテスト完了基準で実施していることが多い

Copyright© 2010 CATS Co.,ltd. All rights reserved.

11

２. システムテストを改善する方法
仕様

製品

システム要求モデル

SYP1:システム要求定義

SYP4:システム
テスト

テストケースの運用
SYP2:システムアーキテクチャ設計

システムアーキテ
クチャモデル

SWP1:ソフトウエア
要求定義

モデル
シミュレーション

SYP3:システム
結合テスト

要求定義
モデル

SWP2:ソフトウエア・アーキテクチャ設計

SWP3:ソフトウェア
詳細設計

SWP7:ソフトウエア
総合テスト

アーキテクチャ
設計モデル

詳細設計
モデル

SWP6:ソフトウエア
結合テスト

エミュレー
ション検証

実機依存部と非依存部の結合および結合テスト

SWP5:単体テスト

実機依存部のテスト
SWP4:実装

モデルから
コード生成

モデル・ベース開発は上流行程の成果物を下流工程へ運用できる
Copyright© 2010 CATS Co.,ltd. All rights reserved.

12

２. システムテストを改善する方法
要求仕様
OR
製品マニュアル時間設計(Excel)
モデル化
テストシナリオ
出力
入力

状態遷移モデル

赤外線イベント

状態遷移モデルからテストシナリオを自動生成し、赤外線通信で自動テストを実施する
画像引用元： 玄人志向 －商品一覧 << キワモノシリーズ >> マルチメディア >> 学習リモコンキット >> KURO-RS
http://www.kuroutoshikou.com/modules/display/?iid=928

Copyright© 2010 CATS Co.,ltd. All rights reserved.

赤外線送受信器
13

３. 赤外線自動テスト装置の紹介
赤外線自動テストツールの概要
１）ZIPCで状態遷移表を作成する
２）PerfectPassでテストケース群（テストシナリオ）を自動生成する
３）赤外線自動テストツール（エクセル）で、タイミング設計、
イベントの詳細設定をする
４）赤外線リモコンで自動テストする

状態遷移表
時間設計(Excel)
読込み

読込み

詳細を紹介
実行命令

テスト
データ

出力

テスト
シナリオ

赤外線
自動テスト
アプリ

実行
実行
ログ

画像引用元： 玄人志向 －商品一覧 << キワモノシリーズ >> マルチメディア >> 学習リモコンキット >> KURO-RS
http://www.kuroutoshikou.com/modules/display/?iid=928

Copyright© 2010 CATS Co.,ltd. All rights reserved.

14

３. 赤外線自動テスト装置の紹介
赤外線自動テストツールの機能構成

赤外線
自動テスト
ツール

(1) テストケース取込機能

PerfectPassが自動生成したテス
トケース群（テストシナリオ）を取り込む機能。テストケース毎のエクセルに分ける(2) 赤外線テスト実行機能

設計したタイミングで赤外線イベ
ントを自動発行する機能(3) イベントリスト取込機能

既に存在するテストシナリオからイベント群を自動取得する機能。

(4) 赤外線イベント取得機能

赤外線通信機からイベントを取得する機能。機器が受信した赤外線データを取得できる

Copyright© 2010 CATS Co.,ltd. All rights reserved.

15

３. 赤外線自動テスト装置の紹介(1) テストケース取込機能
PerfectPassが出力するテストシナリオ（CSV）を読み込み、AutoTest.xls、テストケース.xlsに取り込む（エクセルなので、手入力も可能）
読込み

オペレーションシート
⇒ 取込機能を実行

テストケースシート⇒ PPのイベントリストを取込

PerfectPass
テストシナリオ
イベント定義シート⇒ イベントリストを取込テストシナリオ名称
テストケースNo
初期状態
イベント名
アクション
状態
テストケースNo

テストケースNo１.xls
・・・

テストケース管理シート⇒ テストケースNo、状態、
アクションを取込

AutoTest.xls
Copyright© 2010 CATS Co.,ltd. All rights reserved.

テストケースNoｎ.xls
16

３. 赤外線自動テスト装置の紹介(1) テストケース取込機能（ユーザ設定項目）取り込んだテストケースにイベント発行タイミングを設計する■テストケース情報
テストケースNo. TestNo1
作成日
実施日

作成者
実施者

テスト説明

イベントの発行タイミングを設計する

条件
テスト実施結果
エラーポイント
備考■イベントリスト
EvtNo

イベント名

時間（相対）

Evt1

電源ボタン

1000

Evt2

トレーボタン

1000

時間（絶対）

状態遷移
電源OFF=>
1000
電源ON:停止:CD未挿入
電源ON:停止:CD未挿入=>
2000
電源ON:停止:CD挿入

アクション
電源ON処理();CD挿入処理();テストケース.xls
Copyright© 2010 CATS Co.,ltd. All rights reserved.

17

３. 赤外線自動テスト装置の紹介(1) テストケース取込機能（ユーザ設定項目）
イベントに実際の赤外線データを割り当てる■テスト対象名称
機器バージョン
機器番号■テスト方法通信モジュール
COM番号
PORT

KURO-RS
1
1

取込むイベント名

イベントに赤外線
データを割り当てる
イベントデータ定義取込み■イベント定義
定義No
EvtDef1
EvtDef2
EvtDef3
EvtDef4
EvtDef5
EvtDef6
EvtDef7
EvtDef8
EvtDef9

イベント名
電源ボタン
トレーボタン
再生ボタン
停止ボタン
早送りボタン押下
早送りボタン押上
一時停止ボタン
巻戻しボタン押下
巻戻しボタン押上

イベントデータ定義
0
1
2
3
4
63
0
0
0 122
1
0 96
0
0

5
25
0

6
0
0

7
0
0

8
1
0

9
12
0

10
0
0

11
0
0

12
0
0

13
0
0

14 15
0 224
0
0

AutoTest.xlsのイベント定義シート
Copyright© 2010 CATS Co.,ltd. All rights reserved.

18

３. 赤外線自動テスト装置の紹介(2) 赤外線自動テスト機能
テスト実行ボタンでテストを赤外線テストを自動実行する
AutoTest.xls
オペレーションシート
⇒ テストを実行

読込み

イベント定義シート⇒ 定義を参照

テストケースNo１.xls

テストケース管理シート⇒ 実行の可否

テストシナリオ

時間管理アプリ
イベント

赤外線
データ

イベント発行アプリ

Copyright© 2010 CATS Co.,ltd. All rights reserved.

19

３. 赤外線自動テスト装置の紹介(3) イベントリスト取得機能
テストケース.xlsに記述されているイベントをイベント定義リストに取り込む⇒ ユーザが直接打ち込んだテストケースの場合などに便利
AutoTest.xls

読込みテストケースNo１.xls
イベント定義リストを更新する
取込Copyright© 2010 CATS Co.,ltd. All rights reserved.

20

３. 赤外線自動テスト装置の紹介(4) 赤外線データ取得機能
赤外線リモコン（KURO-RS）で受信したデータをイベント定義データに反映させる。イベント定義を作成する際の手作業によるミスを削減できる。
また、赤外線送信データに誤りがないことの確認もできる。
AutoTest.xls■テスト対象名称
機器バージョン
機器番号■テスト方法通信モジュール
COM番号
PORT

KURO-RS1
1

赤外線データを取得する

イベントデータ定義取込み

取込むイベント名■イベント定義
定義No
EvtDef1
EvtDef2
EvtDef3
EvtDef4
EvtDef5
EvtDef6
EvtDef7
EvtDef8
EvtDef9

イベント名
電源ボタン
トレーボタン
再生ボタン
停止ボタン
早送りボタン押下
早送りボタン押上
一時停止ボタン
巻戻しボタン押下
巻戻しボタン押上

イベントデータ定義
0
1
2
3
4
63
0
0
0 122
1
0 96
0
0

5
25
0

6
0
0

7
0
0

8
1
0

9
12
0

10
0
0

11
0
0

12
0
0

13
0
0

14 15
0 224
0
0

イベント管理アプリ

赤外線
データ
イベント取得アプリ
Copyright© 2010 CATS Co.,ltd. All rights reserved.

21

３. 赤外線自動テスト装置の紹介（デモ）
学習用リモコンカーへの適用例
弊社で組込みソフトウェア研修で使用している学習用のリモコンカーを対象にし、赤外線自動テストを適用した。

学習リモコンの概要■ 充実した周辺デバイスで様々なアプリケーションに対応
入力：
プッシュスイッチ 8個
赤外線リモコン受信ユニット■ マイコンのフラッシュメモリ書き換えはUSB経由で簡単
3軸加速度センサ（ アナログ値 ）さらに、ＵＳＢバスパワー動作でＡＣアダプタ不要
VＲ（ アナログ値 ）出力：
赤色ＬＥＤ 8個、 赤外線LED 1個モータ駆動時は外部電源使用で5Vレギュレータ搭載
液晶表示器（ 16桁2行 ）小型( 1.5A )DCモータドライバ 2個
圧電ブザー
I/F：
USB、CAN、シリアルI/F■ 高性能32ビットマイコン搭載
富士通 FR60 Lite ( MB91F273 )■ サイズ

奥行120mm、幅125mm、高さ27mm

赤外線

Copyright© 2010 CATS Co.,ltd. All rights reserved.

22

４. 状態遷移モデルとは
状態遷移図（STD/SC）／状態遷移表（STM/ST）

状態遷移図

状態遷移表

状態遷移図とは？

状態遷移表とは？

ある事物が、さまざまなイベント（事象）によってステート（状態）が移り変わる様子を表現した図。

ある事物が、さまざまなイベント（事象）によってステート（状態）が移り変わる様子を表現した表。

Copyright© 2010 CATS Co.,ltd. All rights reserved.

23

４. 状態遷移モデルとは

図

表

状態遷移図の特徴

状態遷移表の特徴

概要を把握するのには適している

概要を把握しにくい

異常・例外ケースを入れると図の収拾がつかない

異常・例外ケースも全て網羅している

仕様・設計に基づいて作成するので、仕様・設計の不備を見付けにくい枠を埋めていくことで、仕様・設計の不備が見付かる

モレ・ヌケし易い（書き忘れたのか遷移しないことも明記できるのでモレ・
書かなかったのかの区別ができない） ヌケを防止できるドキュメントの変更に手間取る（配置空間や結線を意識する）

行・列の変更だけで済む

イベントや処理が分散しているので類似性を見付けにくい

イベントや処理の類似性を見付け易い

Copyright© 2010 CATS Co.,ltd. All rights reserved.

24

４. 状態遷移モデルとはどちらの状態遷移モデルを使えばよいか？
開発フェーズや実現したいことによって、どちらの状態遷移モデルを使用するか考慮すべき
状態遷移図で正常系を設計⇒ 概要が解りやすい（正常系を表現している）

状態遷移表で異常系を設計⇒ モレ・ヌケを発見できる（異常系を表現できる）

使い分けの例＜状態遷移図＞
・仕様／設計書などの説明に使用する＜状態遷移表＞・実装前の仕様／設計検証に使用する

Copyright© 2010 CATS Co.,ltd. All rights reserved.

25

５. 状態遷移モデルとテスト
そもそもテストとは
テストは、要求／仕様をテスト対象が満たしていることを確認することである。

状態遷移モデルを活用したテストとは
状態遷移モデルを活用したテストは、状態遷移モデルとテスト対象が同様の動作をしていることを確認するテストである
弱双模倣性（バイシミュレーション）が中心となる。

具体的な例を用いて説明する

Copyright© 2010 CATS Co.,ltd. All rights reserved.

26

５. 状態遷移モデルとテスト
状態遷移モデルを活用したテストの例①状態遷移モデルが仕様通りに設計されていることを確認するテスト
S１

仕様書

e1

S3
S2

一致性の確認

S1

S2

S3

e1

=>S2

×

×

e2

／

=>S2

／

e3

／

=>S3

／

e4

／

／

=>S1

e4

e3

テスト
ケース

e2

テスト
結果

②状態遷移モデルを組合せたとき、他モジュールへ影響無いことを確認するテスト
コード

S１

仕様書
一致性の確認

モデル

＋

e1

S3
S2

S1

S2

S3

e1

=>S2

×

×

e2

／

=>S2

／

e3

／

=>S3

／

e4

／

／

=>S1

e4

e3

e2

テスト
結果
Copyright© 2010 CATS Co.,ltd. All rights reserved.

テストケース27

５. 状態遷移モデルとテスト
状態遷移モデルを活用したテストの例③状態遷移モデルテストで活用したテストケースを実装コードに活用し、同様の動作をすることを確認するテスト
仕様書

仕様書
一致性の確認
一致性の確認

S１

S3
S2

S1

S2

S3

e1

=>S2

×

×

e2

／

=>S2

／

e3

／

=>S3

／

e4

／

／

=>S1

e4

e1
e3

テスト
結果

テスト
結果

テスト
ケース

一致性の確認実装
コードe2

モデルベース検証環境

実機検証環境Copyright© 2010 CATS Co.,ltd. All rights reserved.

28

５. 状態遷移モデルとテスト
状態遷移モデルを活用したテストのまとめ
状態遷移モデルを活用したテストは、例で示したように
状態遷移モデルの動作を仕様書と比較し、期待する動作をすることを確認するテストになる（バイシミュレーション）。

＜主なメリット＞
・上流フェーズで動的に試験できるため、早期に不具合を発見できる・上流フェーズでテストケースを設計でき、下流フェーズに運用できる・モデル化によって差分がわかりやすい・モデルによって可視化されるので、不具合状況が分析しやすい

状態遷移モデルからイベント列を自動抽出し、自動テストする方法を紹介する。

Copyright© 2010 CATS Co.,ltd. All rights reserved.

29

５. 状態遷移モデルとテスト
状態遷移図の特徴

状態遷移図の例

状態遷移図は、正常系のシステムの振舞を記述したモデルになる
S1

実現したいシステムの基本的な振舞（動作）を表現するため、概要を捉えやすい

b

a

e
c

S2

S3

d

f

h
S4

状態遷移図とテストg

状態遷移図から作成するテストケースは、正常系のテストケースとなる

状態遷移図から作成したテストケースの例

正常系テストを作成しやすいモデル

事前条件：
イベント：
事後条件：

S1状態
事象aが発生S2状態であること

異常系テストを作成しにくい
Copyright© 2010 CATS Co.,ltd. All rights reserved.

30

５. 状態遷移モデルとテスト
正常系のテスト網羅度
If( condition ){・・・・・・・・・・・・}
else{
・・・・・・・・・・・・}

switch( condition ){case A:・・・・・・
break;
case B:・・・・・・
break;
defalt:・・・・・・
break;}

正常系テストケースで網羅される範囲

正常系テストケースで網羅されない範囲

正常系テストケースは考えやすいが、正常系テストケース
だけでは、テスト網羅度が低くなってしまう
Copyright© 2010 CATS Co.,ltd. All rights reserved.

31

５. 状態遷移モデルとテスト
状態遷移表の特徴
状態遷移表は、システムの振舞を表形式で網羅的に記述したモデルになる
実現したいシステムの事象と状態の組み合せを表現するため、漏れ・抜けがない

状態遷移表とテスト

状態遷移表の例
S1

S2

S3

S4

a

=> S2

／

／

／

b

=> S1

／

／

／

c

／

=> S3

／

／

d

／

=> S4

／

／

e

／

=> S3

／

／

f

／

／

／

=> S2

g

×

／

／

=> S4

h
×
／
=> S3
／
状態遷移表から作成するテストケースは、網羅的に表現するため、あり得ない組み合せを異常系のテストを作成することが 状態遷移表から作成したテストケースの例
できる。
＜正常系＞
＜異常系＞

異常系を考慮したいため、
今回は、状態遷移表を用いる

事前条件： S1状態
事前条件： S1状態
イベント： 事象aが発生 イベント： 事象gが発生
事後条件： S2状態
事後条件： S1状態

Copyright© 2010 CATS Co.,ltd. All rights reserved.

32

５. 状態遷移モデルとテスト
状態遷移モデルを活用するテストの前提
状態遷移モデルに表現した内容からテストケースを作成するので、状態遷移モデルの誤りはないことを前提とする

状態遷移モデルの検証がされていること
状態遷移モデルを使用したテストは、弱模倣性（バイシミュレーション）になる（適合テスト）。
そのため、状態遷移モデル自体に誤りがある場合、検出できない。

ハードウェア、通信メッセージの種類が決定していること
状態遷移モデルからテストケースを生成するので、表現されていな
いことは、考慮されない（異常系のテストが考慮されにくい）。
しかし、プログラムが処理するのは、マイコンのポートに繋がった
イベント以上に増えることはないので、モデル作成時に考慮すれば問題ない。

Copyright© 2010 CATS Co.,ltd. All rights reserved.

33

５. 状態遷移モデルとテスト
テストケースの定義＜正常系テストケース＞
状態遷移モデルに表現した内容は、基本的に正常系テスト
ケースとする。
状態遷移図から作成するテストケース。状態遷移表の無視（何もしない）は、正常系のテストケースとする。

＜異常系テストケース＞
状態遷移モデルに表現した制約を満たさないテストケースとする。
状態遷移表の不可（あり得ない組み合せ）を実行するテスト
ケース、及び優先度を無視する事象を組み合せたテストケース。

Copyright© 2010 CATS Co.,ltd. All rights reserved.

34

６. テストケース生成方法
状態遷移モデルからテストケースを生成するメリット①

コードからテストケースを生成することに比べてロジックが抽象化されているため、解析しやすく。また、状態爆発しづらい
S１

実装
コード

e1

S3
S2

S1

S2

S3

e1

=>S2

×

×

e2

／

=>S2

／

e3

／

=>S3

／

e4

／

／

=>S1

e4

e3

e2

「複雑度が高い」かつ「ルールが無い」 「複雑度が高くない」かつ「体系だっている」② 状態遷移モデルを解析するので、Cコード表現だけでなく、日本語レベルのテストケースを作成できる
状態1

状態2

状態3

事象１

=>状態2

×

×

FlgA == ON

事象2

／

=>状態2

／

事象3

／

=>状態3

／

事象4

／

／

=>状態1

State1

State2

State3=>State2

××Val > 3／=>State2／

Val > 10／=>State3／

FlgB == OFF／／=>State1

文字列として扱うので複雑さは変わらない
Copyright© 2010 CATS Co.,ltd. All rights reserved.

35

６. テストケース生成方法
テストケース生成の課題
テストにおいて網羅度は、重要な基準になるが、状態遷移表モデルからテストケースを作成する場合、開始状態から、終了状態までの全パスを探索すると膨大なテストケースになってしまう。
例）スイッチの状態遷移表の場合（開始状態：OFF 終了状態：OFF）
OFF

ON

SW_OFF

／

=>OFF

SW_ON

=> ON

／

P1： OFF.SW_OFF => OFF
P2： OFF.SW_OFF => OFF.SW_ON => ON.SW_OFF => OFF
P3： OFF.SW_OFF => OFF.SW_ON => ON.SW_ON=> ON.SW_OFF => OFF
P4： OFF.SW_OFF => OFF.SW_ON => ON.SW_OFF => OFF
P5： OFF.SW_OFF => OFF.SW_ON => ON.SW_ON=> ON.SW_OFF => OFF

網羅度が高いテストケースは必要だが、全てを実施することは、困難である。
Copyright© 2010 CATS Co.,ltd. All rights reserved.

36

６. テストケース生成方法
正常系テストケースだけを考えた場合

S１

e1

e3

S2

S3
e2

S1

S2

S3

e1

=>S2

×

×

e2

／

=>S2

／

e3

／

=>S3

／

状態遷移図の例

状態遷移表の例

No

説明

テストケース（イベント列）

P1

状態遷移モデルの全パスを1回網羅するテストケース

e1=>e2=>e3

P2

P1のパスを分解したテストケース１

e1

P3

P1のパスを分解したテストケース２

e1=>e2

P4

P1のパスを分解したテストケース３

e1=>e3

P5

P1に無視イベントを追加したテストケース

e2=>e3=>e1=>e2=>e3=>e2=>e3

P6

P5を分解したテストケース

e2=>e3=>e1

・
・
・

・
・
・

P1だけでは物足りない（一筆書きアルゴリズム）

ユーザの設定によって、テストケースを追加できる仕組みを構築する必要がある・・・

Copyright© 2010 CATS Co.,ltd. All rights reserved.

37

６. テストケース生成方法
異常系テストケースを考慮した場合

S１

e1

e3

S2

S3
e2

S1

S2

S3

e1

=>S2

×

×

e2

／

=>S2

／

e3

／

=>S3

／

状態遷移図の例

状態遷移表の例

No

説明

テストケース（イベント列）

P1

不可（あり得ない処理）をするテストケース１

e1=>e1=>e2=>e3=>e1

P2

P1を分解したテストケース１

e1=>e1P3

P1を分解したテストケース２

e1=>e3=>e1

P4

P1の順序を入れ替えたテストケース

e1=>e2=>e1=>e3=>e1

・
・
・

・
・
・

・
・
・

Copyright© 2010 CATS Co.,ltd. All rights reserved.

不可（あり得ない）テスト
ケースを考慮でき、また、イベントには優先度があることが多々あることが、想定できるため、優先度が逆転したテストケースを
構築したい

38

６. テストケース生成方法
膨大なテストケースにならないための対策
状態遷移モデルが階層構造の場合、全ての範囲を対象とするとテストケースが膨大になる。そのため、対象範囲を選択できるようにする
S１

S1

e4

e1

S3
e3

S2
S21

e5
e6

S22

S2

S3

S21

S22

e1

=>S2

×

×

×

e2

／

=>S2１

=>S22

／

e3

／

=>S3

=>S3

／

e4

／

／

／

=>S1

e5

／

／

=>S21

／

e6

／

=>S22

／

／

e2
Copyright© 2010 CATS Co.,ltd. All rights reserved.

39

６. テストケース生成方法
状態階層毎のテストケース生成
S１
e1

S3
e3

S2
e2

S21

S1

S2

S3

e1

=>S2

×

×

e2

／

=>S2

／

e3

／

=>S3

／

e4

／

／

=>S1

e4

上位階層の状態遷移モデル

e5

S22

S21

S22

e5

／

=>S21

e6

=>S22

／

e6
下位階層の状態遷移モデル
Copyright© 2010 CATS Co.,ltd. All rights reserved.

40

６. テストケース生成方法
状態遷移モデルの表現方法
・状態遷移表で表現する⇒状態遷移図表現は課題
・遷移に遷移条件を設定できるようにする

S1

S2

S3

e1

=>S2

×

×

e2

／

=>S2

／

e3

／

=>S3:(e2>1)

／

e4

／

／

=>S1

テストケース作成方法

遷移条件(1) 全網羅パス生成(2) 一筆書きテスト生成(2-1) 正常系列を作成する（基本パターン）
e1=>e2=>e3=>e4(2-2) 正常系列に無視イベントを追加する（無視追加オプション）(2-3) 正常系列の部分列を作成する(部分列作成オプション)
e1, e1=>e2, e1=>e2=>e3(2-3) 部分列に不可イベントを加える（不可追加オプション）(2-4) 部分列に遷移条件を違反するイベントを追加する（条件違反追加オプション）

Copyright© 2010 CATS Co.,ltd. All rights reserved.

41

６. テストケース生成方法
テストケース生成方法の方針
状態遷移図から作成できるテストケース（正常系）をベースに、オプションで、
テストケースを追加する仕組みにする
テストケースが使う側が納得いくものになる（自動生成したときのテスト網羅度の基準がわかりやすい）ステップ１（正常系テストケース作成）
状態遷移図を一筆書きで全網羅するようなテストケースを生成する
S１
e1

e4

開始状態：S1、終了状態：S1の場合
P： e1 => e2 => e3 => e4

S3※このとき、遷移条件を考慮する
S2
e3：(e2>1)e2
Copyright© 2010 CATS Co.,ltd. All rights reserved.

42

６. テストケース生成方法
ステップ２（無視追加オプション）
正常系テストケースに、状態遷移表の無視イベントを追加する
S1

S2

S3

e1

=>S2

×

×

e2

／

=>S2

／

e3

／

=>S3：(e2>1)

／

e4

／

／

=>S1

正常系P： e1 => e2 => e3 => e4
無視追加P： e2 => e3 => e4=> e1 => e4 => e2=> e3 => e2 => e3=> e4

ステップ３（部分列分解オプション）
正常系テストケースを、部分列に分解する
正常系P： e1 => e2 => e3 => e4
部分列P1： e1
部分列P2： e1 => e2
部分列P3： e1 => e2 => e3
Copyright© 2010 CATS Co.,ltd. All rights reserved.

43

６. テストケース生成方法
ステップ４（不可追加オプション）
部分列に分解したテストケースに不可イベントを追加する
部分列P1： e1
部分列P2： e1 => e2
部分列P3： e1 => e2 => e3
不可追加P1： e1 => e1（部分列P1に不可イベントを追加）
不可追加P2： e1 => e2 => e1（部分列P2に不可イベントを追加）
不可追加P3： e1 => e2=> e3 => e1（部分列P3に不可イベントを追加）

S1

S2

S3

e1

=>S2

×

×

e2

／

=>S2

／

e3

／

=>S3：(e2>1)

／

e4

／

／

=>S1

ステップ５（条件違反追加オプション）
部分列に分解したテストケースに条件違反イベントを追加する
条件違反追加P： e1 => e3 （部分列P1に追加）
Copyright© 2010 CATS Co.,ltd. All rights reserved.

44

６. テストケース生成方法
ステップ４（不可追加オプション）
部分列に分解したテストケースに不可イベントを追加する
部分列P1： e1
部分列P2： e1 => e2
部分列P3： e1 => e2 => e3
不可追加P1： e1 => e1（部分列P1に不可イベントを追加）
不可追加P2： e1 => e2 => e1（部分列P2に不可イベントを追加）
不可追加P3： e1 => e2=> e3 => e1（部分列P3に不可イベントを追加）

S1

S2

S3

e1

=>S2

×

×

e2

／

=>S2

／

e3

／

=>S3：(e2>1)

／

e4

／

／

=>S1

ステップ５（条件違反追加オプション）
部分列に分解したテストケースに条件違反イベントを追加する

PerfectPassで紹介したテストケース生成の自動化を検討中
条件違反追加P： e1 => e3 （部分列P1に追加）
Copyright© 2010 CATS Co.,ltd. All rights reserved.

45

７. 適用案の提案
要求仕様
OR
製品マニュアル時間設計(Excel)
モデル化
テストシナリオ
出力
入力

状態遷移モデル

赤外線イベント

状態遷移モデルからテストシナリオを自動生成し、赤外線通信で自動テストを実施する
画像引用元： 玄人志向 －商品一覧 << キワモノシリーズ >> マルチメディア >> 学習リモコンキット >> KURO-RS
http://www.kuroutoshikou.com/modules/display/?iid=928

Copyright© 2010 CATS Co.,ltd. All rights reserved.

赤外線送受信器
46

７. 適用案の提案
システムテスト以外への適用方法（今後の拡張案）
テストケースをコンバート
他のテストの入力にコンバートする⇒ 単体テスト、結合テストにも対応可能⇒ 上流フェーズのテストにも対応可能

コンバータ
時間設計(Excel)

テストケース

タイミングチャート作成
テストケースとタイミング設計より、タイミングチャートを自動生成する。

管理面の強化案
TestLinkとの連携
テストケースをTestLinkで管理できるようにする
Copyright© 2010 CATS Co.,ltd. All rights reserved.

47

７. 適用案の提案
テストケース自動生成の適用で効果がありそうな製品
状態遷移モデルで表現できる製品すべてに適用できる！

＜具体的な運用方法＞
・要求レベルの状態遷移モデルからテストケースを生成する
例１）
事象名称のイベント列を抽出したテストケース
事象Ａ⇒事象Ｂ．．．⇒事象Ｃ⇒ 紹介した赤外線テスト
例２）
詳細レベルの状態遷移モデルからテストケース生成
u1_value = 1⇒ u1_value = 2⇒ 状態遷移モデルの文字列を詳細化すれば、その文字列を抽出できる

Copyright© 2010 CATS Co.,ltd. All rights reserved.

48

７. 適用案の提案
赤外線自動テストツールの適用で高い効果が得られそうな製品
前提： 赤外線を利用している製品（テレビ、エアコンなど）＜高い効果が得られそうな部分＞
・入力のタイミングによって挙動が異なる部分
例１）
液晶パネルのRGB調整などの状態がタイムアウトしてしまう機能⇒ 時間で状態が異なり、同じイベントでも挙動が異なるため。
・入力を連続するもの
例２）
エアコンの温度調節機能⇒ 温度調節機能は、連続して入力される項目のため。
・赤外線通信の混線テスト
例３）
複数の製品がある場合⇒ 赤外線は、無線通信なので混線が起こるため
Copyright© 2010 CATS Co.,ltd. All rights reserved.

49

８. 期待される効果＜品質改善＞
テストケース作成の自動化により、人為的なミスを削減できる
自動テストにより、人為的なミスを削減できる
状態遷移モデルの活用により、上流工程の漏れ・抜けを発見できる
状態遷移モデルのカバレッジにより、テスト基準を明確にできる＜工数削減＞
テストケース作成の自動化により、テスト工数が削減する
自動テストにより、テスト工数が削減する
状態遷移モデルの活用により、上流工程で漏れ・抜けを発見できる
ため、工数の手戻りが少ない
テストケースの再利用により、効率化でき、工数が削減する

Copyright© 2010 CATS Co.,ltd. All rights reserved.

50

９. 今後の課題＜テストケース生成＞
正常系テストケース自動生成後の微調整
テストケース自動生成のバッチ処理
詳細なテストケース生成
対象モデルの状態遷移図表現
タイミングの自動生成＜自動テストツール＞
自動テストの結果確認方法までのサポート方法
テストケースのタイミングチャート表現

Copyright© 2010 CATS Co.,ltd. All rights reserved.

51

１０.. まとめ１０
＜テストケース生成＞
状態遷移モデルからテストケースを生成することは、比較的容易である
テストの全自動化は困難だが、半自動化するだけで効率が上がる
自動化の際のテストケース生成方法を、正常系テスト
ケースに条件を付加する方法にすることで、テスト基準
が解りやすい＜自動テストツール＞
赤外線通信を使用することで、システムテストを容易に実施できる
Copyright© 2010 CATS Co.,ltd. All rights reserved.

52

格言“If it can happen, it will happen.”「起こる可能性のあることは、いつか実際に起こる。」（マーフィーの法則より）“Anything that can go wrong will go wrong - at
the worst possible moment.”「うまく行かなくなりうるものは何でも、うまく行かな
くなる－しかも最悪のタイミングで」（マーフィーの法則より）情報システムの開発では、計画時の2倍の費用と2倍の時間がかかり、1/2の機能しか実現しない「222の法則」（作者不明）
引用元：
マーフィーの法則 －Wikipedia－、
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%BC%E3%83%95%E3%82%A3%E3%83%BC%E3%81%AE%E6%B3%95%E5%89%87
マーフィーの法則がIT版になって帰ってきた！ －＠IT情報マネジメント－
http://www.atmarkit.co.jp/im/cits/serial/murphy/01/01.html

Copyright© 2010 CATS Co.,ltd. All rights reserved.

53

ご清聴ありがとうございました。

Copyright© 2010 CATS Co.,ltd. All rights reserved.

54