...

モデルベースドテストの技術動向と研究事例

by user

on
Category: Documents
11

views

Report

Comments

Transcript

モデルベースドテストの技術動向と研究事例
モデルベースドテストの
技術動向と研究事例
小川 秀人 (株式会社 日立製作所)
Andreas Hoffmann (Fraunhofer FOKUS)
Ina Schieferdecker (Fraunhofer FOKUS)
ソフトウェアテストシンポジウム 2007 東京
2007年1月30日
謝辞
„ 本講演でご紹介するモデルベースドテスト研究事例は、Fraunhofer FOKUSと
(株)日立製作所の共同研究によるものです。
„ 本講演資料の一部は、Fraunhofer FOKUSによる下記講演資料の和訳です。
„ 講演資料の転載をご快諾いただいたFraunhofer FOKUSの皆様に感謝いたします。
‹ “Model Transformers for Test Generation from System Models”
¾ Presenter: A. Hoffmann
¾ Authors: M. Busch, R. Chaparadza, Z. R. Dai, A. Hoffmann, L. Lacmene, T. Ngwangwen,
G. C. Ndem, H. Ogawa, D. Serbanescu, I. Schieferdecker, J. Zander-Nowicka
¾ Presented at CONQUEST 2006.
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
目次
1. モデルベースドテストとは何か
2. テストのモデリング
3. システムモデルからのテストの生成
4. 研究事例紹介
5. まとめ
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
1-1
モデルベースドテストとは何か
„ Model-based testing is
‹ Software testing in which test cases are derived in whole or in part
from a model that describes some (usually functional) aspects of
system under test (SUT) [Wikipedia]
„ モデルベースドテストとは、
‹ テスト対象システム(SUT)の性質を記述したモデルから
‹ 全部または一部のテストケースが生成される
‹ ソフトウェアテスト
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
1-2
モデルベースドテストの構成要素
部分的な記述
システム
モデル
生成される
実行できる
抽象的なテスト
実行可能なテスト
抽象化
[Wikipedia]より和訳
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
1-3
モデルベースドテストの技術要素
モデルベースド開発
システムの
モデル
モデル化
テストの実装
システム
テストの実行
テストの
モデル化
抽象的なテスト
システム情報
テストの
生成
テスト要求
システム開発
実行可能なテスト
①テストのモデル化
②システムモデルから
のテスト生成・実装
モデルベースドテスト
[Wikipedia]に加筆
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
目次
1. モデルベースドテストとは何か
2. テストのモデリング
3. システムモデルからのテストの生成
4. 研究事例紹介
5. まとめ
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
テストのモデリング
2-1
„ テストを(抽象的に)表現
‹ テストデータ
¾ テストデータを抽象的に表現しよう
‹ テストの振る舞い
¾ テスト動作を表現しよう
‹ テストの結果の評価
¾ 成功か失敗かの判断を表現しよう
‹ テストの構造
¾ テストを構造化しよう
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
テストモデリング言語の例
2-2
„ TTCN-3
‹ “Testing and Test Control Notation Version 3”
‹ ETSI, ITU-T
‹ http://www.ttcn-3.org/
‹ 2001.6 ver.1.1.2 → 2005.6 ver.3.1.1
„ U2TP
‹ “UML 2.0 Testing Profile”
‹ Object Management Group
‹ http://www.omg.org/technology/documents/formal/test_profile.htm
‹ 2005.7 formal
„ xUnit ?
„ テストツールの専用言語?
„ 汎用言語によるテスト記述?
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
TTCN
-3の概要
TTCN-3の概要
2-3
„ “Testing and Test Control Notation Version 3”
„ ETSI Technical Committee MTS (Methods for Testing and Specification)
により開発、継続的にメンテナンス
„ 15年以上*にわたり、標準化や産業界での利用実績
‹ ETSIにおける 適合テストの実装
¾ Session Initiation Protocol (SIP) for Voice over IP (VoIP),
IPv6 (Core, Mobility, Security), Digital Mobile Radio (DMR) ,
WiMax (HyperLan), 3GPP IP Multimedia Subsystem (IMS)
など
‹ 産業界での利用
¾ 通信、自動車、鉄道、金融など様々な分野で利用
¾ 特に、欧州の通信機器メーカでの利用事例が多く発表されている
— TTCN-3 Users Conferenceなど
‹ テストの種類
¾ ソフトウェアモジュールテスト
¾ レイヤ/モジュールテスト
¾ 統合テスト
¾ 分散システムのテスト
* TTCN-1 からの実績を含む
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
TTCN
-3の主な特徴
TTCN-3の主な特徴
2-4
„ コア言語と多様な表現形式
„ テストケース
‹ システムを評価する動作の記述
„ テンプレートとマッチング
‹ テストデータの記述と、値のパターンマッチング
„ バーディクト
‹ テスト結果のハンドリング
„ モジュール化
„ テスト・コンフィグレーション
‹ SUTとのインタフェース定義
‹ テストコンポーネントの動的生成
‹ 並行、分散テストの記述
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
2-5
TTCN
-3の言語
TTCN-3の言語
ASN.1
Types & Values
Tabular Format
Other
Types & Values 2
TTCN-3
Core
Language
Other
Types & Values n
Graphical
Format
Presentation
Format m
n
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
TTCN
-3のテストデータ
TTCN-3のテストデータ
2-6
„ ユーザ定義型
type record MyRecordType {
integer field1 optional,
charstring field2,
boolean field3
}
„ テンプレート
‹ 値に名前をつけて取り扱う
‹ テストデータの抽象化・再利用
template
field1
field2
field3
}
MyRecordType test_data1 := {
:= ?,
:= pattern “JaSST in * 20*",
:= true
„ マッチング
‹ テスト結果の判定のためにテストデータを評価
‹ ワイルドカード(*, ?)
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
TTCN
-3のバーディクト
TTCN-3のバーディクト
2-7
„ バーディクト: テスト結果をハンドリングする仕組み
‹ none < pass < inconc < fail < error
„ 各テストコンポーネントがローカル・バーディクトを持つ
‹ コンポーネントが読み書き
„ 各テストケースは、グローバル・バーディクトを持つ
グローバル
バーディクト
ローカル
バーディクト1
F
F
テストコンポーネント1
ローカル
バーディクト2
P
テストコンポーネント2
…
ローカル
バーディクトn
I
テストコンポーネントn
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
2-8
TTCN
-3のテストケース
TTCN-3のテストケース
SUT
ポート
Port1.Send(Stimulus)
port1.send(Stimulus_Template);
alt {
[ ] port2.receive(operationComplete_Type:
{response, true, ?})
{ setverdict(pass); }
[ ] port2.receive(operationComplete_Type:?)
-> value erroneous
{ setverdict(fail); }
[ ] ...
}
Port2.Recieve(Response)
レスポンスの評価
バーディクトのセット
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
2-9
TTCN
-3のモジュール化
TTCN-3のモジュール化
SUT
ポート
生成
メイン・テスト・
コンポーネント
コンフィグレーション
生成
テスト・
コンポーネント
テストケース記述
テスト・
テスト・
コンポーネント
テスト・
コンポーネント
コンポーネント
テストケース記述
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
TTCN
-3のテストシステム
TTCN-3のテストシステム
2 - 10
Test System Executor
TTCN-3 Test System
Test Control
Logging
Codecs
TCI
TTCN-3 Executable
TRI
SUT Adapter
Platform Adapter
System Under Test (SUT)
TCI = TTCN-3 Control Interface
TRI = TTCN-3 Runtime Interface
[http://www.ttcn-3.org/Testsystems.htm]
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
U2TP
の概要
U2TPの概要
2 - 11
„ “UML 2.0 Testing Profile”
„ UML 2.0 にテストコンセプトを導入
„ U2TPの構成要素
‹ テスト・アーキテクチャ
¾ テストコンポーネント、テストコンフィグレーション、テストコントロールなど
‹ テスト・ビヘイビア
¾ デフォルト、テストケース、バーディクト、テストログなど
‹ テスト・データ
¾ ワイルドカード、データプール、データパーティションなど
‹ テスト・タイム
¾ タイマ、タイムゾーンなど
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
2 - 12
システムの例:銀行
ATM
システムの例:銀行ATM
[U2TP]
SUT
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
ト
U2TP
の例:
ATMテストパッケージ
ス
U2TPの例:ATMテストパッケージ
テ
2 - 13
に
T
SU
バ
ー
テ
テ
ス
トケ
デ
ス
ー
対
す
ト
ク
ィ
トデ
ー
る
テ
ス
ン
コ
ト
テ
ス
キ
ト
模
擬
コン
ネ
ー
ポ
ト
ン
[U2TP]に加筆
タ
T
U
S
ス
模
擬
コン
ネ
ー
ポ
ト
ン
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
2 - 14
U2TP
の例:テストコンテキスト
U2TPの例:テストコンテキスト
テ
ス
ス
シ
ト
テ
ム
構
成
テ
ス
ト動
作
[U2TP]
テ
ス
テ
ー
ケ
ト
ス
ス
ー
ケ
ト
ス
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
U2TP
の例:テストケース
U2TPの例:テストケース
ス
ー
2 - 15
テ
ス
トケ
[U2TP]
T
U
S
マ
イ
タ
メ
結
ン
ジ
ー
セ
ッ
グ
果
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
目次
1. モデルベースドテストとは何か
2. テストのモデリング
3. システムモデルからのテストの生成
4. 研究事例紹介
5. まとめ
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
3-1
システムモデルからのテスト生成
„ 生成するもの
‹ テストの内容
¾ テスト動作
¾ テスト入力と期待出力
¾ 結果出力の評価
¾ テスト結果の評価
‹ テストシステムの構造
¾ テストシステムとSUTとの間のインタフェース
¾ テストシステムの実行方法
¾ テストシステム内の構造
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
テストケースの生成
3-2
„ システムのモデル → テストケース
‹ 広い意味では、従来のテスト技法も該当する
„ 従来テスト技法の例:テストデータの生成
‹ 同値クラス → 限界値・境界値
クラス
値域
立見あり
101 ≦ N ≦ 130
着席
1 ≦ N ≦ 100
聴衆なし
N=0
テストデータ
-1, 0, 1, 100, 101, 130, 131…
„ 従来テスト技法の例:テストデータの組合せの生成
‹ 因子、水準 → 直行表、All-Pair
聴衆
気温
笑い
立見あり
高
あり
着席
適正
なし
聴衆なし
低
#
聴衆
気温
笑い
結果
1
立見あり
高
あり
盛況
2
着席
高
なし
睡眠
3
聴衆なし
適正
なし
悲哀
…
…
… …
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
テストケースの生成 ((続き)
続き)
3-3
„ 従来テスト技法の例:原因結果グラフ → 決定表
1日券
2日券
銀行振込
カード払い
確認メール送付
OR
OR
AND
AND
請求書印刷
カード決済
#
1
2
3
…
券種
1日券
1日券
2日券
…
支払い方法
振込
カード
振込
…
メール送付
○
○
○
…
請求書印刷
○
×
○
…
カード決済
×
○
×
…
„ 従来テスト技法の例:状態遷移モデル → パステスト
„ モデルベースドテストは、これらの歴史を踏まえながら、
より統合的、形式的、標準的に
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
3-4
テストケース生成の手法
„ 有限状態機械(FSM)、状態遷移システム
„ シナリオベーステストケース生成
„ 定理証明を用いたテストケース生成
„ 制約論理を用いたテストケース生成
„ モデルチェッキングを用いたテストケース生成
„ シンボル実行を用いたテストケース生成
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
3-5
テストシステムの構造の生成
システムモデル
SUT
SUTとの
コミュニケーション
テストケース
テストケース
テストケース
データ入出力
・変換
テスト実行の
制御
テストケースの
解釈実行
ユーザ
インタフェース
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
3-6
モデルベースドテストの研究例
„ IRISA, VERIMAG: TGV (Test Generation with Verification)
‹ IOLTS (Input/Output Labeled Transitions Systems)
„ IBM: AGEDIS (Automated Generation and Execution of Test Suites in Distributed
Component-based Software)
‹ AGEDIS Modeling Language
(UMLベース;オブジェクトダイアグラム, ステートダイアグラム,IFアクション言語)
„ Microsoft: AsmL Test Tool, Spec Explorer
‹ AsmL: Abstract State Machine Language
„ Telelogic: Tau
‹ SDL: System Description Language
„ Conformiq: Conformiq Qtronic
‹ UML ステートダイアグラム
„ ISPRAS: UniTesK
‹ 専用仕様記述言語
„ Reactive Systems: Reactis
‹ Matlab/Simulink, Stateflow
等々
さらに興味のある方は[Wikipedia] [MBTHP]等を参照
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
目次
1. モデルベースドテストとは何か
2. テストのモデリング
3. システムモデルからのテストの生成
4. 研究事例紹介
5. まとめ
(注)
本章のスライドは,[CONQUEST2006]の日本語訳に
一部のスライドを追加したものです.
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
4-1
モデルベースドテスト研究事例の紹介
„ OMG MDA(Model Driven Architecture)の概念をテストに拡張
„ システムモデル
‹ PIM (Platform Independent Model): UML2.0
‹ PSM (Platform Specific Model)
: EJB
‹ 実行コード
: Java/EJB, Java/WSDL
„ テストモデル
‹ PIT (Platform Independent Test): UML2.0 Testing Profile
‹ PST (Platform Specific Test)
: TTCN-3
‹ テストコード
: Java
„ モデル変換
‹ OMG MOF (Meta-Object Facility)
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
4-2
目的と背景
[CONQUEST2006]
„ 目的:システムとテストの早期の統合
‹ 設計ミスや実装間違いをシステム開発の早期に摘出
‹ 開発時間とコストを短縮
„ Model-Driven Architecture (MDA)
‹ プラットフォーム非依存モデルからプラットフォーム依存モデルへ
のリファインメント
‹ メタモデルに基づいたモデル変換器によるモデル変換
‹ しかし、テストに関しては言及なし => MDAを拡張
„ MDAへのテストの統合
‹ MDA, MOF, UML 2.0
‹ UML 2.0 の記法を、システムとテストの両方のプラットフォーム
非依存モデルに利用
‹ EJBとWSDLシステム向けのテスト実行
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
Model
-Driven Architecture [MDA]
Model-Driven
M
PIM to PS er
Transform 1
PIM
PSM1
Platform1
…
PSMn
Platformn
[CONQUEST2006]
System
Code
Platform1
…
PIM to
Transf PSM
ormer
n
PSM to Code
Transformer1
…
…
システム開発
4-3
PSM to Code
Transformern
System
Code
Platformn
„ プラットフォーム非依存モデル (PIM; Platform Independent Model)
‹ ターゲットプラットフォームの詳細に依存せず、システム機能を記述
‹ 1つのPIMから多くのターゲット向けの実装を生成
‹ インタラクティブなリファインメントを行う
„ プラットフォーム依存モデル(PSM; Platform Specific Model)への変換
‹ ターゲットプラットフォームごとの変換器
‹ 半自動/自動的な変換
„ 実行コードの生成
‹ 変換の完全性は、モデルと変換器の完全性に依存
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
MDA
ベースのテストモデリング
MDAベースのテストモデリング
4-4
[CONQUEST2006]
„ テストにシステムモデリングと同様の抽象化
‹ プラットフォーム非依存テスト (PIT; Platform Independent Test)
‹ プラットフォーム依存テスト (PST; Platform Specific Test)
„ 1つのPITから複数のPSTへ変換
„ PSTからテストコードの生成
Platform1
…
PSTn
Platformn
Test
Code
Platform1
…
PIT to
Transf PST
ormer
n
PST1
PST to Test Code
Transformer1
…
PIT
…
テスト開発
PIT to PST er
Transform 1
PSM to Test Code
Transformern
Test
Code
Platformn
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
4-5
変換器によるテスト生成の意味
[CONQUEST2006]
„ なぜシステムモデルからテストを生成するのか?
‹ システムモデルの持つシステム情報をテストモデルに再利用
„ ブラックボックステストにとってのシステム情報の有効性
‹ システム構造、コンフィギュレーション
‹ システムのコンポーネントポートで、システムの振る舞いを観察可能
‹ 型システム
‹ データの具体値
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
変換器によるテストの生成
PIM
PSM1
Platform1
PSMn
Platformn
[CONQUEST2006]
System
Code
Platform1
PSM to Code
Transformern
Platformn
…
PIM to PIT
Transformer
Platform1
…
PSTn
Platformn
Test
Execution
against
SUT
Test
Code
Platform1
…
PIT to
Transf PST
ormer
n
PST1
PST to Test Code
Transformer1
…
…
PIT
System
Code
…
…
PIM to
Transf PSM
ormer
n
PIT to PST er
Transform 1
テスト開発
PSM to Code
Transformer1
…
テスト生成
M
PIM to PS er
m
r
1
Transfo
…
システム開発
4-6
PSM to Test Code
Transformern
Test
Code
Platformn
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
変換器によるテストの生成
Platform1
…
PSMn
PIM to
Transf PSM
ormer
n
Platformn
PST1
System
Code
Platform1
PSM to Code
Transformern
Platformn
PSM to PST
Transformern
PST to Test Code
Transformer1
…
Platform1
PSTn
Platformn
Test
Execution
against
SUT
Test
Code
Platform1
…
…
System
Code
…
PSM to PST
Transformer1
[CONQUEST2006]
…
テスト生成
PSM1
…
PIM
PSM to Code
Transformer1
…
テスト開発
M
PIM to PS er
m
r
1
Transfo
…
システム開発
4-7
PSM to Test Code
Transformern
Test
Code
Platformn
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
4-8
コード自動生成におけるテストの意味は?
[CONQUEST2006]
„ テストは必要なのか
‹ システムコードはシステムモデルから自動的に生成されるのに?
‹ テストコードがシステムと同じモデルから生成されるのに?
‹ システムコードとテストコードがPIMやSIMの持つ同じ情報をベースに
しているのに?
„ しかし、システムのテストは必要:
‹ システムモデルは完全でない(詳細が省略されている)
‹ 変換器が検証されていない、正しくない
‹ 変換器が完全でない
‹ コードレベルでの変更
‹ ターゲット環境で実行することで機能が追加され、リソースを共有する
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
プラットフォーム非依存モデル
4-9
[CONQUEST2006]
„ UML2.0によるシステムとテストの非依存モデル:
‹ PIM ← eUML (essential UML)
‹ PIT ← eTML (essential Test Modeling Language)
„ eUML
‹ UML 2.0 の部分集合
¾ UML 2.0 全体では範囲が広い
¾ UML 2.0 の持つパッケージ・マージ機構の実装が難しい
‹ UNL 2.0 の持つ13種類の図のうち、主要な5図を利用
„ eTML
‹ eUMLを拡張し、テストモデルを導入
‹ OMG標準のUML 2.0 Testing Profileの部分集合
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
4 - 11
プラットフォーム依存モデル
[CONQUEST2006]
„ PSTとしてTTCN-3を利用
‹ テスト仕様記述・実装のための言語
‹ 広く利用されている
‹ ETSIにより標準化・メンテナンス
‹ 多くのベンダから強力なツールが提供されている
‹ 様々なターゲットシステム、OS、実装言語向けの実行可能テスト
の自動生成がサポートされている
„ TTCN-3 は、UMLによるプラットフォーム非依存モデル
からの生成開発アプローチに有用である
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
ツール・チェイン
4 - 12
UML2
EJB
eUML
c d P izza Shop Be ha v iour
C :Cus tom e r
[CONQUEST2006]
Java/
EJB
Java/
WSDL
System
Code
System
Code
PS :P izza Se rv ic e
D :De liv e re r
Ac c e ptCa ll
ge tM e nu
Acti vi tyIn i ti a l
c re a te M e nuDa ta
n o ti fyO n Pe n d i n g Ord e r
ge tM e nu
(::)
Me n u
M enu
M enu
Re ply
ge tM e nu
Me n u Ite m
show M e nu
Ac c e ptCa ll
s e le c tMe nuIte m
M e n u Ite m
M e n uIte m
m a ke S el e cti o n
M a na ge Ba s k e t
[tru e ]
Me n u Ite m
[fa l se ]
se le c tM e nuIte m
(::)
Re ply
s e le c tM e nuIte m
L o ca l Co n ta ctDa ta
Lo ca l Co n ta ctDa ta
c onfirm Or de r
(::)
Ac c e ptCa ll
c onfirm O rde r
cu sto m e rId
L o ca lC o n tactDa ta
cu sto m e rId
ge tCus tom e rO rde rs
(::)
PSM
L o ca l Co n ta ctDa ta
c re a te O rde r
Ord e rs
i te msT o De l i ve r
custo m erId
l o ca l Co n ta ctDa ta
to ta l Pri ce
s how Cus tom er Or der s
i te m sT oD e l i ve r
l o ca l Co n ta ctDa ta
to tal P ri ce
n o ti fyO n Pe n d i n gO rd e r
A cti vi tyFi n a l
cu sto m e rId
Re ply
c onfirm O rde r
EJB
Medini Rep.
PIM
UML-based
PIM to PIT
Transformer
Medini MTG
Joint
Editor
eUML support
eTML support
rep. sync.
Joint
Rep.
eUML/eTML
Medini Rep.
eTML
C E :C us tom e r E m u la to r
o v e r a l lD e fa u lt :Cu s tom e r E m ul a tor
A ct i vit yI n i t ia l
« S t a rt T i m e rA cti o n »
A c ti v i ty In it i a l
g e n e r a l Ti m e r
(: :)
Test
Execution
against SUT
TTwb
Java
TTCN-3
UML2
a d C us to m e r O r de r
TTCN-3
Editor
PIT to PST Transformer
TTCN-3
Compiler
Medini MTG
TTwb
Test
Code
ge tM e nu
(:: )
M e nu
« L i te ra lA n y O rN u l l»
*
« S t a rt T i m e rA cti o n »
ti m e r 1 (2 . 0 )
(: :)
« T i m e O u t A ct io n »
g e n e ra lT i m e r
« T i m e O u tA ct io n »
t i m e r1
« T i m e O u tA ct io n »
t i m e r2
s ho w M e n u
r e tu rn
i nc o nc
r e tu r n fa il
r e tu r n fa il
r e tu rn fa il
« S t o p T i m e rA ct io n »
ti m e r 1
(: :)
A c ti v i ty Fi n a l
A ct i vi tyF in a l
m a ke S e le ct io n
M e n u I te m
[ t ru e ]
s e l e c tM e nuI te m
(:: )
[ f a l se ]
« De fa u l tA p p li ca ti o n »
L o ca lC o n ta ct Da ta
c on fi r m O r de r
(: : )
« S t a rt T i m e rA ct io n »
cu st o m e rId
tim e r 2 (2 . 0 )
(: : )
cu st o m e rId
ge tC us tom e r O r de r s
(: :)
O rd e rs
A ct i vi tyF i n a l
A c t i v it y F in a l
PST
s ho w Cu s tom e rO r d e r s
« S t o p T i m e rA ct io n »
ti m e r 2
(: : )
TTCN-3 Medini Rep.
« S t o p T i m e rA cti o n »
g e ne r a l Ti m e r
(: :)
r e tur n p a s s
A ct ivi t yFi n a l
PIT
Generic EJB
Test Adapter
WSDL
Test Adapter
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
例:ピザショップシステム
4 - 13
PizzaShop
T
SU
PS :PizzaService
C:Customer
cd PizzaShop Behav iour
C :Customer
PS :PizzaServ ice
D :Deliv erer
AcceptCall
providePS
getMenu
ActivityInitial
createMenuData
notifyOnPendingOrder
usePS
getMenu
(::)
Menu
Menu
Menu
Reply
getMenu
useDN
MenuItem
show Menu
AcceptCall
selectMenuItem
MenuItem
MenuItem
makeSelection
ManageBasket
[true]
MenuItem
D:Deliverer
[false]
selectMenuItem
(::)
Reply
selectMenuItem
LocalContactData
LocalContactData
confirmOrder
(::)
provideDN
AcceptCall
confirmOrder
customerId
LocalContactData
customerId
getCustomerOrders
(::)
LocalContactData
createOrder
Orders
itemsT oDeliver
customerId
localContactData
totalPrice
show CustomerOrders
itemsToDeliver
localContactData
totalPrice
notifyOnPendingOrder
ActivityFinal
customerId
Reply
confirmOrder
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
変換ルール
4 - 14
[CONQUEST2006]
„ eUML モデルから、eTMLモデルへの変換ルール
UML2
eUML
c d P izza Shop Be ha v iour
C :Cus tom e r
P S :Pizza S e rv ic e
D :De liv e re r
Ac c e ptCa ll
getM e nu
Acti vi tyIn i ti a l
c re a te M e nuD a ta
n o ti fyO n Pe n d i n g Ord e r
getM e nu
(::)
M enu
M enu
M enu
Re ply
ge tM e nu
„ 変換ルール1:
eUMLモデルの全要素を、eTMLモデルの初期状態に
M e n u Ite m
s how M e nu
Ac c e ptCa ll
s e le c tM e nuIte m
M en u Ite m
M e n u Ite m
m a ke S e l e cti o n
M a na ge B as k e t
[tru e ]
M e nu Ite m
[fa l se ]
s ele c tM e nuIte m
(::)
Re ply
s e le c tM e nuIte m
L o ca l C on ta ctDa ta
L o ca l C o nta ctDa ta
c onfirm O rde r
(::)
Ac c e ptCa ll
c onfir m Or de r
cu sto m e rId
Lo ca l Co n ta ctDa ta
cu sto m e rId
L o ca l Co n ta ctDa ta
ge tCus tom e rO rde rs
(::)
c r e a teO rde r
O rd e rs
i te m sT o De l i ve r
cu sto m e rId
l o ca l Co n ta ctDa ta
to ta l Pri ce
s how Cus tom e rO rde rs
i te m sT o De l i ve r
l o ca l Co n ta ctDa ta
to ta l Pri ce
n o ti fyOn Pe n d i n g O rd e r
A cti vi tyFi n a l
cu stom e rId
Re ply
c onfir m Orde r
PIM
„ 変換ルール2:
システムモデルと並列してテストパッケージを生成
UML-based
PIM to PIT
Transformer
→“TestPackagesDiagram“
UML2
eTML
a d C us to m e r O r de r
C E :Cu s tom e r E m u la to r
ov e r a l l De fa ul t :Cu s tom e rE m u la to r
A ct iv i t y I n i ti a l
« S t a rt T i m e rA cti o n »
A c t iv i t y I n i ti a l
g e ne r a l Ti m e r
(: :)
ge tM e n u
(:: )
M e nu
« L it e ra l A n yO rNu ll »
*
« S t a rtT i m e rA c ti o n »
ti m e r 1 (2 .0 )
(: :)
« T i m e O u tA ct i o n »
g e n e ra l T i m e r
« T i m e O u tA ct i o n »
ti m e r1
« T i m e O u tA ct i o n »
t i m e r2
s ho w M e n u
r e tur n
i nc on c
r e tur n fa i l
re tu r n fa i l
r e tu r n fa il
« S t o p T i m e rA c ti o n »
tim e r 1
(: :)
A c t iv it y Fi n a l
A cti vi t yFi n a l
m a ke S e l e cti o n
A cti vi t yFi n a l
A ct i vi tyF i n a l
M e n u I te m
[ t ru e ]
s e l e c tM e n uI te m
(: : )
[ fa lse ]
« D e f a u lt A p p l i ca t io n »
L o ca l C o n t a c tD a t a
c onfi r m O r de r
(: : )
« S t a rt T i m e rA ct io n »
cu st o m e rI d
tim e r 2 (2 . 0 )
(: : )
cu st o m e rI d
g e tCu s tom e r O r d e r s
(:: )
O rd e rs
s ho w Cu s tom e r O r de r s
« S t o p T i m e rA cti o n »
tim e r 2
(: :)
« S t o p T i m e rA ct i o n »
g e ne r a l Tim e r
(:: )
r e tur n p a s s
A cti vi t yFi n a l
PIT
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
4 - 15
変換ルール:テストモデル構造の生成
[CONQUEST2006]
„ 変換ルール3:
‹ テストパッケージの内部にパッケージを作成 →
“UMLComponentLevelTests_package“.
‹ 各テスト可能なUMLクラスに対して、サブパッケージを作成
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
4 - 16
変換ルール:テストコンテキストの生成
[CONQUEST2006]
„ 変換ルール4:
‹ 各“UMLComponentLevelTests_package “クラスの内部に、
<<TestContext>>ステレオタイプのクラスを作成
→“UMLClassNameTestContextPackage“
(UMLClassName の部分は適切なクラス名が入る)
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
変換ルール:テストコンフィグレーション・
テストコンポーネントの生成
4 - 17
[CONQUEST2006]
„ 他の変換の概要:
‹ 変換ルール5:テストコンテキストに対するテストコンフィグレーションを生成
‹ 変換ルール6:テストコンフィグレーションとそれに関係するクラスをテストコ
ンテキストの対応するパッケージ内に配置
‹ 変換ルール7:SUTコンポーネントを生成
‹ 変換ルール8:テストコンポーネントを生成
‹ 変換ルール9:テストコンフィグレーションのクラスに<<TestComponent>>か
<<SUT>>ステレオタイプを割り当てる
‹ 変換ルール10:<<TestContext>>ステレオタイプクラスを生成
‹ 変換ルール11:“ClassNameEmulator_TestComp“クラスを生成
‹…
„ そのほか
‹ テストの振る舞いの生成
‹ eTML から TTCN-3 への変換
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
4 - 18
変換ルール:全体構成
[CONQUEST2006]
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
4 - 19
変換ルール:テストコンフィグレーション
[CONQUEST2006]
SUT
Test components
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
4 - 20
変換ルール:模擬コンポーネント
[CONQUEST2006]
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
テスト動作の生成のヒント
4 - 21
Customer Emulator
システムモデルのアクティビティ図
Customer
Deliverer
PizzaService
SUTの外部から見た
期待する振舞い
主要なポイントで
結果の評価を行うことで
テストケースとして作用
テスト
コンポーネント
SUT
テスト
コンポーネント
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
4 - 22
研究事例のまとめ
[CONQUEST2006]
„ MDAの文脈でのモデル・ベースド・テスト
‹ OMGのMDAをテスト・モデルに関して拡張
‹ システムとテストのプラットフォーム非依存モデルをUML2.0とすることで、テスト開
発とシステム開発を早期に容易に統合できる
„ テストのモデリングへのモデリング言語の利用:
‹ PITとして、UML2.0とU2TPをベースとしたeTML(essential Test Modelling
Language)を利用
‹ PSTとして、言語が柔軟でテスト実行ツールが提供されているTTCN-3を利用
„ サンプル開発への適用
‹ ツール・チェインを実現、テストモデルと実行可能なテストコードを自動的に生成
„ より多くのUMLダイアグラムを扱い、テストの振る舞いを洗練するため、
変換ルールの更なる改善が必要
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
目次
1. モデルベースドテストとは何か
2. テストのモデリング
3. システムモデルからのテストの生成
4. 研究事例紹介
5. まとめ
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
5-1
モデルベースドテストのまとめ
„ 期待してはいけないこと
‹ 完璧なテスト
¾ 「生成したテストを実施すれば完璧」
‹ 完全な自動化
¾ 「ボタン1つでテストが終了」
‹ 全能的な汎用性
¾ 「ツールを買えばどんなシステムもテストできる」
テストの特質:
¾ 完璧なテストというものはない
¾ どのようなテストをすべきか(テスト要求)は、人の持つ知恵
¾ システムごとに適切なシステムやテストのモデリング・実装は異なる
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
5-2
モデルベースドテストのまとめ(続き)
„ それでも、モデルベースドテストに取り組む意義はある
„ モデルベースドテスト
‹ テストのモデリング
‹ システムモデルからのテストモデルの生成
„ テストをモデリングして嬉しいこと
‹ テストの意味的側面を表現できる
‹ テストを再利用できる
‹ テストを実行できる
„ テストをシステムモデルから生成して嬉しいこと
‹ SUTに適合したテストシステムの構造ができる
‹ SUTの詳細を開発する前にテストができる
‹ SUTの基本的な機能を自動的に動作可能なテスト
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
5-3
おわりに
„ 『モデルベースドテストっていいかも』と思われた方へ
‹ 意図を汲み取っていただいて,ありがとうございます
‹ でも,飛びついても役に立たないかもしれません
¾ システムをモデル化するところから始めないといけませんよ
¾ どんなテストをしたいか決めないと,意味のあるテストはできませんよ
¾ 機械任せで済むと思ったら,痛い目に会いますよ
„ 『モデルベースドテストってダメかも』と思われた方へ
‹ 長時間お付き合いいただいたのに,説明がヘタでごめんなさい
‹ でも,部分的にでも役に立つことがあるかもしれません
¾ テストをモデリングするだけでも,テスト品質の向上に役に立ちますよ
¾ テストシステムを構成するだけでも,コストは削減しますよ
¾ 早期に基本的な動作テストができるだけでも,期間は短縮できますよ
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
おわりに
„ 本質的には,
‹ システムの仕様を適切に表現すること
‹ 行いたいテスト内容(方針・戦略・要件)を明らかにすること
‹ それらに従い,システム仕様に対して,体系的にテストを設計すること
‹ 設計したテストを実行できるよう,適切に実装すること
‹ テストを実行し,テスト結果を管理し,適切に処置すること
‹ 設計資産と同様に,テストを貴重な資産として取り扱うこと
„ テストの質を向上するため,何をすべきか議論していきましょう
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
参考文献
„ [CONQUEST2006] A. Hoffmann et.al., “Model Transformers for Test
Generation from System Models”, CONQUEST 2006
„ [TTCN-3] http://www.ttcn-3.org/
„ [U2TP] “UML Testing Profile, v 1.0” ,
http://www.omg.org/technology/documents/formal/test_profile.htm
„ [Wikipedia] Wikipedia,
http://en.wikipedia.org/wiki/Model-based_testing
„ [MBTHP] “Model-Based Testing Home Page”,
http://www.model-based-testing.org
JaSST '07 in Tokyo, 2007.1.30 Copyright (C) Hitachi Ltd. and Fraunhofer FOKUS, 2007
モデルベースドテストの
技術動向と研究事例
ご清聴ありがとうございました
ソフトウェアテストシンポジウム 2007 東京
2007年1月30日
Fly UP