Comments
Description
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日