UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Test】モデルベーステストとは

モデルベーステスト(Model-Based Testing、以下MBT)についての記事を読んだ

www.qt.io

MBTは、ソフトウェアテスト手法の一つで、システムの動作や仕様をモデルとして表現し、そのモデルに基づいてテストケースを生成、実行するアプローチのこと

システム開発もそうだが、デザインの世界でもモデル駆動の話があるし、QAの世界でもそういう話が当然あるんだなという感想を持った

利点

  1. 重要なことに集中できる
    • 高レベルの抽象化に重点を置くので、不要なテストケースを省略し、テストの労力とリソースを最適化できる
    • 最終的には、重要な機能を正確に表す、より高品質なテストが可能になる
  2. コミュニケーションが容易になる
    • モデリングをすることで要件の共通理解を見つけ、潜在的な誤解を検出するのに役立つ
    • テストのニーズを内部および外部の関係者に伝えやすくなる
  3. 製品の初期段階で欠陥を回避する
    • 従来の開発プロセスでは、テストは最終段階であるため、前の段階で蓄積された欠陥のほとんどは、プロセスのかなり後になってから発見され、修正には時間とコストがかかる
    • MBTは、いわゆるシフトレフトテストをさらに可能にする 1 つの方法で、要件フェーズからテストを開始できる
    • モデルは、実装前にプロジェクトの関係者と共有して、要件を検証し、要件内のギャップを特定することができる
    • その結果、欠陥が早期に発見され除去され、開発の総コストが削減される
  4. 実装と保守の労力削減
    • モデリングには初期の労力が必要だが、実装と保守に必要な労力は大幅に削減される
    • MBTはテストケースのモジュール化を活用する
      • 従来のテストでは、アプリケーションの一部の要素が変更されると、個々のテスト ケースをすべて変更する必要がある場合があるが、MBTでは、レゴのようなビルディング ブロックを使用でき、1 つのブロックを修正するだけで、すべてのテスト ケースが最新の状態になる

プロセス

  1. モデル作成
    • テスト対象の動作や仕様を理解し、それを抽象化してモデルを作る
    • モデル作成ツールを利用することも多い(例: Spec Explorer、GraphWalker)
  2. テストケース生成
    • モデルから可能な操作や条件に基づき、テストケースを自動生成
    • ランダム、すべての状態遷移のカバー、特定のシナリオ重視など、さまざまな生成戦略がある
  3. テスト実行
    • テストケースを実行し、テスト対象システムが期待通り動作するか検証
  4. 結果の評価
    • テスト結果を分析し、不具合があれば修正
    • 必要に応じてモデルを更新

いわゆるモデリングの利点が述べられていて、確かにQAでも(というか開発よりことさら)抽象化した考えは必要だなと思った

テストでもレゴのようなビルディング ブロックを使用というところはわかっていない

この記事を書いた会社の製品を使ったデモがこちらの記事に書かれているのを見つけたので、どういう進め方がいいか実践的なところは後日調べる

www.qt.io