モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

48
+ モモモモモモモモモモモモ - モモモモモモモモモモモモモモ - 2013 モ 12 モ 1 モ モモ () モモモモモモモモモモモモモモモモモ モモモモモモモモモ モモ モモ

description

システムテスト自動化カンファレンスの講演資料

Transcript of モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

Page 1: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

+

モデルベースドテスト入門- テスト詳細設計を自動化しよう -

2013 年 12 月 1 日(日)システムテスト自動化カンファレンス

テスト自動化研究会 朱峰 錦司

Page 2: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

+

はじめに

2013/12/01システムテスト自動化カンファレンス 2013

Page 3: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

3+自己紹介

朱峰錦司(あけみねきんじ) @kjstylepp

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

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

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

WACATE 実行委員 年 2 回、若手向けテスト勉強合宿を企画

テスト自動化研究会2013/12/01システムテスト自動化カンファレンス 2013

Page 4: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

4+(宣伝) WACATE 2013 冬

2013/12/01システムテスト自動化カンファレンス 2013

といっても申し込み終わってますが…

日時 2013/12/14〜 15 ( 1 泊 2 日)

場所 マホロバマインズ三浦(神奈川県 京浜急行三浦海岸駅)

費用 〜 35 歳: 22,000 円36 歳〜: 25,000 円

基調講演

早稲田大学 鷲崎弘宜様

「ソフトウェア品質の知識体系とオープン・クローズ化に向けて - SQuBOK を中心とした各種の知識体系と SEMAT のメソッドアーキテクチャ - 」

関心のある方はぜひ 2014 年 6 月回に!

@WACATE_PR をフォロー!

Page 5: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

5+本日の講演概要

「テスト自動化」って、つまりは「テスト(実行の)自動化」ってことでしょ?

どこからテストケースが湧いて出てくるの?

ほんとにそんなことできるの?

2013/12/01システムテスト自動化カンファレンス 2013

テスト詳細設計も(頑張れば)自動化できます

設計モデルから作ります

デモも交えて紹介します

Page 6: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

6+お品書き

1. テスト詳細設計とは

2. モデルとは

3. モデルベースドテストとは

4. モデルベースドテストの適用例とツールデモ

5. 導入のポイント

2013/12/01システムテスト自動化カンファレンス 2013

Page 7: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

+

1. テスト詳細設計とは

2013/12/01システムテスト自動化カンファレンス 2013

Page 8: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

+1.1 テストの作業

JSTQB での定義 テストに関する技術解説の世界標準 テスト開発に関するプロセスを抜粋

管理に関するものは除外

Test.SSF での定義(開発技術のみ) 日本におけるテストスキルを標準化するための枠組み テスト開発技術部分の抜粋

2013/12/01システムテスト自動化カンファレンス 2013

8

テスト分析

テスト設計

テスト実装

テスト実行

終了基準の評価とレポート

テスト要求分析

テストアーキテクチャ

設計

テスト詳細設計

テスト実装

テスト実行

テスト報告

テスト評価

テスト自動化というとここの話が多い

Page 9: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

9+1.2 テスト詳細設計の作業

1. テストアーキテクチャ設計に基づくテスト対象の仕様の分析

2. テスト実施条件の定義

3. テストカバレッジの設計

4. テスト条件(確認項目)の設計

5. テストデータの設計

6. テストハーネスの設計

2013/12/01システムテスト自動化カンファレンス 2013

Page 10: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

10+1.3 テスト詳細設計の自動化

要は…決まったテストの方針にもとづいてテスト対象の仕様

からテストケースを作る作業

「方針」や「仕様」がかっちり決まっていれば、自動でテストケース作れそうですよね?脱・刺身タンポポ!

2013/12/01システムテスト自動化カンファレンス 2013

モデルベースドテストがひとつのアプローチ

Page 11: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

+

2. モデルとは

2013/12/01システムテスト自動化カンファレンス 2013

Page 12: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

+2.1 モデル

開発対象のシステム(=テスト対象)の振る舞いや性質を特定の観点で抽象化して表現したもの ひとつのモデルで全ての仕様を表現することは不可能

2013/12/01システムテスト自動化カンファレンス 2013

12

Page 13: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

13+2.2 モデルの種類

様々な観点によるモデリング手法が存在状態遷移モデル論理モデル 組合せモデル フローモデル代数モデル統計モデル… etc

2013/12/01システムテスト自動化カンファレンス 2013

本日は主にこの辺りを例にする

Page 14: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

14+2.2.1 状態遷移モデル

システムの状態の変化に着目してシステムの振る舞いをモデリング

2013/12/01システムテスト自動化カンファレンス 2013

Page 15: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

15+2.2.2 論理モデル

システムの構成要素間の論理関係に着目してシステムの複雑なロジックをモデリング

2013/12/01システムテスト自動化カンファレンス 2013

Page 16: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

16+2.2.3 組合せモデル

システムの構成要素のバリエーションや制約を列挙して構成要素間の組合せ元をモデリング

制約 if 性別=男性 then 女性向けメニュー = なし if 受信月 =五月 then 病院 != 豊洲病院

2013/12/01システムテスト自動化カンファレンス 2013

Page 17: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

17+2.3 モデルを扱う際の注意点

システム特性に応じて適切なモデリング手法を選択する必要がある

文法/メタモデルをしっかり決めて記述することが望ましい誰かが適当に書いた絵ではモデルとしての価値が低い モデルベースドテストを導入する際は必須

とはいえ基本的にツールに縛られるので問題はない

2013/12/01システムテスト自動化カンファレンス 2013

Page 18: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

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

2013/12/01システムテスト自動化カンファレンス 2013

出典: UML Superstructure Specification, v2.4.1

Page 19: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

+

3. モデルベースドテストとは

2013/12/01システムテスト自動化カンファレンス 2013

Page 20: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

20+3.1 モデルベースドテスト

モデルを活用してテスト成果物を作成する技術主なテストベースはソースコードではなくモデルなの

でブラックテスト技法に分類される

2013/12/01システムテスト自動化カンファレンス 2013

モデル 実システム

抽象化されたテスト

実行可能なテスト

詳細化・開発

詳細化・開発

実行生成

ここのやり方を定義して自動化

Page 21: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

21+3.2 テストの抽象表現 (1/2)

モデルは抽象的な表現であるため、そこから生成されるテストの成果物も抽象的なものになる

テストの成果物にも様々な要素が存在事前条件 入力値 実施する操作期待結果 テストデータ

2013/12/01システムテスト自動化カンファレンス 2013

Page 22: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

22+3.2 テストの抽象表現 (2/2)

テストのモデリングのための規格も存在 UML Testing Profile

テスト成果物を記述するためのメタモデルを UML で記述 Testing and Test Control Notation version 3

テスト成果物を記述するための DSL UTP よりかなり細かい

既存のモデルベースドテストツールは独自のモデルを定義していることが多い 本日は厳密な規格ではなく、この後デモをするツール

が利用しているモデルを紹介

2013/12/01システムテスト自動化カンファレンス 2013

Page 23: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

23+(参考) UML Testing Profile

入手先 http://www.omg.org/spec/

以下の 4 要素の構造を規定 Test Architecture Test Behavior Test Data Test Management

2013/12/01システムテスト自動化カンファレンス 2013

出典: UML Testing Profile (UTP), v1.2

Page 24: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

24+(参考) Testing and Test Control Notation version 3

入手先 http://www.ttcn-3.org/index.php/downloads/

standards

利用状況 ETSI における IPv6やWiMAX の適合テストの実装欧州の通信機器メーカーでの利用が多い

2013/12/01システムテスト自動化カンファレンス 2013

Page 25: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

25+3.2.1 状態遷移列によるテストシナリオ1 つ以上の状態遷移の列をテストシナリオとして表現するモデル

例 連続する 2遷移のパターンによるテストシナリオ

2013/12/01システムテスト自動化カンファレンス 2013

経路番号 状態 遷移 状態 遷移 状態

0 商品選択不可 貨幣投入 商品選択可能 商品選択 商品搬出中

1 商品選択可能 商品選択 商品搬出中 搬出完了 [懸賞購入 ] 商品選択不可

2 商品選択可能 商品選択 商品搬出中 搬出完了 [懸賞購入でない ] 懸賞中

3 商品搬出中 搬出完了 [懸賞購入でない ] 懸賞中 懸賞終了 [落選 ] 商品選択不可

4 商品搬出中 搬出完了 [懸賞購入 ] 商品選択不可 貨幣投入 商品選択可能

5 商品搬出中 搬出完了 [懸賞購入でない ] 懸賞中 懸賞終了 [当選 ] 懸賞当選

6 懸賞中 懸賞終了 [落選 ] 商品選択不可 貨幣投入 商品選択可能

7 懸賞中 懸賞終了 [当選 ] 懸賞当選 商品選択 商品搬出中

8 懸賞当選 商品選択 商品搬出中 搬出完了 [懸賞購入 ] 商品選択不可

9 懸賞当選 商品選択 商品搬出中 搬出完了 [懸賞購入でない ] 懸賞中

Page 26: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

26+3.2.2 論理パターンによるテストシナリオ

デシジョンテーブルのルールをテストシナリオとして表現するモデル

2013/12/01システムテスト自動化カンファレンス 2013

Page 27: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

27+3.2.3 組合せパターンによるテスト条件システム構成要素の組合せそのものをテスト条件

として表現するモデル

2013/12/01システムテスト自動化カンファレンス 2013

Page 28: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

28+3.3 モデルベースドテストの注意点

一般的に従来よりもテストパターンが多く出る網羅型の技法にもとづくものが多いため

次章で解説 適用後の過不足調整が必要

実行可能なテストにするためには詳細化が必要 入力値の決定事前条件の決定事後条件の決定… etc

2013/12/01システムテスト自動化カンファレンス 2013

Page 29: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

+

4. モデルベースドテストの 適用例とツールデモ

2013/12/01システムテスト自動化カンファレンス 2013

Page 30: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

30+4.1 モデルベースドテストの適用プロセス

2013/12/01システムテスト自動化カンファレンス 2013

必要に応じて実施(ない場合は新たに作成)

テスト設計技法を活用することが多い

モデルの種類の決定

モデルの記述

テストモデルの種類の決定

モデルの変換方針の決定

モデルの修正

テストモデルの生成

テストモデルの修正

要件

定義

設計

テス

ト詳

細設

計テ

スト

実装

テストモデルの詳細化過不足への対応

Page 31: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

31+4.2 例で活用するテスト設計技法

利用するモデル/テストモデルに応じて活用するテスト設計技法は異なる

2013/12/01システムテスト自動化カンファレンス 2013

モデル テストモデル テスト設計技法状態遷移モデル

状態遷移列によるテストシナリオ

状態遷移テスト

論理モデル 論理パターンによるテストシナリオ

デシジョンテーブルテスト

組合せモデル 組合せパターンによるテスト条件

All-pair法

Page 32: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

32+4.3 状態遷移テストの適用例 (1/2)

モデルの変換方針 1 スイッチカバレッジを 100% にする

状態遷移モデルに含まれる 3状態間の遷移のパターンがすべてテストシナリオとして抽出されているかどうかを評価する基準

2013/12/01システムテスト自動化カンファレンス 2013

A B C1. A -> B -> C2. B -> C -> C3. B -> C -> B4. C -> C -> C5. C -> C -> B6. C -> B -> C

1. A -> B2. B -> C3. C -> C4. C -> B

(参考) 0 スイッチの場合

Page 33: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

33+4.3 状態遷移テストの適用例 (2/2)

astah* 品質スイートの活用 モデリングツール astah* professional の状態遷移テ

スト(もできる)プラグイン プラグイン自体は無償だが、有償の astah* ツールが必

2013/12/01システムテスト自動化カンファレンス 2013

Page 34: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

34+4.4 デシジョンテーブルテストの適用例(1/2)モデルの変換方針

2013/12/01システムテスト自動化カンファレンス 2013

割 愛

Page 35: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

35+4.4 デシジョンテーブルテストの適用例(2/2)CEGTest の活用

原因結果グラフの記述/デシジョンテーブルへの変換が可能な Web アプリケーション 資材をダウンロードしてローカルでも利用可能

無償で利用可能

2013/12/01システムテスト自動化カンファレンス 2013

Page 36: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

36+4.5 組合せテストの適用例 (1/2)

モデルの変換方針 2因子間の組合せ網羅率を 100% にする

All-pair法や直交表を用いるのが一般的

2013/12/01システムテスト自動化カンファレンス 2013

因子 水準

1 a, b, c

2 α, β, γ

3 A, B, C

1 a a a b b b c c c

2 α β γ α β γ α β γ

3 A B C C A B B C A

27通り-> 9通り

Page 37: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

37+4.5 組合せテストの適用例 (2/2)

PICTMaster の活用 Excel マクロとして動作する All-pair法にもとづいた組

合せパターン生成ツールパターンの生成エンジンとして別途 PICT が必要

Windows のみで動作 PICT/ PICTMaster ともに無償

2013/12/01システムテスト自動化カンファレンス 2013

Page 38: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

38+(参考)テストツールまるわかりガイドNPO法人 ASTER から提供されているテスト自動

化ツールの辞書的ドキュメント

テスト設計自動化ツールの紹介もある状態遷移テストツール 組合せテスト支援ツール原因結果グラフツール 動的解析ツール カバレッジ計測ツール その他のテスト設計支援ツール

「モデルベースドテスト」はここで言及される

2013/12/01システムテスト自動化カンファレンス 2013

Page 39: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

+

5. 導入のポイント

2013/12/01システムテスト自動化カンファレンス 2013

Page 40: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

+5.1 理想と現実

2013/12/01システムテスト自動化カンファレンス 2013

40

書いてくれない… orz

理想 現実

モデルの種類の決定

モデルの記述

テストモデルの種類の決定

モデルの変換方針の決定

モデルの修正

テストモデルの生成

テストモデルの修正

要件

定義

設計

テス

ト詳

細設

計テ

スト

実装

テストモデルの詳細化

モデル / テストモデルの種類の決定

モデルの変換方針の決定

モデルの記述

テストモデルの生成

テストモデルの修正

要件

定義

設計

テス

ト詳

細設

計テ

スト

実装

テストモデルの詳細化

Page 41: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

41+5.2 モデルベースドテストのメリット

2013/12/01システムテスト自動化カンファレンス 2013

設計モデルの記述によるメリット テスト対象の仕様に対する理解促進形式的記述による仕様漏れ等の発見促進

自動化によるメリット テスト詳細設計のミス防止 テスト詳細設計の工数削減

とはいえモデル記述の増加分もある

Page 42: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

42+5.3 必要なスキル

モデルベースドテストのスコープ モデル化する意味のある箇所

1 本道のバッチ処理の流れを UML で書いてうれしいか?

学習方法 UML の書籍 自身の業務の中での実践

2013/12/01システムテスト自動化カンファレンス 2013

見極めにはモデリングスキルが必要

Page 43: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

+

まとめ

2013/12/01システムテスト自動化カンファレンス 2013

Page 44: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

+モデルベースドテスト( 1/2 )

モデルから抽象化されたテストを(自動)生成

テスト詳細設計の自動化が実現可能

2013/12/01システムテスト自動化カンファレンス 2013

44

モデル 実システム

抽象化されたテスト

実行可能なテスト

詳細化・開発

詳細化・開発

実行生成

ここのやり方を定義して自動化

Page 45: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

+モデルベースドテスト( 2/2 )

何がうれしいの? テスト対象の理解が深まる テスト詳細設計のミス防止/工数削減につながる

かもしれない

誰がモデルを書く? (仕方ないので)テストエンジニアでやりましょう

どこをスコープにする? モデリング能力を養って見極めていこう

難しいんでしょ? ツールはけっこうお手軽です

2013/12/01システムテスト自動化カンファレンス 2013

45

Page 46: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

46+モデルベースドテストの今後

現状の課題解決 モデリング手法の使いどころの整理 自動化ツールの適用可能範囲(サポートするモデリング手法)の拡大

キーワード駆動テストとの融合

2013/12/01システムテスト自動化カンファレンス 2013

抽象化されたテスト

実行可能なテスト詳細化・開発

ここの部分を KDT の仕組みが

カバーしてくれる、かも?

Page 47: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

47+(参考)キーワード駆動テスト

決められた「キーワード」を用いてスプレッドシート感覚でテストシナリオを記述

2013/12/01システムテスト自動化カンファレンス 2013

出典: ITPro 実践!テスト自動化の勘所 キーワード駆動テストによる GUI テストの効率化

Page 48: モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013

+まずはモデリングから!