Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
+

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

WACATE実行委員会 朱峰錦司
+

はじめに

WACATE 2013 冬

2013/12/14
+

3

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

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

全社向けテストプロセスの策定・普及展開
上記プロセスを実現したツールの開発・普...
+

4

お品書き
1.

状態遷移テスト概要

2.

状態遷移モデル

3.

状態遷移テスト

4.

自動化ツール

WACATE 2013 冬

2013/12/14
+

1. 状態遷移テスト概要

WACATE 2013 冬

2013/12/14
+

6

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

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

クステストに該当
 仕様モデルをベースにして(ある程度)機械的にテストケー...
+

7

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

モデル

詳細化・開発

生
成

抽象化された
テスト

WACATE 2013 冬

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

詳細化・開発

実シス...
+

8

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

値が低くなる

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

2. 状態遷移モデル

WACATE 2013 冬

2013/12/14
+

10

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

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

WACATE 2013 冬

2013/12/14
+

11

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

本日はこれの話

 組合せモデル

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

 システム特性に応じて適切なモデリン...
+

12

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

舞いをモデリング

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

事前状態

WACATE 2013 冬

イベント...
+

13

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

説明

状態

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

初期状
態

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

終了状
態

特殊な状態。モデルで表現し...
+

14

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

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

2013/12/14
+

15

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

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

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

WACATE 2013 冬

2013/...
+

16

2.4.1 状態遷移図の例

WACATE 2013 冬

2013/12/14
+

17

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

商品選択
不可

商品選択
不可

商品選
択
可能

商品搬出
中

商品選択

商品搬出
中
懸賞中

搬出完了
[懸賞購入...
+

18

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

事前状態/イベン
ト

貨幣投入

商品選択不可

商品選択
可能

商品選択可能

商品選択

商品選択不可
[懸賞購入]
商品選択不可
[懸賞購入で...
+

19

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

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

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

...
+

20

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

追加
リストが1件

削除

リストが2件

・・・

削除

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

追加/x=1

リストが0件...
+

21

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

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

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

とも...
+

22

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

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

テストでは難しい「○○しないこと」をチ...
+

23

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

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

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

 ツ...
+

24

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



振る舞いをイベントとして列挙
 「会員登録する」「入金する」…etc
イ...
+

25

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

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

モデルを自分で整理することで仕様理解が促進される
仕様もれの指摘にも...
+

3. 状態遷移テスト

WACATE 2013 冬

2013/12/14
+

27

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

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

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

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

28

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

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

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

 1スイッチ


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

 nス...
+

29

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

B

C

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

[¬x]

 0スイ...
+

30

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

B

C
[¬x]

WACATE 2013 冬

1. A -> B -> C
2. B -> C -> C
...
+

小演習

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

停止中

再生中

一時停止

...
+

37

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

項
番

操作

期待結果

1

電源OFFであること

再生ボタン押下

停止中となる

2

電源OFFであること

停止ボタン押下

電源OFFのまま

3

電源OFFであること

早...
+

4. 自動化ツール

WACATE 2013 冬

2013/12/14
+

39

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

動化が可能

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

 astah*

品...
+

40

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

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

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

WACATE 20...
+

41

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

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

WACATE 2013...
+

42

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

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

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

 組織のテスト自動化...
+

まとめ

WACATE 2013 冬

2013/12/14
+

44

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

るテスト設計技法

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

0スイッチ網羅は状態遷移表...
+

45

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

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

WACATE 2013...
+

2013/12/14

まずはモデリングから!

WACATE 2013 冬
Upcoming SlideShare
Loading in …5
×

WACATE2013冬 状態遷移テスト #wacate2013w

2,872 views

Published on

WACATE2013冬のセッションで講義をした状態遷移テストのスライドです。

Published in: Technology
  • Be the first to comment

WACATE2013冬 状態遷移テスト #wacate2013w

  1. 1. + 状態遷移テスト 2013年12月14日(土) WACATE 2013 冬 WACATE実行委員会 朱峰錦司
  2. 2. + はじめに WACATE 2013 冬 2013/12/14
  3. 3. + 3 自己紹介  朱峰錦司(あけみねきんじ)@kjstylepp  某豊洲にあるSIer 技術開発本部 プロアクティブ・テスティングCOE    全社向けテストプロセスの策定・普及展開 上記プロセスを実現したツールの開発・普及展開 その他対外活動   書籍:革新を続けるソフトウェア生産技術 Web連載:実践!テスト自動化の勘所  http://itpro.nikkeibp.co.jp/article/COLUMN/20120919/423524/  WACATE実行委員  テスト自動化研究会  キーワード駆動テスト勉強会 WACATE 2013 冬 2013/12/14
  4. 4. + 4 お品書き 1. 状態遷移テスト概要 2. 状態遷移モデル 3. 状態遷移テスト 4. 自動化ツール WACATE 2013 冬 2013/12/14
  5. 5. + 1. 状態遷移テスト概要 WACATE 2013 冬 2013/12/14
  6. 6. + 6 1.1 状態遷移テストとは  状態遷移モデルを参照してテストケースを作成す るテスト設計技法  仕様をもとにテストケースを作成するのでブラックボッ クステストに該当  仕様モデルをベースにして(ある程度)機械的にテストケー スを作成するのでモデルベースドテストに該当 WACATE 2013 冬 2013/12/14
  7. 7. + 7 1.2 モデルベースドテストとは  モデルを活用してテスト成果物を作成する技術 モデル 詳細化・開発 生 成 抽象化された テスト WACATE 2013 冬 この過程がモデル ベースドテスト 詳細化・開発 実システム 実 行 実行可能な テスト 2013/12/14
  8. 8. + 8 1.3 モデルベースドテストの注意点  入力となるモデルの質に大きく依存  よい状態遷移モデルをかけないと、状態遷移テストの価 値が低くなる  作成されるテストケースは抽象的  実際に実行可能なテストケースにするために、情報を付 与する必要がある WACATE 2013 冬 2013/12/14
  9. 9. + 2. 状態遷移モデル WACATE 2013 冬 2013/12/14
  10. 10. + 10 2.1 モデル  開発対象のシステム(=テスト対象)の振る舞い や性質を特定の観点で抽象化して表現したもの  ひとつのモデルで全ての仕様を表現することは不可能 WACATE 2013 冬 2013/12/14
  11. 11. + 11 2.2 モデルの種類  様々な観点によるモデリング手法が存在  状態遷移モデル  論理モデル 本日はこれの話  組合せモデル  フローモデル  代数モデル  統計モデル  システム特性に応じて適切なモデリング手法を選 択する必要がある  しっかりと文法/メタモデルを決めて記述  誰かが適当に書いた絵ではモデルとしての価値が低い WACATE 2013 冬 2013/12/14
  12. 12. + 12 2.3 状態遷移モデル(1/2)  システムの状態の変化に着目してシステムの振る 舞いをモデリング  構成要素  様々な書き方が存在  基本的な構成要素は以下の通り 事前状態 WACATE 2013 冬 イベント[事前条件] /アクション 事後状態 2013/12/14
  13. 13. + 13 2.3 状態遷移モデル(2/2)  構成要素 構成要素 説明 状態 ある時点でのシステムの状態を表現。 初期状 態 特殊な状態。モデルで表現したい状態遷移の 開始時点を表現。 終了状 態 特殊な状態。モデルで表現したい状態遷移の 終了時点を表現。なくてもよい。 イベント 状態遷移が発生するきっかけ。 事前条件 状態遷移の分岐条件。 アクショ ン 状態遷移の結果、システムに発生する状態遷 移以外の変化。 WACATE 2013 冬 2013/12/14
  14. 14. + 14 (参考)state machineのメタモデル 出典:UML Superstructure Specification, v2.4.1 WACATE 2013 冬 2013/12/14
  15. 15. + 15 2.4 状態遷移モデルの書き方  状態遷移図  直観的で書きやすい  全体の概要把握に向いている  状態遷移表  仕様の漏れを発見できる  網羅的に整理するのに向いている WACATE 2013 冬 2013/12/14
  16. 16. + 16 2.4.1 状態遷移図の例 WACATE 2013 冬 2013/12/14
  17. 17. + 17 2.4.2 状態遷移表の例(1/2)  事前状態/事後状態を軸にした場合 事前状態 / 事後状態 商品選択 不可 商品選択 不可 商品選 択 可能 商品搬出 中 商品選択 商品搬出 中 懸賞中 搬出完了 [懸賞購入 でない] 搬出完了 [懸賞購入] 懸賞終了 [落選] WACATE 2013 冬 懸賞当 選 貨幣投入 商品選択 可能 懸賞当選 懸賞中 懸賞終了 [当選] 商品選択 2013/12/14
  18. 18. + 18 2.4.2 状態遷移表の例(2/2)  事前状態/イベントを軸にした場合 事前状態/イベン ト 貨幣投入 商品選択不可 商品選択 可能 商品選択可能 商品選択 商品選択不可 [懸賞購入] 商品選択不可 [懸賞購入でない] 商品選択不可 [落選] 懸賞中 懸賞当選 懸賞終了 商品搬出中 商品搬出中 WACATE 2013 冬 搬出完了 懸賞当選 [当選] 商品搬出中 2013/12/14
  19. 19. + 19 (参考)状態変数の扱い(1/2)  状態に変数を持たせることでより効率的なモデリ ングが可能  例題  非常にシンプルなWebフォームの画面状態遷移を考える えええええ • あああああ • いいいいい • ううううう WACATE 2013 冬 追加 削除 削除 削除 追加 • • • • あああああ いいいいい ううううう えええええ 削除 削除 削除 削除 2013/12/14
  20. 20. + 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. 21. + 21 2.5 状態遷移モデルの使いどころ  組込みシステム  ユーザ操作や信号受信などをイベントとしてモデリング  同期/非同期などの複雑な仕様の表現に適している  近年は状態遷移モデルに対するモデル検査を実施するこ とも増えてきている  業務システム  データモデルのライフサイクル  UIの変化 WACATE 2013 冬 2013/12/14
  22. 22. + 22 (参考)モデル検査  モデル(=設計)自体の妥当性を検証する技術  稀にモデルベースドテストと混同されることがあるが、 全く違う技術  テストではないが、品質向上に寄与する技術  テストでは難しい「○○しないこと」をチェックする手段 来年の冬あたりに 入門セッション できるといいな  モデルがある性質を満たすかどうかをチェック  デッドロックしないこと  一般ユーザが特権業務を実施できないこと WACATE 2013 冬 2013/12/14
  23. 23. + 23 2.6 状態遷移モデルを書くコツ(1/2)  図から?表から?  まずは紙ベースで試行錯誤しながら状態遷移図  粒度感が決定したら状態遷移表  抜け漏れのないモデリングのため  必要に応じて状態遷移図に変換  ツールを使う場合は…  リアルタイムで状態遷移表で網羅具合を確認しながら状 態遷移図を作成 WACATE 2013 冬 2013/12/14
  24. 24. + 24 2.6 状態遷移モデルを書くコツ(2/2)  状態から?遷移から?  どちらでもよい  不慣れなときは遷移からのほうが書きやすい(かも)   振る舞いをイベントとして列挙  「会員登録する」「入金する」…etc イベントの事前条件や期待結果を状態として定義 WACATE 2013 冬 2013/12/14
  25. 25. + 25 2.7 誰がモデル書くか?  理想  設計者が設計時に書いてくれる  現実  私はあまり見たことがない…  なければテストエンジニアが書く   モデルを自分で整理することで仕様理解が促進される 仕様もれの指摘にもつながる  ex.) 業務フローをもとにデータモデルの状態遷移を整理したら 考慮されていない振る舞いのパターンが見つかった WACATE 2013 冬 2013/12/14
  26. 26. + 3. 状態遷移テスト WACATE 2013 冬 2013/12/14
  27. 27. + 27 3.1 完全なテストは不可能  完全な仕様は誰にも書けないため  網羅型のテスト設計技法で考えるべきこと  網羅対象   何を網羅するか? 状態遷移テストの場合は状態遷移モデル  カバレッジ基準(網羅基準)   対象をどう扱えれば100点とするか?  ex.) C0カバレッジ vs. C1カバレッジ 状態遷移テストの場合はスイッチカバレッジが一般的 WACATE 2013 冬 2013/12/14
  28. 28. + 28 3.2 スイッチカバレッジ  1つ以上の連続する遷移列のパターンを網羅して いるかどうか  0スイッチ  個々の遷移をテストすれば100点  1スイッチ  連続する2遷移のパターンを網羅すれば100点  nスイッチ  連続する(n+1)遷移のパターンを網羅すれば100点  どこまでやるかはプロジェクト次第  0スイッチは最低限実施 WACATE 2013 冬 2013/12/14
  29. 29. + 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. 30. + 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
  31. 31. + 小演習 WACATE 2013 冬 2013/12/14
  32. 32. + 32 題材  シンプルな音楽プレイヤー  ボタンは「停止」「再生」「早送り」の3つ WACATE 2013 冬 2013/12/14
  33. 33. + 33 問題  状態遷移表に変換して仕様もれを指摘しよう  状態遷移表から0スイッチ網羅をするようなテス トケースを作成しよう WACATE 2013 冬 2013/12/14
  34. 34. + 34 状態遷移表 事前状態/ イベント WACATE 2013 冬 2013/12/14
  35. 35. + 35 テストケース 項 番 事前条件 操作 期待結果 1 2 3 4 5 6 7 8 9 10 11 12 WACATE 2013 冬 2013/12/14
  36. 36. + 36 小演習の回答(1/2) 事前状態/ イベント 再生ボタン 押下 停止ボタン 押下 早送りボタン 押下 電源OFF 停止中 電源OFF 電源OFF 停止中 再生中 電源OFF 停止中 再生中 一時停止 停止中 再生中 一時停止 再生中 停止中 一時停止 WACATE 2013 冬 2013/12/14
  37. 37. + 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
  38. 38. + 4. 自動化ツール WACATE 2013 冬 2013/12/14
  39. 39. + 39 4.1 状態遷移テストの自動化ツール  モデルベースドテストの自動化  入力となるモデルとテスト設計プロセスが明確なため自 動化が可能  状態遷移テストの自動化ツール  stateMatrix  astah* 品質スイート  ZIPC WACATE 2013 冬 2013/12/14
  40. 40. + 40 4.2 stateMatrixのデモ  OSSの状態遷移テスト支援ツール  メンテはもうだいぶ前に止まっている  Excelで記述した状態遷移表から指定のスイッチ カバレッジにもとづいた遷移列を生成 WACATE 2013 冬 2013/12/14
  41. 41. + 41 4.3 astah* 品質スイートのデモ  有償のastah*製品のプラグイン  状態遷移モデリングをサポート  状態遷移表をリアルタイム表示  指定のスイッチカバレッジにもとづいた遷移列を生成 WACATE 2013 冬 2013/12/14
  42. 42. + 42 (参考)テストツールまるわかりガイド  NPO法人ASTERから発行されたテストツールの 辞書のようなドキュメント  テストツールをジャンル別に整理したのが特徴  「状態遷移テストツール」も存在  組織のテスト自動化具合の診断もついているので ぜひやってみてください WACATE 2013 冬 2013/12/14
  43. 43. + まとめ WACATE 2013 冬 2013/12/14
  44. 44. + 44 状態遷移テストとは  状態遷移モデルを参照してテストケースを作成す るテスト設計技法  状態遷移テストの適用手順  状態遷移モデルの作成  スイッチカバレッジを用いて網羅的にテスト設計  0スイッチ網羅は状態遷移表を書くことで実現  必要な情報を付与して実行可能なテストケースに WACATE 2013 冬 2013/12/14
  45. 45. + 45 使う上でのポイント  まずは状態遷移モデルを書こう  図から?表から?  状態から?遷移から?  設計者が書く?テストエンジニアが書く?  自動化をしよう  有償/無償さまざまなツールが存在 WACATE 2013 冬 2013/12/14
  46. 46. + 2013/12/14 まずはモデリングから! WACATE 2013 冬

×