モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
DESCRIPTION
システムテスト自動化カンファレンスの講演資料TRANSCRIPT
+
モデルベースドテスト入門- テスト詳細設計を自動化しよう -
2013 年 12 月 1 日(日)システムテスト自動化カンファレンス
テスト自動化研究会 朱峰 錦司
+
はじめに
2013/12/01システムテスト自動化カンファレンス 2013
3+自己紹介
朱峰錦司(あけみねきんじ) @kjstylepp
某豊洲の SIer 勤務 全社向けテストプロセスの策定・普及展開 上記プロセスを実現したツールの開発・普及展開 その他対外活動
書籍:革新を続けるソフトウェア生産技術 Web 連載:実践!テスト自動化の勘所
http://itpro.nikkeibp.co.jp/article/COLUMN/20120919/423524/
WACATE 実行委員 年 2 回、若手向けテスト勉強合宿を企画
テスト自動化研究会2013/12/01システムテスト自動化カンファレンス 2013
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 をフォロー!
5+本日の講演概要
「テスト自動化」って、つまりは「テスト(実行の)自動化」ってことでしょ?
どこからテストケースが湧いて出てくるの?
ほんとにそんなことできるの?
2013/12/01システムテスト自動化カンファレンス 2013
テスト詳細設計も(頑張れば)自動化できます
設計モデルから作ります
デモも交えて紹介します
6+お品書き
1. テスト詳細設計とは
2. モデルとは
3. モデルベースドテストとは
4. モデルベースドテストの適用例とツールデモ
5. 導入のポイント
2013/12/01システムテスト自動化カンファレンス 2013
+
1. テスト詳細設計とは
2013/12/01システムテスト自動化カンファレンス 2013
+1.1 テストの作業
JSTQB での定義 テストに関する技術解説の世界標準 テスト開発に関するプロセスを抜粋
管理に関するものは除外
Test.SSF での定義(開発技術のみ) 日本におけるテストスキルを標準化するための枠組み テスト開発技術部分の抜粋
2013/12/01システムテスト自動化カンファレンス 2013
8
テスト分析
テスト設計
テスト実装
テスト実行
終了基準の評価とレポート
テスト要求分析
テストアーキテクチャ
設計
テスト詳細設計
テスト実装
テスト実行
テスト報告
テスト評価
テスト自動化というとここの話が多い
9+1.2 テスト詳細設計の作業
1. テストアーキテクチャ設計に基づくテスト対象の仕様の分析
2. テスト実施条件の定義
3. テストカバレッジの設計
4. テスト条件(確認項目)の設計
5. テストデータの設計
6. テストハーネスの設計
2013/12/01システムテスト自動化カンファレンス 2013
10+1.3 テスト詳細設計の自動化
要は…決まったテストの方針にもとづいてテスト対象の仕様
からテストケースを作る作業
「方針」や「仕様」がかっちり決まっていれば、自動でテストケース作れそうですよね?脱・刺身タンポポ!
2013/12/01システムテスト自動化カンファレンス 2013
モデルベースドテストがひとつのアプローチ
+
2. モデルとは
2013/12/01システムテスト自動化カンファレンス 2013
+2.1 モデル
開発対象のシステム(=テスト対象)の振る舞いや性質を特定の観点で抽象化して表現したもの ひとつのモデルで全ての仕様を表現することは不可能
2013/12/01システムテスト自動化カンファレンス 2013
12
13+2.2 モデルの種類
様々な観点によるモデリング手法が存在状態遷移モデル論理モデル 組合せモデル フローモデル代数モデル統計モデル… etc
2013/12/01システムテスト自動化カンファレンス 2013
本日は主にこの辺りを例にする
14+2.2.1 状態遷移モデル
システムの状態の変化に着目してシステムの振る舞いをモデリング
例
2013/12/01システムテスト自動化カンファレンス 2013
15+2.2.2 論理モデル
システムの構成要素間の論理関係に着目してシステムの複雑なロジックをモデリング
例
2013/12/01システムテスト自動化カンファレンス 2013
16+2.2.3 組合せモデル
システムの構成要素のバリエーションや制約を列挙して構成要素間の組合せ元をモデリング
例
制約 if 性別=男性 then 女性向けメニュー = なし if 受信月 =五月 then 病院 != 豊洲病院
2013/12/01システムテスト自動化カンファレンス 2013
17+2.3 モデルを扱う際の注意点
システム特性に応じて適切なモデリング手法を選択する必要がある
文法/メタモデルをしっかり決めて記述することが望ましい誰かが適当に書いた絵ではモデルとしての価値が低い モデルベースドテストを導入する際は必須
とはいえ基本的にツールに縛られるので問題はない
2013/12/01システムテスト自動化カンファレンス 2013
18+(参考) state machine のメタモデル
2013/12/01システムテスト自動化カンファレンス 2013
出典: UML Superstructure Specification, v2.4.1
+
3. モデルベースドテストとは
2013/12/01システムテスト自動化カンファレンス 2013
20+3.1 モデルベースドテスト
モデルを活用してテスト成果物を作成する技術主なテストベースはソースコードではなくモデルなの
でブラックテスト技法に分類される
2013/12/01システムテスト自動化カンファレンス 2013
モデル 実システム
抽象化されたテスト
実行可能なテスト
詳細化・開発
詳細化・開発
実行生成
ここのやり方を定義して自動化
21+3.2 テストの抽象表現 (1/2)
モデルは抽象的な表現であるため、そこから生成されるテストの成果物も抽象的なものになる
テストの成果物にも様々な要素が存在事前条件 入力値 実施する操作期待結果 テストデータ
2013/12/01システムテスト自動化カンファレンス 2013
22+3.2 テストの抽象表現 (2/2)
テストのモデリングのための規格も存在 UML Testing Profile
テスト成果物を記述するためのメタモデルを UML で記述 Testing and Test Control Notation version 3
テスト成果物を記述するための DSL UTP よりかなり細かい
既存のモデルベースドテストツールは独自のモデルを定義していることが多い 本日は厳密な規格ではなく、この後デモをするツール
が利用しているモデルを紹介
2013/12/01システムテスト自動化カンファレンス 2013
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
24+(参考) Testing and Test Control Notation version 3
入手先 http://www.ttcn-3.org/index.php/downloads/
standards
利用状況 ETSI における IPv6やWiMAX の適合テストの実装欧州の通信機器メーカーでの利用が多い
2013/12/01システムテスト自動化カンファレンス 2013
25+3.2.1 状態遷移列によるテストシナリオ1 つ以上の状態遷移の列をテストシナリオとして表現するモデル
例 連続する 2遷移のパターンによるテストシナリオ
2013/12/01システムテスト自動化カンファレンス 2013
経路番号 状態 遷移 状態 遷移 状態
0 商品選択不可 貨幣投入 商品選択可能 商品選択 商品搬出中
1 商品選択可能 商品選択 商品搬出中 搬出完了 [懸賞購入 ] 商品選択不可
2 商品選択可能 商品選択 商品搬出中 搬出完了 [懸賞購入でない ] 懸賞中
3 商品搬出中 搬出完了 [懸賞購入でない ] 懸賞中 懸賞終了 [落選 ] 商品選択不可
4 商品搬出中 搬出完了 [懸賞購入 ] 商品選択不可 貨幣投入 商品選択可能
5 商品搬出中 搬出完了 [懸賞購入でない ] 懸賞中 懸賞終了 [当選 ] 懸賞当選
6 懸賞中 懸賞終了 [落選 ] 商品選択不可 貨幣投入 商品選択可能
7 懸賞中 懸賞終了 [当選 ] 懸賞当選 商品選択 商品搬出中
8 懸賞当選 商品選択 商品搬出中 搬出完了 [懸賞購入 ] 商品選択不可
9 懸賞当選 商品選択 商品搬出中 搬出完了 [懸賞購入でない ] 懸賞中
26+3.2.2 論理パターンによるテストシナリオ
デシジョンテーブルのルールをテストシナリオとして表現するモデル
例
2013/12/01システムテスト自動化カンファレンス 2013
27+3.2.3 組合せパターンによるテスト条件システム構成要素の組合せそのものをテスト条件
として表現するモデル
例
2013/12/01システムテスト自動化カンファレンス 2013
28+3.3 モデルベースドテストの注意点
一般的に従来よりもテストパターンが多く出る網羅型の技法にもとづくものが多いため
次章で解説 適用後の過不足調整が必要
実行可能なテストにするためには詳細化が必要 入力値の決定事前条件の決定事後条件の決定… etc
2013/12/01システムテスト自動化カンファレンス 2013
+
4. モデルベースドテストの 適用例とツールデモ
2013/12/01システムテスト自動化カンファレンス 2013
30+4.1 モデルベースドテストの適用プロセス
2013/12/01システムテスト自動化カンファレンス 2013
必要に応じて実施(ない場合は新たに作成)
テスト設計技法を活用することが多い
モデルの種類の決定
モデルの記述
テストモデルの種類の決定
モデルの変換方針の決定
モデルの修正
テストモデルの生成
テストモデルの修正
要件
定義
設計
テス
ト詳
細設
計テ
スト
実装
テストモデルの詳細化過不足への対応
31+4.2 例で活用するテスト設計技法
利用するモデル/テストモデルに応じて活用するテスト設計技法は異なる
2013/12/01システムテスト自動化カンファレンス 2013
モデル テストモデル テスト設計技法状態遷移モデル
状態遷移列によるテストシナリオ
状態遷移テスト
論理モデル 論理パターンによるテストシナリオ
デシジョンテーブルテスト
組合せモデル 組合せパターンによるテスト条件
All-pair法
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 スイッチの場合
33+4.3 状態遷移テストの適用例 (2/2)
astah* 品質スイートの活用 モデリングツール astah* professional の状態遷移テ
スト(もできる)プラグイン プラグイン自体は無償だが、有償の astah* ツールが必
要
2013/12/01システムテスト自動化カンファレンス 2013
34+4.4 デシジョンテーブルテストの適用例(1/2)モデルの変換方針
2013/12/01システムテスト自動化カンファレンス 2013
割 愛
35+4.4 デシジョンテーブルテストの適用例(2/2)CEGTest の活用
原因結果グラフの記述/デシジョンテーブルへの変換が可能な Web アプリケーション 資材をダウンロードしてローカルでも利用可能
無償で利用可能
2013/12/01システムテスト自動化カンファレンス 2013
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通り
37+4.5 組合せテストの適用例 (2/2)
PICTMaster の活用 Excel マクロとして動作する All-pair法にもとづいた組
合せパターン生成ツールパターンの生成エンジンとして別途 PICT が必要
Windows のみで動作 PICT/ PICTMaster ともに無償
2013/12/01システムテスト自動化カンファレンス 2013
38+(参考)テストツールまるわかりガイドNPO法人 ASTER から提供されているテスト自動
化ツールの辞書的ドキュメント
テスト設計自動化ツールの紹介もある状態遷移テストツール 組合せテスト支援ツール原因結果グラフツール 動的解析ツール カバレッジ計測ツール その他のテスト設計支援ツール
「モデルベースドテスト」はここで言及される
2013/12/01システムテスト自動化カンファレンス 2013
+
5. 導入のポイント
2013/12/01システムテスト自動化カンファレンス 2013
+5.1 理想と現実
2013/12/01システムテスト自動化カンファレンス 2013
40
書いてくれない… orz
理想 現実
モデルの種類の決定
モデルの記述
テストモデルの種類の決定
モデルの変換方針の決定
モデルの修正
テストモデルの生成
テストモデルの修正
要件
定義
設計
テス
ト詳
細設
計テ
スト
実装
テストモデルの詳細化
モデル / テストモデルの種類の決定
モデルの変換方針の決定
モデルの記述
テストモデルの生成
テストモデルの修正
要件
定義
設計
テス
ト詳
細設
計テ
スト
実装
テストモデルの詳細化
41+5.2 モデルベースドテストのメリット
2013/12/01システムテスト自動化カンファレンス 2013
設計モデルの記述によるメリット テスト対象の仕様に対する理解促進形式的記述による仕様漏れ等の発見促進
自動化によるメリット テスト詳細設計のミス防止 テスト詳細設計の工数削減
とはいえモデル記述の増加分もある
42+5.3 必要なスキル
モデルベースドテストのスコープ モデル化する意味のある箇所
1 本道のバッチ処理の流れを UML で書いてうれしいか?
学習方法 UML の書籍 自身の業務の中での実践
2013/12/01システムテスト自動化カンファレンス 2013
見極めにはモデリングスキルが必要
+
まとめ
2013/12/01システムテスト自動化カンファレンス 2013
+モデルベースドテスト( 1/2 )
モデルから抽象化されたテストを(自動)生成
テスト詳細設計の自動化が実現可能
2013/12/01システムテスト自動化カンファレンス 2013
44
モデル 実システム
抽象化されたテスト
実行可能なテスト
詳細化・開発
詳細化・開発
実行生成
ここのやり方を定義して自動化
+モデルベースドテスト( 2/2 )
何がうれしいの? テスト対象の理解が深まる テスト詳細設計のミス防止/工数削減につながる
かもしれない
誰がモデルを書く? (仕方ないので)テストエンジニアでやりましょう
どこをスコープにする? モデリング能力を養って見極めていこう
難しいんでしょ? ツールはけっこうお手軽です
2013/12/01システムテスト自動化カンファレンス 2013
45
46+モデルベースドテストの今後
現状の課題解決 モデリング手法の使いどころの整理 自動化ツールの適用可能範囲(サポートするモデリング手法)の拡大
キーワード駆動テストとの融合
2013/12/01システムテスト自動化カンファレンス 2013
抽象化されたテスト
実行可能なテスト詳細化・開発
ここの部分を KDT の仕組みが
カバーしてくれる、かも?
47+(参考)キーワード駆動テスト
決められた「キーワード」を用いてスプレッドシート感覚でテストシナリオを記述
2013/12/01システムテスト自動化カンファレンス 2013
出典: ITPro 実践!テスト自動化の勘所 キーワード駆動テストによる GUI テストの効率化
+まずはモデリングから!