ATS|テスト自動化

2021.6.28

【第4回】:課題解決のために ①モデルベーステストの適用

今こそ求められる探索的テストとは?

「探索的テスト」は、テストの設計・実行を並行するテスト技法です。テスト仕様書の作成などに要する工数を大幅に削減しつつ、バグ検出に注力できる非常に有力なテスト技法といえます。しかしながら、以下3つの課題が障壁となり現場ではあまり適用されていないと、前回お伝えしました。

・課題1:スキルの高いテスターの確保が困難
・課題2:プログラムによる自動化のハードルが高い
・課題3:探索的テストだけで品質保証するのが困難

これらの課題に対する解決策は、2つ挙げられます。探索的テストの連載第4回である本記事では、1つ目の解決策である「モデルベーステストの適用」についてご紹介します。なお、探索的テストの課題に関する詳細は、連載第3回の記事をご一読ください。

今こそ求められる探索的テストとは? 【第3回】:探索的テスト適用における現場の課題

探索的テストとの併用が有力となる「モデルベーステスト」とは?

「モデルベーステスト」とは、テスト設計において「モデル」を活用するテスト技法です。モデルは「テスト対象システムを模式的に表現したもの」で、システムの状態変化に着目した「状態遷移モデル」などが主に使われます。

モデルベーステストでは、まずテスト対象システムの要件や仕様、設計をもとにモデリング (モデル化) を行います。そして完成したモデルをインプットとして、テスト項目やテスト期待値を導出していくのが一般的です。

今日の開発現場で広く用いられている「記述式テスト」では、仕様書や設計書をもとに作成したテスト仕様書が、テスト実行のインプットとなります。一方のモデルベーステストでは、作成したモデルがテスト実行のインプットとなるのが大きな違いです。

モデルベーステストの併用が、探索的テストに有効となる2つの理由

モデルベーステストを併用することで、探索的テスト適用におけるいくつかの課題を解決することが可能です。具体的にモデルベーステストの併用が有効となる2つの理由を解説します。

理由1:テストの実行内容や網羅性を可視化できる

探索的テストでは実行したテスト項目が記録されないばかりか、テスト仕様書さえ作成されないことも少なくありません。そのため、テストの実行内容や網羅性がブラックボックスとなり、客観的にテスト対象システムの品質を保証することは困難です。
その点モデルベーステストでは、テスト実行のインプットが「モデル」として明示されます。モデルベーステストにおけるテスト項目は、モデル内の「状態」に対して「アクション」が発生した際の振る舞いを検証するものです。言い換えれば、状態とアクションの組み合わせ数だけテスト項目が存在することとなります。
したがって、テスト対象システムに想定される全ての状態やアクションをモデル内に表現することで、実行すべきテスト項目を網羅可能です。結果として、モデルによりテストの実行内容や網羅性が可視化され、品質保証につながります。

理由2:テスト実行の自動化が容易となる

テスト実行の自動化シナリオを作成するには、テスト対象システムが持つ「状態」や「アクション」が明確になっている必要があります。しかし、探索的テストではテスト実行前にこれらの要素を明示しないため、自動化する上での足掛かりがありません。とはいえ、テスト仕様書を作成するのでは従来の記述式テストと変わらず、テスト設計の工数が増大します。
その点、モデルベーステストではモデルがテスト実行のインプットとなります。モデル内には状態やアクションが網羅的に示されているので、自動化シナリオを作成する際に参照することが可能です。さらに、状態遷移モデルであれば遷移後の新たな状態がおのずと「テスト期待値」となり、テスト項目ごとに期待値を検討する工数も削減できます。

モデルベーステストの併用だけでは解決できない課題もある

このように、探索的テスト適用の課題解決にはモデルベーステストの併用が有効です。この手段により、冒頭で示した「課題2:プログラムによる自動化のハードルが高い」および「課題3:探索的テストだけで品質保証するのが困難」のおおむねは解決できます。

しかしながら、依然として「課題1:スキルの高いテスターの確保が困難」は解決されず残っています。モデルにより網羅性を示せたとしても、テスターの繊細な探索スキルを一般的な自動化手法により再現するのは非常に困難です。また、テスト対象システムの複雑さによっては、モデルベーステストで生成するテスト項目が膨大な数になってしまうというリスクもあります。

さらに、テスト実行を自動化する上では次に示す2点の技術も欠かせません。これら技術の実現は難易度が高く、探索的テストの自動化において高い障壁となります。

高精度な結果判定技術

自動化したテストでバグを確実に検出するためには、高精度な結果判定技術が必要不可欠です。その実現には、システムの画像や文字を正確に認識し、期待値と比較・判断するプログラムを開発する必要があります。
しかし、システムテストでは一見期待値通りの表示であっても、数ピクセルのずれが生じているケースもあります。このように僅かな期待値との差異を見逃さず正確に結果判定する技術は、容易に実現できるものではありません。

開発ドキュメントに依存しないモデリング技術

モデルベーステストを自動化せずに行う場合は、仕様書や設計書といった開発ドキュメントからモデルを導出することとなります。したがって、これらの開発ドキュメントが不十分だと正しくモデリングすることは困難です。
とはいえ開発サイクルの短い今日の現場では、開発ドキュメントの作成に十分な工数を費やせない状況も少なくありません。モデルベーステストを併用しつつ質の高い探索的テストを行うためには、開発ドキュメントに依存しないモデリング技術が必要不可欠です。
その実現方法は、テスト対象システム自体をモデリングのインプットにすることに他なりません。しかし、複雑化の一途をたどるシステムには、多種多様な状態やアクションが存在します。それらを全て網羅してモデリングを行うことは難しく、自動化には多大な工数が必要です。

残された課題の解決策とは?

今回は「モデルベーステストの適用」が探索的テスト適用の課題解決に有力となる理由や、それだけでは解決できない課題をご紹介しました。

冒頭でも述べたように、探索的テスト適用の課題に対する解決策は2つ存在します。1点目が今回の「探索型のモデルベーステスト」であり、2点目が「AIを活用したテスト自動化」です。これら解決策を両立させた初めての探索的テスト自動化プラットフォーム構築サービス『ADOC Testing Service for Eggplant』は、視覚的なモデリングを容易にするUIを備えています。

次回は2点目の解決策である「AIを活用したテスト自動化」について解説します。

■ ADOC Testing Service for Eggplantの概要へ
■ ADOC Testing Service for Eggplantの資料請求へ

今こそ求められる探索的テストとは? の記事一覧

今こそ求められる探索的テストとは?

  • 2021.7.8
  • 【第5回】:課題解決のために ②AIを活用したテスト自動化

BLOG シリーズ 一覧