
モデルベース テストは、ソフトウェア テストまたはシステム テストを実行するための成果物を設計し、必要に応じて実行するためのモデルベース設計のアプリケーションです。モデルは、テスト対象システム(SUT)の望ましい動作を表現したり、テスト戦略とテスト環境を表現したりするために使用できます。右の図は前者のアプローチを示しています。
SUT を記述するモデルは、通常、SUT の望ましい動作の抽象的で部分的な表現です。このようなモデルから派生したテスト ケースは、モデルと同じ抽象化レベルの機能テストです。これらのテスト ケースは、まとめて抽象テスト スイートと呼ばれます。抽象テスト スイートは、そのスイートの抽象化レベルが間違っているため、SUT に対して直接実行することはできません。実行可能なテスト スイートは、対応する抽象テスト スイートから派生する必要があります。実行可能なテスト スイートは、テスト対象のシステムと直接通信できます。これは、抽象テスト ケースを実行に適した具体的なテスト ケースにマッピングすることで実現されます。モデルベースのテスト環境の中には、実行可能なテスト スイートを直接生成するのに十分な情報がモデルに含まれているものもあります。その他の環境では、抽象テスト スイートの要素をソフトウェア内の特定のステートメントまたはメソッド呼び出しにマッピングして、具体的なテスト スイートを作成する必要があります。これは、「マッピング問題」の解決と呼ばれます。[1] オンライン テストの場合 (以下を参照)、抽象テスト スイートは概念的にのみ存在し、明示的な成果物としては存在しません。
テストはさまざまな方法でモデルから派生できます。テストは通常、実験的であり、ヒューリスティックに基づいているため、テスト派生のベストな単一のアプローチは知られていません。テスト派生に関連するすべてのパラメータを、「テスト要件」、「テスト目的」、または「ユースケース」と呼ばれるパッケージに統合するのが一般的です。このパッケージには、モデルの重点を置くべき部分に関する情報や、テストを終了する条件 (テスト停止基準) を含めることができます。
テスト スイートはソース コードからではなくモデルから派生するため、モデル ベース テストは通常、ブラック ボックス テストの 1 つの形式と見なされます。
複雑なソフトウェア システムのモデルベース テストは、まだ発展途上の分野です。
モデル
特にモデル駆動エンジニアリングやオブジェクト管理グループ ( OMG )のモデル駆動アーキテクチャでは、モデルは対応するシステムの前またはそれと並行して構築されます。モデルは、完成したシステムから構築することもできます。テスト生成用の一般的なモデリング言語には、UML、SysML 、主流のプログラミング言語、有限マシン表記法、 Z、B ( Event-B )、Alloy、Coqなどの数学形式などがあります。
モデルベーステストの導入

モデルベーステストを展開する方法としては、オンラインテスト、実行可能テストのオフライン生成、手動で展開可能なテストのオフライン生成など、様々な方法が知られています。[2]
オンライン テストとは、モデルベースのテスト ツールが SUT に直接接続し、動的にテストすることを意味します。
実行可能なテストのオフライン生成とは、モデルベースのテスト ツールが、後で自動的に実行できるコンピューター読み取り可能なアセットとしてテスト ケースを生成することを意味します。たとえば、生成されたテスト ロジックを具体化するPythonクラスのコレクションなどです。
手動で展開可能なテストのオフライン生成とは、モデルベースのテスト ツールが、後で手動テストを支援できる人間が判読可能なアセットとしてテスト ケースを生成することを意味します。たとえば、生成されたテスト手順を人間の言語で記述した PDF ドキュメントなどです。
アルゴリズムによるテストの導出
モデルベースのテストが効果的である主な理由は、自動化の可能性を備えているからです。モデルが機械可読で形式的であり、動作の解釈が明確に定義されている場合、テスト ケースは原理的に機械的に導き出すことができます。
有限状態機械から
多くの場合、モデルは有限状態オートマトンまたは状態遷移システムに変換または解釈されます。このオートマトンでは、テスト対象システムの可能な構成が表現されます。テスト ケースを見つけるには、オートマトンで実行可能なパスを検索します。可能な実行パスは、テスト ケースとして使用できます。この方法は、モデルが決定論的であるか、決定論的モデルに変換できる場合に有効です。これらのモデルで指定されていない遷移を利用することで、貴重な非標準テスト ケースを取得できます。
テスト対象システムと対応するモデルの複雑さによっては、システムの可能な構成が膨大であるため、パスの数が非常に多くなることがあります。適切だが有限の数のパスをカバーできるテストケースを見つけるには、選択を導くテスト基準が必要です。この手法は、モデルベーステストを開始した論文で、Offutt と Abdurazik によって初めて提案されました。[3]テストケース生成のための複数の手法が開発され、Rushby によって調査されています。[4]テスト基準は、テストの教科書で一般的なグラフの観点から説明されています。[1]
定理の証明
定理証明はもともと、論理式の自動証明に使用されていました。モデルベースのテスト手法では、システムはシステムの動作を指定する述語のセットによってモデル化されます。 [5]テストケースを導出するために、モデルは、テスト対象のシステムを記述する述語のセットの有効な解釈に基づいて同値クラスに分割されます。各クラスは特定のシステムの動作を記述するため、テストケースとして使用できます。最も単純な分割は、システムの動作を記述する論理式が選言正規形に変換される、選言正規形アプローチです。
制約論理プログラミングとシンボリック実行
制約プログラミングは、一連の変数に対する一連の制約を解くことによって、特定の制約を満たすテストケースを選択するために使用できます。システムは制約によって記述されます。[6]制約セットの解決は、ブールソルバー(例:ブール充足問題に基づくSATソルバー)またはガウス消去法などの数値解析によって 行うことができます。制約式のセットを解くことによって見つかった解は、対応するシステムのテストケースとして使用できます。
制約プログラミングはシンボリック実行と組み合わせることができます。このアプローチでは、システムモデルがシンボリックに実行されます。つまり、さまざまな制御パスにわたってデータ制約を収集し、制約プログラミング手法を使用して制約を解決し、テストケースを作成します。[7]
モデルチェック
モデルチェッカーはテストケースの生成にも使用できます。[8]もともとモデル検査は、仕様のプロパティがモデルで有効かどうかを確認するための手法として開発されました。テストに使用する場合、テスト対象システムのモデルとテストするプロパティがモデルチェッカーに提供されます。証明の手順の中で、このプロパティがモデルで有効である場合、モデルチェッカーは証拠と反例を検出します。証拠はプロパティが満たされるパスであり、反例はモデルの実行中にプロパティに違反するパスです。これらのパスは、テストケースとして再び使用できます。
マルコフ連鎖テストモデルを使用したテストケース生成
マルコフ連鎖は、モデルベーステストを処理するための効率的な方法です。マルコフ連鎖で実現されるテストモデルは、使用モデルとして理解できます。これは、使用/統計モデルベーステストと呼ばれます。使用モデル、つまりマルコフ連鎖は、主に2つの成果物で構成されています。テスト対象システムのすべての可能な使用シナリオを表す有限状態マシン(FSM) と、システムが統計的にどのように使用されているか、または使用されるかを表すために FSM を修飾する運用プロファイル (OP) です。最初の (FSM) は、何がテストできるか、またはテストされたかを知るのに役立ち、2 番目 (OP) は、運用テストケースを導出するのに役立ちます。使用/統計モデルベーステストは、システムを徹底的にテストすることは不可能であり、障害は非常に低い率で発生する可能性があるという事実から始まります。[9]このアプローチは、テスト対象システムの信頼性を向上させることに重点を置いたテストケースを静的に導出する実用的な方法を提供します。使用/統計モデルベーステストは最近、組み込みソフトウェアシステムに適用できるように拡張されました。[10] [11]
参照
参考文献
- ^ ab Paul Ammann および Jeff Offutt。ソフトウェアテスト入門、第 2 版。ケンブリッジ大学出版局、2016 年。
- ^ 実践的なモデルベーステスト: ツールアプローチ Archived 2012-08-25 at the Wayback Machine、Mark Utting および Bruno Legeard、ISBN 978-0-12-372501-1、Morgan-Kaufmann 2007
- ^ Jeff Offutt および Aynur Abdurazik。UML 仕様からのテストの生成。第 2 回国際統一モデリング言語会議 (UML '99)、416 ~ 429 ページ、コロラド州フォートコリンズ、1999 年 10 月。
- ^ John Rushby。自動テスト生成と検証済みソフトウェア。検証済みソフトウェア: 理論、ツール、実験: 第 1 回 IFIP TC 2/WG 2.3 会議、VSTTE 2005、チューリッヒ、スイス、10 月 10 ~ 13 日。pp. 161-172、Springer-Verlag
- ^ Brucker, Achim D.; Wolff, Burkhart (2012). 「定理証明器ベースのテストについて」. Formal Aspects of Computing . 25 (5): 683–721. CiteSeerX 10.1.1.208.3135 . doi :10.1007/s00165-012-0222-y. S2CID 5774837.
- ^ ジェファーソン・オファット。制約ベースの自動テストデータ生成。IEEE Transactions on Software Engineering、17:900-910、1991
- ^ Antti Huima。Conformiq Qtronic の実装。ソフトウェアと通信システムのテスト、Lecture Notes in Computer Science、2007 年、第 4581 巻/2007 号、1-12、DOI: 10.1007/978-3-540-73066-8_1
- ^ Gordon Fraser、Franz Wotawa、Paul E. Ammann。モデルチェッカーによるテスト:概要。ソフトウェアテスト、検証、信頼性、19(3):215–261、2009年。URL: [1]
- ^ エレーヌ・ル・グエン。論理的なテスト統計の使用法に関する検証: 資料による決定のモデル化、2005 年。 URL:ftp://ftp.irisa.fr/techreports/theses/2005/leguen.pdf
- ^ Böhr, Frank (2011). 「組み込みシステムのモデルベースの統計的テスト」。2011 IEEE 第 4 回国際ソフトウェアテスト、検証、妥当性確認ワークショップ会議。pp. 18–25。doi :10.1109/ ICSTW.2011.11。ISBN 978-1-4577-0019-4. S2CID 9582606。
- ^ Böhr, Frank (2012).同時実行環境における連続信号と離散信号による組み込みリアルタイムソフトウェアのモデルベース統計テスト: 使用法ネットアプローチ。Verlag Dr. Hut. ISBN 978-3843903486。
さらに読む
- OMG UML 2 テストプロファイル; [2]
- Bringmann, E.; Krämer, A. (2008). 「2008 国際ソフトウェアテスト、検証、および妥当性確認会議」。2008 国際ソフトウェアテスト、検証、および妥当性確認会議。 国際ソフトウェアテスト、検証、および妥当性確認会議 (ICST)。 pp. 485–493。CiteSeerX 10.1.1.729.8107。doi :10.1109/ICST.2008.45。ISBN 978-0-7695-3127-4。
- 実践的なモデルベーステスト: ツールアプローチ、Mark Utting および Bruno Legeard、ISBN 978-0-12-372501-1、Morgan-Kaufmann 2007。
- モデルベースのソフトウェアテストと分析 (C# を使用)、Jonathan Jacky、Margus Veanes、Colin Campbell、Wolfram Schulte、ISBN 978-0-521-68761-4、Cambridge University Press 2008。
- モデルベースリアクティブシステムのテスト上級講義シリーズ、LNCS 3472、Springer-Verlag、2005年。ISBN 978-3-540-26278-7。
- Hong Zhu 他 (2008)。AST '08: ソフトウェアテストの自動化に関する第 3 回国際ワークショップの議事録。ACM Press。ISBN 978-1-60558-030-2。
- Santos-Neto, P.; Resende, R.; Pádua, C. (2007). 「2007 ACM 応用コンピューティングシンポジウム - SAC '07 議事録」。 2007 ACM 応用コンピューティングシンポジウム- SAC '07議事録。応用コンピューティングシンポジウム。 pp. 1409–1415。doi :10.1145/1244002.1244306。ISBN 978-1-59593-480-2。
- Roodenrijs, E. (2010年春)。「モデルベーステストによる価値の付加」。方法とツール。18 (1): 33–39。ISSN 1661-402X 。
- モデルベーステストツールサポートの体系的レビュー、Muhammad Shafique、Yvan Labiche、カールトン大学、技術レポート、2010 年 5 月。
- Zander, Justyna; Schieferdecker, Ina; Mosterman, Pieter J.編 (2011)。組み込みシステムのモデルベーステスト。動的システムの計算分析、合成、設計。第 13 巻。ボカラトン: CRC プレス。ISBN 978-1-4398-1845-9。
- 2011/2012 モデルベーステスト ユーザー調査: 結果と分析。Robert V. Binder。System Verification Associates、2012 年 2 月
