SlideShare a Scribd company logo
1 of 46
+

状態遷移テスト
2013年12月14日(土) WACATE 2013 冬

WACATE実行委員会 朱峰錦司
+

はじめに

WACATE 2013 冬

2013/12/14
+

3

自己紹介
 朱峰錦司(あけみねきんじ)@kjstylepp
 某豊洲にあるSIer

技術開発本部 プロアクティブ・テスティングCOE




全社向けテストプロセスの策定・普及展開
上記プロセスを実現したツールの開発・普及展開
その他対外活動



書籍:革新を続けるソフトウェア生産技術
Web連載:実践!テスト自動化の勘所


http://itpro.nikkeibp.co.jp/article/COLUMN/20120919/423524/

 WACATE実行委員
 テスト自動化研究会


キーワード駆動テスト勉強会

WACATE 2013 冬

2013/12/14
+

4

お品書き
1.

状態遷移テスト概要

2.

状態遷移モデル

3.

状態遷移テスト

4.

自動化ツール

WACATE 2013 冬

2013/12/14
+

1. 状態遷移テスト概要

WACATE 2013 冬

2013/12/14
+

6

1.1 状態遷移テストとは
 状態遷移モデルを参照してテストケースを作成す

るテスト設計技法
 仕様をもとにテストケースを作成するのでブラックボッ

クステストに該当
 仕様モデルをベースにして(ある程度)機械的にテストケー
スを作成するのでモデルベースドテストに該当

WACATE 2013 冬

2013/12/14
+

7

1.2 モデルベースドテストとは
 モデルを活用してテスト成果物を作成する技術

モデル

詳細化・開発

生
成

抽象化された
テスト

WACATE 2013 冬

この過程がモデル
ベースドテスト

詳細化・開発

実システム

実
行
実行可能な
テスト

2013/12/14
+

8

1.3 モデルベースドテストの注意点
 入力となるモデルの質に大きく依存
 よい状態遷移モデルをかけないと、状態遷移テストの価

値が低くなる

 作成されるテストケースは抽象的
 実際に実行可能なテストケースにするために、情報を付

与する必要がある

WACATE 2013 冬

2013/12/14
+

2. 状態遷移モデル

WACATE 2013 冬

2013/12/14
+

10

2.1 モデル
 開発対象のシステム(=テスト対象)の振る舞い

や性質を特定の観点で抽象化して表現したもの
 ひとつのモデルで全ての仕様を表現することは不可能

WACATE 2013 冬

2013/12/14
+

11

2.2 モデルの種類
 様々な観点によるモデリング手法が存在
 状態遷移モデル
 論理モデル

本日はこれの話

 組合せモデル

 フローモデル
 代数モデル
 統計モデル

 システム特性に応じて適切なモデリング手法を選

択する必要がある
 しっかりと文法/メタモデルを決めて記述
 誰かが適当に書いた絵ではモデルとしての価値が低い
WACATE 2013 冬

2013/12/14
+

12

2.3 状態遷移モデル(1/2)
 システムの状態の変化に着目してシステムの振る

舞いをモデリング

 構成要素
 様々な書き方が存在
 基本的な構成要素は以下の通り

事前状態

WACATE 2013 冬

イベント[事前条件]
/アクション

事後状態

2013/12/14
+

13

2.3 状態遷移モデル(2/2)
 構成要素
構成要素

説明

状態

ある時点でのシステムの状態を表現。

初期状
態

特殊な状態。モデルで表現したい状態遷移の
開始時点を表現。

終了状
態

特殊な状態。モデルで表現したい状態遷移の
終了時点を表現。なくてもよい。

イベント

状態遷移が発生するきっかけ。

事前条件

状態遷移の分岐条件。

アクショ
ン

状態遷移の結果、システムに発生する状態遷
移以外の変化。

WACATE 2013 冬

2013/12/14
+

14

(参考)state machineのメタモデル

出典:UML Superstructure Specification, v2.4.1
WACATE 2013 冬

2013/12/14
+

15

2.4 状態遷移モデルの書き方
 状態遷移図
 直観的で書きやすい
 全体の概要把握に向いている

 状態遷移表
 仕様の漏れを発見できる

 網羅的に整理するのに向いている

WACATE 2013 冬

2013/12/14
+

16

2.4.1 状態遷移図の例

WACATE 2013 冬

2013/12/14
+

17

2.4.2 状態遷移表の例(1/2)
 事前状態/事後状態を軸にした場合
事前状態
/
事後状態

商品選択
不可

商品選択
不可

商品選
択
可能

商品搬出
中

商品選択

商品搬出
中
懸賞中

搬出完了
[懸賞購入
でない]

搬出完了
[懸賞購入]
懸賞終了
[落選]

WACATE 2013 冬

懸賞当
選

貨幣投入

商品選択
可能

懸賞当選

懸賞中

懸賞終了
[当選]
商品選択
2013/12/14
+

18

2.4.2 状態遷移表の例(2/2)
 事前状態/イベントを軸にした場合

事前状態/イベン
ト

貨幣投入

商品選択不可

商品選択
可能

商品選択可能

商品選択

商品選択不可
[懸賞購入]
商品選択不可
[懸賞購入でない]
商品選択不可
[落選]

懸賞中
懸賞当選

懸賞終了

商品搬出中

商品搬出中

WACATE 2013 冬

搬出完了

懸賞当選
[当選]

商品搬出中

2013/12/14
+

19

(参考)状態変数の扱い(1/2)
 状態に変数を持たせることでより効率的なモデリ

ングが可能
 例題
 非常にシンプルなWebフォームの画面状態遷移を考える

えええええ
• あああああ
• いいいいい
• ううううう

WACATE 2013 冬

追加
削除
削除
削除

追加
•
•
•
•

あああああ
いいいいい
ううううう
えええええ

削除
削除
削除
削除

2013/12/14
+

20

(参考)状態変数の扱い(2/2)
 変数を使わないと…
追加
リストが0件

追加
リストが1件

削除

リストが2件

・・・

削除

 変数(とアクション)を使うと…
変数x:リスト件数

追加/x=1

リストが0件

追加/x++
リストが1件以上

削除[x==1]/x=0
WACATE 2013 冬

削除[x>1]/x-2013/12/14
+

21

2.5 状態遷移モデルの使いどころ
 組込みシステム
 ユーザ操作や信号受信などをイベントとしてモデリング


同期/非同期などの複雑な仕様の表現に適している

 近年は状態遷移モデルに対するモデル検査を実施するこ

とも増えてきている

 業務システム
 データモデルのライフサイクル
 UIの変化

WACATE 2013 冬

2013/12/14
+

22

(参考)モデル検査
 モデル(=設計)自体の妥当性を検証する技術
 稀にモデルベースドテストと混同されることがあるが、

全く違う技術
 テストではないが、品質向上に寄与する技術


テストでは難しい「○○しないこと」をチェックする手段
来年の冬あたりに
入門セッション
できるといいな

 モデルがある性質を満たすかどうかをチェック
 デッドロックしないこと
 一般ユーザが特権業務を実施できないこと

WACATE 2013 冬

2013/12/14
+

23

2.6 状態遷移モデルを書くコツ(1/2)
 図から?表から?
 まずは紙ベースで試行錯誤しながら状態遷移図
 粒度感が決定したら状態遷移表


抜け漏れのないモデリングのため

 必要に応じて状態遷移図に変換

 ツールを使う場合は…
 リアルタイムで状態遷移表で網羅具合を確認しながら状

態遷移図を作成

WACATE 2013 冬

2013/12/14
+

24

2.6 状態遷移モデルを書くコツ(2/2)
 状態から?遷移から?
 どちらでもよい
 不慣れなときは遷移からのほうが書きやすい(かも)




振る舞いをイベントとして列挙
 「会員登録する」「入金する」…etc
イベントの事前条件や期待結果を状態として定義

WACATE 2013 冬

2013/12/14
+

25

2.7 誰がモデル書くか?
 理想
 設計者が設計時に書いてくれる

 現実
 私はあまり見たことがない…
 なければテストエンジニアが書く



モデルを自分で整理することで仕様理解が促進される
仕様もれの指摘にもつながる
 ex.) 業務フローをもとにデータモデルの状態遷移を整理したら
考慮されていない振る舞いのパターンが見つかった

WACATE 2013 冬

2013/12/14
+

3. 状態遷移テスト

WACATE 2013 冬

2013/12/14
+

27

3.1 完全なテストは不可能
 完全な仕様は誰にも書けないため

 網羅型のテスト設計技法で考えるべきこと
 網羅対象



何を網羅するか?
状態遷移テストの場合は状態遷移モデル

 カバレッジ基準(網羅基準)




対象をどう扱えれば100点とするか?
 ex.) C0カバレッジ vs. C1カバレッジ
状態遷移テストの場合はスイッチカバレッジが一般的

WACATE 2013 冬

2013/12/14
+

28

3.2 スイッチカバレッジ
 1つ以上の連続する遷移列のパターンを網羅して

いるかどうか
 0スイッチ


個々の遷移をテストすれば100点

 1スイッチ


連続する2遷移のパターンを網羅すれば100点

 nスイッチ


連続する(n+1)遷移のパターンを網羅すれば100点

 どこまでやるかはプロジェクト次第
 0スイッチは最低限実施

WACATE 2013 冬

2013/12/14
+

29

3.2.1 0スイッチ網羅の例
 個々の遷移をテストケースとして抽出
 下記の例では4パターン
[x]
A

B

C

1. A -> B
2. B -> C
3. C -> C
4. C -> B

[¬x]

 0スイッチ網羅のコツ
 状態遷移表を作成する



表のセル1つが1遷移を表現
全セルに対応するテストケースを
作成すれば0スイッチ網羅ができる

WACATE 2013 冬

事前状態
/
事後状態
A

A

B
○

○

B
C

C

○
[¬x]

○
[x]
2013/12/14
+

30

3.2.2 1スイッチ網羅の例
 連続する2遷移をテストケースとして抽出
 下記の例では6パターン
[x]
A

B

C
[¬x]

WACATE 2013 冬

1. A -> B -> C
2. B -> C -> C
3. B -> C -> B
4. C -> C -> C
5. C -> C -> B
6. C -> B -> C
2013/12/14
+

小演習

WACATE 2013 冬

2013/12/14
+

32

題材
 シンプルな音楽プレイヤー
 ボタンは「停止」「再生」「早送り」の3つ

WACATE 2013 冬

2013/12/14
+

33

問題
 状態遷移表に変換して仕様もれを指摘しよう

 状態遷移表から0スイッチ網羅をするようなテス

トケースを作成しよう

WACATE 2013 冬

2013/12/14
+

34

状態遷移表

事前状態/
イベント

WACATE 2013 冬

2013/12/14
+

35

テストケース

項
番

事前条件

操作

期待結果

1
2
3
4

5
6
7
8
9
10
11
12

WACATE 2013 冬

2013/12/14
+

36

小演習の回答(1/2)

事前状態/
イベント

再生ボタン
押下

停止ボタン
押下

早送りボタン
押下

電源OFF

停止中

電源OFF

電源OFF

停止中

再生中

電源OFF

停止中

再生中

一時停止

停止中

再生中

一時停止

再生中

停止中

一時停止

WACATE 2013 冬

2013/12/14
+

37

小演習の回答(2/2)
事前条件

項
番

操作

期待結果

1

電源OFFであること

再生ボタン押下

停止中となる

2

電源OFFであること

停止ボタン押下

電源OFFのまま

3

電源OFFであること

早送りボタン押下 電源OFFのまま

4

停止中であること

再生ボタン押下

曲が再生される

5

停止中であること

停止ボタン押下

電源OFFとなる

6

停止中であること

早送りボタン押下 停止中のまま曲送りされる

7

再生中であること

再生ボタン押下

曲が一時停止する

8

再生中であること

停止ボタン押下

曲が停止する

9

再生中であること

早送りボタン押下 曲送りされて再生される

10

一時停止していること 再生ボタン押下

曲が再生される

11

一時停止していること 停止ボタン押下

停止中となる

12

一時停止していること 早送りボタン押下 一時停止のまま曲送りされる

WACATE 2013 冬

2013/12/14
+

4. 自動化ツール

WACATE 2013 冬

2013/12/14
+

39

4.1 状態遷移テストの自動化ツール
 モデルベースドテストの自動化
 入力となるモデルとテスト設計プロセスが明確なため自

動化が可能

 状態遷移テストの自動化ツール
 stateMatrix

 astah*

品質スイート

 ZIPC

WACATE 2013 冬

2013/12/14
+

40

4.2 stateMatrixのデモ
 OSSの状態遷移テスト支援ツール
 メンテはもうだいぶ前に止まっている

 Excelで記述した状態遷移表から指定のスイッチ

カバレッジにもとづいた遷移列を生成

WACATE 2013 冬

2013/12/14
+

41

4.3 astah* 品質スイートのデモ
 有償のastah*製品のプラグイン
 状態遷移モデリングをサポート
 状態遷移表をリアルタイム表示

 指定のスイッチカバレッジにもとづいた遷移列を生成

WACATE 2013 冬

2013/12/14
+

42

(参考)テストツールまるわかりガイド
 NPO法人ASTERから発行されたテストツールの

辞書のようなドキュメント

 テストツールをジャンル別に整理したのが特徴
 「状態遷移テストツール」も存在

 組織のテスト自動化具合の診断もついているので

ぜひやってみてください
WACATE 2013 冬

2013/12/14
+

まとめ

WACATE 2013 冬

2013/12/14
+

44

状態遷移テストとは
 状態遷移モデルを参照してテストケースを作成す

るテスト設計技法

 状態遷移テストの適用手順
 状態遷移モデルの作成
 スイッチカバレッジを用いて網羅的にテスト設計


0スイッチ網羅は状態遷移表を書くことで実現

 必要な情報を付与して実行可能なテストケースに

WACATE 2013 冬

2013/12/14
+

45

使う上でのポイント
 まずは状態遷移モデルを書こう
 図から?表から?
 状態から?遷移から?
 設計者が書く?テストエンジニアが書く?

 自動化をしよう
 有償/無償さまざまなツールが存在

WACATE 2013 冬

2013/12/14
+

2013/12/14

まずはモデリングから!

WACATE 2013 冬

More Related Content

More from Kinji Akemine

ICST 2015 まるわかりDay! -Model
ICST 2015 まるわかりDay! -ModelICST 2015 まるわかりDay! -Model
ICST 2015 まるわかりDay! -ModelKinji Akemine
 
モデル検査入門 #wacate
モデル検査入門 #wacateモデル検査入門 #wacate
モデル検査入門 #wacateKinji Akemine
 
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacateテスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacateKinji Akemine
 
第1回キーワード駆動テスト勉強会
第1回キーワード駆動テスト勉強会第1回キーワード駆動テスト勉強会
第1回キーワード駆動テスト勉強会Kinji Akemine
 
Astahプラグイン開発勉強会
Astahプラグイン開発勉強会Astahプラグイン開発勉強会
Astahプラグイン開発勉強会Kinji Akemine
 
TABOK Skill Category2解説
TABOK Skill Category2解説TABOK Skill Category2解説
TABOK Skill Category2解説Kinji Akemine
 
Beginning Java EE 6 勉強会(2) #bje_study
Beginning Java EE 6 勉強会(2) #bje_studyBeginning Java EE 6 勉強会(2) #bje_study
Beginning Java EE 6 勉強会(2) #bje_studyKinji Akemine
 

More from Kinji Akemine (7)

ICST 2015 まるわかりDay! -Model
ICST 2015 まるわかりDay! -ModelICST 2015 まるわかりDay! -Model
ICST 2015 まるわかりDay! -Model
 
モデル検査入門 #wacate
モデル検査入門 #wacateモデル検査入門 #wacate
モデル検査入門 #wacate
 
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacateテスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
 
第1回キーワード駆動テスト勉強会
第1回キーワード駆動テスト勉強会第1回キーワード駆動テスト勉強会
第1回キーワード駆動テスト勉強会
 
Astahプラグイン開発勉強会
Astahプラグイン開発勉強会Astahプラグイン開発勉強会
Astahプラグイン開発勉強会
 
TABOK Skill Category2解説
TABOK Skill Category2解説TABOK Skill Category2解説
TABOK Skill Category2解説
 
Beginning Java EE 6 勉強会(2) #bje_study
Beginning Java EE 6 勉強会(2) #bje_studyBeginning Java EE 6 勉強会(2) #bje_study
Beginning Java EE 6 勉強会(2) #bje_study
 

Recently uploaded

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 

Recently uploaded (9)

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 

WACATE2013冬 状態遷移テスト #wacate2013w