Advertisement

WACATE2013冬 状態遷移テスト #wacate2013w

Software Test Engineer, Software Test Architect and Software Test Automater.
Dec. 14, 2013
Advertisement

More Related Content

Recently uploaded(20)

Advertisement

WACATE2013冬 状態遷移テスト #wacate2013w

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