BPEL単体テストのための

Data Dependency based
Test Case Generation for BPEL Unit Testing
大阪大学 大学院情報科学研究科
Choy Kho Yee
2008/03/18
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
概要
• 背景
– BPELによるサービスの記述とそのテスト方法
• 提案手法
– テストケースの作成
• テスト対象の入出力データの型情報と依存関係を利用して、一貫
性をもつテストデータを生成する
• テストデータを用いてテストケースを構築する
– テスト対象の実行履歴記録
• BPEL標準機能だけを用いてプラットフォーム独立な手法で実現
する
• 実験
– 提案手法を実装したシステムを実際に運用してもらい、評
価実験を行った
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2
2008/03/18
SOAとBPEL
• サービス指向アーキテクチャ(SOA)とは、
ネットワーク上の「サービス」をメッセージ通信
で呼び出すアーキテクチャ
– 一般的にXMLメッセージを利用
• ウェブサービスビジネスプロセス実行言語
(BPEL)とは、サービス合成のために設計さ
れたXMLベースの言語
– WSDL、XML Schema、XPathを利用
– BPELで書かれたプログラムはBPELプロセスと
いう
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
3
2008/03/18
BPELプロセスの例
パートナー
サービス
XMLデータ通信
<query>
<keyword>tropical island</keyword>
</query>
BPELプロセス
<request>
<search>tropical island</search>
</request>
<response>
<result>Hawaii</result>
<result>Bali</result>
</response>
オペレーション
クライアント
<response>
<result>…</result>
<result>…</result>
</response>
GeoInfo
<query>
<from>Japan</from>
<to>Hawaii</to>
</query>
Currency
Exchange
<query>
<from>Japan</from>
<to>Bali</to>
</query>
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
4
2008/03/18
BPELプロセスの単体テスト
パートナー
サービス
<query>
<keyword>tropical island</keyword>
</query>
BPELプロセス
<request>
<search>tropical island</search>
</request>
<response>
<result>Hawaii</result>
<result>Bali</result>
</response>
GeoInfo
クライアント
<response>
<result>…</result>
<result>…</result>
</response>
<query>
<from>Japan</from>
<to>Hawaii</to>
</query>
Currency
Exchange
<query>
<from>Japan</from>
<to>Bali</to>
</query>
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
5
2008/03/18
BPELプロセスの単体テスト
BPEL単体テストフレームワーク
BPELプロセス
代理クライアント
BPELUnit
• BPELプロセスの単体テストフレームワーク
代理パートナーサービス
• P. Mayer, D. Lübke, Towards a BPEL unit
testing framework. TAV-WEB’06,
July 17, 2006.
GeoInfo
Currency
Exchange
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
6
2008/03/18
BPELUnitのテストケース作成
テストパス
XML
依存
検証
XML
検証
XML
検証
検証
XML
依存関係を満たしたテストデータを
一貫性を持つテストデータという
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
7
2008/03/18
BPELUnit TestSuite Editor
送信データ入力
検証式の指定
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
8
2008/03/18
BPELUnitでのテスト結果表示
• 得られる情報
– 各テストケースに指定された検証式
の結果
– 送受信メッセージの内容
• 詳細な実行履歴の取得はBPEL
エンジンに依存
– テストカバレッジなどの算出が困難
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
9
2008/03/18
研究動機と目的
• 一貫性をもつテストデータを作成するのが困難
– サービスが送受信するXMLデータの構造が複雑
– 既存ツールは、テストデータの作成を支援していない
• テスト実行履歴の取得は支援されていない
• 提案および実装
– 一貫性をもつテストデータの生成を中心にしたテストケー
スの作成手法
– プラットフォーム独立なテスト実行履歴記録手法
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
10
2008/03/18
研究動機と目的
• 一貫性をもつテストデータを作成するのが困難
– サービスが送受信するXMLデータの構造が複雑
– 既存ツールは、テストデータの作成を支援していない
• テスト実行履歴の取得は支援されていない
• 提案および実装
– 一貫性をもつテストデータの生成を中心にしたテストケー
スの作成手法
– プラットフォーム独立なテスト実行履歴記録手法
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
11
2008/03/18
着目点
• BPELはサービスの合成を目的に設計された
ため、高度なデータ処理機能がない[1]
• BPELでは、データ処理にXPathを標準に採
用している
従って、BPELの入出力データ間での関係は
簡単なXPath式で記述できると考えられる
[1] F.Leymann, D.Roller, S.Thatte, Goals of the BPEL4WS Specification.
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
12
2008/03/18
XPath式
XML文書から情報を抽出するための式
• XML文書を木として扱い、経路で要素を特定
• 関数によって真偽値、ノード、ノードの集合を返す
XML文書
結果
XPath式
<response>
<result>Hawaii</result>
<result>Bali</result>
</response>
/response/result[1]/text()
"Hawaii"
count(/response/result)
2
/response/result
2つのresultノード
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
13
2008/03/18
提案手法
1. 開発者は、テスト対象のプロセスが呼び出すパートナー
サービスのオペレーション集合を指定する
2. 開発者は、これらのオペレーションの入出力間での依存関
係をXPath式を用いて指定する
3. システムは、データ間での依存関係に基づき必要なデータ
を生成する
–
–
–
–
独立入力 – XMLスキーマに従ってランダムに生成
依存入力 – XPath式に従って生成
依存出力 – XPath式に従って検証式を生成
独立出力 – 開発者が明示的に指定した値で検証式を生成
4. システムは、生成されたテストデータを用いてテストケース
を構築する
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
14
2008/03/18
データ依存の種類
/request/search = /query/keyword
代入
<request>
<search>tropical island</search>
</request>
多重度
<query>
<keyword>tropical island</keyword>
</query>
/response/resultの数
= count(/response/result)
<response>
<result>Hawaii</result>
<result>Bali</result>
</response>
<query>
<from>Japan</from>
<to>Hawaii</to>
</query>
GeoInfo
Currency
Exchange
<query>
<from>Japan</from>
<to>Bali</to>
</query>
<response>
<result>…</result>
<result>…</result>
</response>
第159回
オペレーションの呼出回数
= count(/response/result)
ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
15
2008/03/18
テストケース生成部のシステム構成
XMLデータの型情報
データ依存情報
• BPEL Data Dependency Editor
– Eclipseのプラグインとして実装
– 開発者にデータ依存を定義するGUIを提供
• BPEL Data Dependency Description
– データ依存を記述したXML文書
• Test Case Generator
– テストデータとテストケースを生成
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
16
2008/03/18
BPEL Data Dependency Editor
テストケース関連
オペレーション
集合の一覧
データ依存
記述・追加
XMLデータ
構造の表示
XPath式挿入
追加された
データ依存一覧
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
17
2008/03/18
BPEL Data Dependency Description
<bpelDataDependencies>
<name/>
<baseURL/>
<deployment/>
BPELUnitテストケースに必要な情報
<operationSets>
<operationSet>
<operations/>
<messages/>
<dependencies/>
</operationSet>
テストケースに関連するオペレーションの集合
送受信メッセージとそのID
データ依存の記述
</operationSets>
</bpelDataDependencies>
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
18
2008/03/18
データ依存の指定例
代入の例
依存元のメッセージID 依存先のメッセージIDの集合
依存種類
<dependency targetMsgId= "3" dependsOnMsgId="1" type="substitution">
<target>./request/search</target> ←依存元を指定するXPath式
<dependsOn>./container/query/keyword</dependsOn>
</dependency>
↑代入値を表すXPath式
多重度の例
依存種類
<dependency targetMsgId="2" dependsOnMsgId="3" type="multiplicity">
<target>./response/result</target>
<dependsOn>count(./container/response/result)</dependsOn>
</dependency>
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
19
2008/03/18
テストデータの生成
データ依存テーブルを利用して生成できるデータから順に
生成していく
(1回目呼出の)データ依存テーブル
ID
データ
依存先IDの集合
データ格納用テーブル
データ
1回目呼出用
2回目呼出用
1
BPEL IN
[]
(1) BPEL IN
XMLデータ
XMLデータ
2
BPEL OUT
[4]
(2) BPEL OUT
XMLデータ
XMLデータ
3
GeoInfo IN
[1]
(3) GeoInfo IN
XMLデータ
XMLデータ
4
GeoInfo OUT
[]
(4) GeoInfo OUT
XMLデータ
XMLデータ
5
Currency IN
[4]
(5) Currency IN
XMLデータ
XMLデータ
6
Currency OUT
[]
(6) Currency OUT
XMLデータ
XMLデータ
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
20
2008/03/18
テストケースの生成
データ格納用テーブル
データ
XML
XML
XML
検証
1回目呼出用
2回目呼出用
(1) BPEL IN
XMLデータ
XMLデータ
(2) BPEL OUT
XMLデータ
XMLデータ
(3) GeoInfo IN
XMLデータ
XMLデータ
(4) GeoInfo OUT
XMLデータ
XMLデータ
(5) Currency IN
XMLデータ
XMLデータ
(6) Currency OUT
XMLデータ
XMLデータ
生成されたテストデータを用いてテストケースを
作成していく
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
21
2008/03/18
研究動機と目的
• 一貫性をもつテストデータを作成するのが困難
– サービスが送受信するXMLデータの構造が複雑
– 既存ツールは、テストデータの作成を支援していない
• テスト実行履歴の取得は支援されていない
• 提案および実装
– 一貫性をもつテストデータの生成を中心にしたテストケー
スの作成手法
– プラットフォーム独立なテスト対象の実行履歴記録手法
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
22
2008/03/18
実行履歴記録
• BPELの標準な機能だけで実現する
– テスト対象の各アクティビティの前後に、実行履歴記録ウェブサービ
スを呼び出す記録用アクティビティを追加する
– 記録用アクティビティは、これから実行される、または実行されたアク
ティビティの名前を実行履歴記録ウェブサービスへ報告する
– 実行履歴記録ウェブサービスはログに記録し、各アクティビティの実
行回数、成功回数、失敗回数を算出する
記録
Logger
テスト対象
実行履歴記録
ウェブサービス
第159回 ソフトウェア工学研究発表会
拡張したテスト対象
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ログ
23
2008/03/18
アクティビティ実行結果の判定
B
A
C
実行された
ログ
実行回数
成功回数
失敗回数
A entered.
A left.
B entered.
1
1
0
1
0
1
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
0
0
0
24
2008/03/18
実行履歴記録部のシステム構成
•
BPEL Process Augmenter
– テスト対象に記録用アクティビティを追加する
•
Logger Web Service
– 実行履歴を記録し、実行回数などの値を計算する
•
BPELUnit Runner Editor
– Eclipseプラグイン
– BPEL Process Augmenterの呼出、テストケースの実行、実行履歴の表示
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
25
2008/03/18
実行履歴情報の表示
実行されたアクティビティの
実行回数、成功回数、失敗回数
このテストケースで
実行されなかったアクティビティ
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
26
2008/03/18
適用実験の概要(1/2)
• 対象:BPEL初心者の大学院生(M1)4名
• 利用ツール
– BPELUnit TestSuite Editor(従来ツール)
– BPEL Data Dependency Editor(提案ツール)
• 手順
– 背景知識やツールの使い方について説明を受ける
– 2つのBPELプロセスの仕様とテスト仕様について理解する
– 決められた順番で2つのBPELプロセスのためのテストケースを異な
るツールで作成する
• 評価点
– テストケースの性質
– 一般的な間違い
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
27
2008/03/18
適用実験の概要(2/2)
• テスト対象プロセス
– プロセスA: Loan Approvalプロセス[1]
– プロセスB: Meta Searchプロセス[2]
[1] OASIS WSBPEL Technical Committee, Web Services Business Process Execution Language Version 2.0, April 2007.
[2] P. Mayer, Design and Implementation of a Framework for Testing BPEL Compositions, September, 2006.
• 作業の順番
– 4つのタスクを用意した
– 被験者にランダムに
割り当てた
タスク
テスト対象
ツール
1
A
従来
B
提案
B
従来
A
提案
A
提案
B
従来
B
提案
A
従来
2
3
4
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
28
2008/03/18
実験結果:性質
ツール別で作成された検証式の数
検証式の数の比較では、提案手法で作成した
方が多い
⇒ XMLデータ構造の表示が有効
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
29
2008/03/18
実験結果:間違いの種類
BPELUnit TestSuite Editor
BPEL Data Dependency Editor
XML namespace関連
• wsdl:p:element
• 必要なnamespaceの入れ忘れ
• 不必要なnamespaceの記述
• 無し
XPath関連
• 途中要素の書き忘れ
e.g. /a/b/c → /a/c
• スペルミス
• 構文上の間違い
データ関連
• サービスAがサービスBのデータを送信 • 必要なデータ依存の欠如
• スペルミス
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
30
2008/03/18
まとめと今後の課題
• まとめ
– BPELプロセスの単体テストを支援するために、テスト
ケースを作成する手法およびプラットフォーム独立なテス
ト実行履歴記録手法を提案及び実装した
– テストケース作成手法に対する評価実験では、送受信
データの間違いが従来ツールより減少
• 今後の課題
– 手法とユーザインターフェイスの改良
– テスト実行履歴表示の改良
– BPEL開発者での評価実験
第159回 ソフトウェア工学研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
31
2008/03/18