+

モデルベースドテスト入門
-テスト詳細設計を自動化しよう2013年12月1日(日)
システムテスト自動化カンファレンス
テスト自動化研究会

朱峰 錦司
+

はじめに

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

2013/12/01
+

3

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

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




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

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

 WACATE実行委員


年2回、若手向けテスト勉強合宿を企画

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

2013/12/01
+

4

(宣伝)WACATE 2013冬
 といっても申し込み終わってますが…

日時
場所

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

費用

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

基調講
演

早稲田大学 鷲崎弘宜様

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

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

関心のある方はぜひ2014年6月回に!
@WACATE_PRをフォロー!
システムテスト自動化カンファレンス2013

2013/12/01
+

5

本日の講演概要
 「テスト自動化」って、つまりは「テスト(実行

の)自動化」ってことでしょ?

テスト詳細設計も(頑張れば)自動化できます
 どこからテストケースが湧いて出てくるの?

設計モデルから作ります
 ほんとにそんなことできるの?

デモも交えて紹介します
システムテスト自動化カンファレンス2013

2013/12/01
+

6

お品書き
1.

テスト詳細設計とは

2.

モデルとは

3.

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

4.

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

5.

導入のポイント

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

2013/12/01
+

1. テスト詳細設計とは

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

2013/12/01
+

8

1.1 テストの作業
 JSTQBでの定義
 テストに関する技術解説の世界標準
テスト自動化というと
 テスト開発に関するプロセスを抜粋
ここの話が多い


管理に関するものは除外

テスト
分析

テスト
設計

テスト
実装

テスト
実行

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

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

テストアー
キテクチャ
設計

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

テスト
詳細設計

テスト
実装

テスト
実行

テスト
報告

テスト
評価
2013/12/01
+

9

1.2 テスト詳細設計の作業
1.

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

2.

テスト実施条件の定義

3.

テストカバレッジの設計

4.

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

5.

テストデータの設計

6.

テストハーネスの設計

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

2013/12/01
+

10

1.3 テスト詳細設計の自動化
 要は…
 決まったテストの方針にもとづいてテスト対象の仕様か

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

 「方針」や「仕様」がかっちり決まっていれば、

自動でテストケース作れそうですよね?
 脱・刺身タンポポ!

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

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

2013/12/01
+

2. モデルとは

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

2013/12/01
+

12

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

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

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

2013/12/01
+

13

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

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

 組合せモデル
 フローモデル
 代数モデル
 統計モデル…etc

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

2013/12/01
+

14

2.2.1 状態遷移モデル
 システムの状態の変化に着目してシステムの振る

舞いをモデリング
例

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

2013/12/01
+

15

2.2.2 論理モデル
 システムの構成要素間の論理関係に着目してシス

テムの複雑なロジックをモデリング
例

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

2013/12/01
+

16

2.2.3 組合せモデル
 システムの構成要素のバリエーションや制約を列

挙して構成要素間の組合せ元をモデリング
例

 制約



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

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

2013/12/01
+

17

2.3 モデルを扱う際の注意点
 システム特性に応じて適切なモデリング手法を選

択する必要がある

 文法/メタモデルをしっかり決めて記述すること

が望ましい
 誰かが適当に書いた絵ではモデルとしての価値が低い

 モデルベースドテストを導入する際は必須


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

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

2013/12/01
+

18

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

出典:UML Superstructure Specification, v2.4.1
システムテスト自動化カンファレンス2013

2013/12/01
+

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

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

2013/12/01
+

20

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

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

モデル

生
成

抽象化された
テスト
システムテスト自動化カンファレンス2013

詳細化・開発
ここのやり方を
定義して自動化

詳細化・開発

実システム

実
行
実行可能な
テスト
2013/12/01
+

21

3.2 テストの抽象表現(1/2)
 モデルは抽象的な表現であるため、そこから生成

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

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

2013/12/01
+

22

3.2 テストの抽象表現(2/2)
 テストのモデリングのための規格も存在
 UML Testing


テスト成果物を記述するためのメタモデルをUMLで記述

 Testing


Profile

and Test Control Notation version 3

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

 既存のモデルベースドテストツールは独自のモデ

ルを定義していることが多い
 本日は厳密な規格ではなく、この後デモをするツールが

利用しているモデルを紹介
システムテスト自動化カンファレンス2013

2013/12/01
+

23

(参考)UML Testing Profile
 入手先
 http://www.omg.org/spec/

 以下の4要素の構造を規定
 Test Architecture
 Test

Behavior
 Test Data
 Test Management

出典:UML Testing Profile (UTP), v1.2
システムテスト自動化カンファレンス2013

2013/12/01
+ (参考)Testing and Test Control Notation version 3

24

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

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

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

2013/12/01
+

25

3.2.1 状態遷移列によるテストシナリオ
 1つ以上の状態遷移の列をテストシナリオとして

表現するモデル
例
 連続する2遷移のパターンによるテストシナリオ
経路番
号

状態

遷移

状態

遷移

状態

0

商品選択不可

貨幣投入

商品選択可能

商品選択

商品搬出中

1

商品選択可能

商品選択

商品搬出中

搬出完了 [懸賞購入]

商品選択不可

2

商品選択可能

商品選択

商品搬出中

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

懸賞中

3

商品搬出中

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

懸賞中

懸賞終了 [落選]

商品選択不可

4

商品搬出中

搬出完了 [懸賞購入]

商品選択不可

貨幣投入

商品選択可能

5

商品搬出中

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

懸賞中

懸賞終了 [当選]

懸賞当選

6

懸賞中

懸賞終了 [落選]

商品選択不可

貨幣投入

商品選択可能

7

懸賞中

懸賞終了 [当選]

懸賞当選

商品選択

商品搬出中

8

懸賞当選

商品選択

商品搬出中

搬出完了 [懸賞購入]

商品選択不可

9

懸賞当選

商品選択

商品搬出中

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

懸賞中

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

2013/12/01
+ 3.2.2 論理パターンによるテストシナリオ

26

 デシジョンテーブルのルールをテストシナリオと

して表現するモデル
例

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

2013/12/01
+

27

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

として表現するモデル
例

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

2013/12/01
+

28

3.3 モデルベースドテストの注意点
 一般的に従来よりもテストパターンが多く出る
 網羅型の技法にもとづくものが多いため


次章で解説

 適用後の過不足調整が必要

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

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

2013/12/01
+

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

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

2013/12/01
+ 4.1 モデルベースドテストの適用プロセス

30

要件定義
設計

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

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

テスト
詳細設計

モデルの変換方針
の決定

モデルの修正

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

テストモデルの生成
テスト
実装

テストモデルの修正
テストモデルの詳細化

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

過不足への対応

2013/12/01
+

31

4.2 例で活用するテスト設計技法
 利用するモデル/テストモデルに応じて活用する

テスト設計技法は異なる
モデル

テストモデル

テスト設計技法

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

状態遷移テスト

論理モデル

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

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

組合せモデル

組合せパターンによる All-pair法
テスト条件

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

2013/12/01
+

32

4.3 状態遷移テストの適用例(1/2)
 モデルの変換方針
 1スイッチカバレッジを100%にする


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

A

B

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

1.
2.
3.
4.

A -> B
B -> C
C -> C
C -> B

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

C

1.
2.
3.
4.
5.
6.

A -> B -> C
B -> C -> C
B -> C -> B
C -> C -> C
C -> C -> B
C -> B -> C

2013/12/01
+

33

4.3 状態遷移テストの適用例(2/2)
 astah*品質スイートの活用
 モデリングツールastah*

professionalの状態遷移テスト

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

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

2013/12/01
+ 4.4 デシジョンテーブルテストの適用例(1/2)

34

 モデルの変換方針

割愛
システムテスト自動化カンファレンス2013

2013/12/01
+ 4.4 デシジョンテーブルテストの適用例(2/2)

35

 CEGTestの活用
 原因結果グラフの記述/デシジョンテーブルへの変換が

可能なWebアプリケーション


資材をダウンロードしてローカルでも利用可能

 無償で利用可能

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

2013/12/01
+

36

4.5 組合せテストの適用例(1/2)
 モデルの変換方針
 2因子間の組合せ網羅率を100%にする


因
子

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

水準

1

a, b, c

2

27通り
-> 9通り

α, β, γ

3

1 a

a

a

b

b

b

c

c

c

2 α

β

γ

α

β

γ

α

β

γ

3 A

B

C

C

A

B

B

C

A

A, B, C

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

2013/12/01
+

37

4.5 組合せテストの適用例(2/2)
 PICTMasterの活用
 Excelマクロとして動作するAll-pair法にもとづいた組合

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

Windowsのみで動作

 PICT/PICTMasterともに無償

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

2013/12/01
+

38

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

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

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

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

2013/12/01
+

5. 導入のポイント

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

2013/12/01
+

40

5.1 理想と現実
現実

理想

モデルの記述

要件定義
設計

要件定義
設計

モデルの種類の決定

書いてくれ
ない…orz
モデル/テストモデルの
種類の決定

モデルの変換方針
の決定

モデルの変換方針
の決定

モデルの修正

テスト
詳細設計

テスト
詳細設計

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

モデルの記述
テストモデルの生成

テストモデルの修正

テストモデルの修正

テストモデルの詳細化

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

テスト
実装

テスト
実装

テストモデルの生成

テストモデルの詳細化

2013/12/01
+

41

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

 自動化によるメリット
 テスト詳細設計のミス防止
 テスト詳細設計の工数削減
とはいえモデル記述の
増加分もある

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

2013/12/01
+

42

5.3 必要なスキル
 モデルベースドテストのスコープ
 モデル化する意味のある箇所


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

見極めにはモデリングスキルが必要
 学習方法
 UMLの書籍
 自身の業務の中での実践

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

2013/12/01
+

まとめ

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

2013/12/01
+

44

モデルベースドテスト(1/2)
 モデルから抽象化されたテストを(自動)生成
モデル

生
成

抽象化された
テスト

詳細化・開発
ここのやり方を
定義して自動化

詳細化・開発

実システム

実
行
実行可能な
テスト

 テスト詳細設計の自動化が実現可能
システムテスト自動化カンファレンス2013

2013/12/01
+

45

モデルベースドテスト(2/2)
 何がうれしいの?
 テスト対象の理解が深まる
 テスト詳細設計のミス防止/工数削減につながる


かもしれない

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

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

 難しいんでしょ?
 ツールはけっこうお手軽です
システムテスト自動化カンファレンス2013

2013/12/01
+

46

モデルベースドテストの今後
 現状の課題解決
 モデリング手法の使いどころの整理
 自動化ツールの適用可能範囲(サポートするモデリング

手法)の拡大

 キーワード駆動テストとの融合
抽象化された
テスト

詳細化・開発

実行可能な
テスト

ここの部分をKDTの仕組みが
カバーしてくれる、かも?
システムテスト自動化カンファレンス2013

2013/12/01
+

47

(参考)キーワード駆動テスト
 決められた「キーワード」を用いてスプレッド

シート感覚でテストシナリオを記述

出典:ITPro 実践!テスト自動化の勘所 キーワード駆動テストによるGUIテストの効率化
システムテスト自動化カンファレンス2013

2013/12/01
+

まずはモデリングから!

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