見出し画像

変化に強くなる!探索的テストって何が良い?

この記事はソフトウェアテスト Advent Calendar 2024 14日目の記事です。

なぜ探索的テストなのか?

アジャイル開発や短いリリースサイクルが当たり前になる中、テスト手法にも迅速かつ柔軟な対応が求められています。そのような状況で、要件が日々変化するアジャイルな現場や、仕様がまだ固まっていない初期フェーズのプロジェクトでは、とくに『探索的テスト』が活用できます。

探索的テストとは何か

QAエンジニアがテストの教科書として活用している、JSTQB(Japan Software Testing Qualifications Board)を参考にすると、探索的テストは『スキルを持ったテスト担当者がテスト対象について学習しながら、テストケースを同時にテスト設計・実行・評価し、テスト対象のテストしていない領域のテストを作成していく手法』と解釈できます。

他のテストとの違い

他のテストと比較してみます。
例えば、テストにはスクリプトテストやアドホックテストがあります。

スクリプトテストとアドホックテスト
  • スクリプトテスト:事前に細かく定義されたテストケースに従い、テスト実施手順から期待結果までを明確に規定した脚本(スクリプト)をなぞる手法

  • アドホックテスト:特定の計画や体系的な方針を持たず、その場の思いつきや勘に頼る手法

これらと比較すると、探索的テストは、明確な計画性や目標を持ちながら、テスト実施中の学習や観察によって柔軟にテスト範囲を拡張していきます。

探索的テストのアプローチ

私が探索的テストを実施する場合に、最低限準備するものがあります。
それは、テスト目的・(大まかな)テスト順序・終了基準です。

テストのアプローチ
  • テスト目的:どのような欠陥を見つけるために実施するのか、テスト担当者が意図を持ってテスト実施できるよう示します

  • テスト順序:やみくもな操作とならないよう、大まかにテスト対象の画面や機能、操作したいポイントを示します

  • 終了基準:経験ベースのテストは実施しようと思えば際限なく実施できてしまうため、欠陥の数や時間などで定量的にテスト実施を終了する基準を示します(時間内で探索的テストを実施する方法を「セッションベースドテスト」と呼びます)

これらのアプローチにより、単なる手順の反復や場当たり的な実行に留まらず、テスト担当者の経験や知識をフル活用したテストが実施できます。

「探索」とはなにか

そもそも「探索」とはなんでしょう?

ここで『探索』に近いイメージの言葉として、『調査』、『検証』、『模索』を挙げてみると、微妙なニュアンスの違いが見えてきます。

調査・検証・模索
  • 調査:既存情報の整理や確認に重きを置く

  • 検証:仮説や仕様が適切に機能するかを確かめる行為

  • 模索:手がかりをつかむためのあてのない手探りに近い

いずれもテスターが積極的に情報を集めていく行為である点は共通していますが、『探索』はこれらを組み合わせつつ、新たな問題や価値を自ら発見しようとするより創発的なプロセスを意味しているのです。

どんな時に探索的テストを選んでいるか

前提として、テスト対象の理解やチームでの経験が十分にあることが重要です。

以下のケースに当てはまる場合は、探索的テストを検討します。

  • スクリプトテストとして必要な手順・期待値を準備しても再利用性が低いと考えられる場合

  • テスト対象に欠陥が混入し、不具合が顕在化したとしてもユーザーに与える影響が低いと考えられる場合

スタートアップ企業のプロダクトチームでは毎週新機能や仕様変更が発生し、あらかじめ用意したテストケースでは変化に追いつけず、カバー範囲が限定的になりがちです。

このとき、探索的テストはテスター自身がリリース直前の新機能に触れながら、画面操作を通じて新たな問題点を素早く浮かび上がらせ、都度テスト戦略を更新できます。

つまり、事前準備が難しく再利用性が低い状況では、探索的テストによって柔軟な対応が可能になるのです。

これらの特徴から、探索的テストは動的な開発サイクルや未確定な要件にも対応しやすいといえます。

探索的テストを活用する理由

探索的テストは、単純に定められたテストケースをなぞるだけではなく、テスターが新たに得た知識や発見を即座に反映し、試行錯誤を繰り返しながらテスト戦略を進化させることで、テスト対象をより深く掘り下げていくダイナミックな手法といえます。

私はSaaSスタートアップ企業でQAエンジニアとして活動していますが、すべてのテストを網羅的に実施するのは非現実的なことも多々あります。このような状況下で、一定のリスクを理解しつつ探索的テストを意図的に取り入れることで、より費用対効果の高いテスト戦略を構築できるのではないかと考えています。

まとめ

今回は探索的テストについて書きました。
探索的テストの定義と特徴を踏まえ今後のテスト活動の参考になれば幸いです。

ぜひ小規模な範囲で試し、フィードバックを得ながら発展させることをおすすめします。(私の所属するQAチームでは「モブテスト」と称して探索的テストをチームで実施しています)


いいなと思ったら応援しよう!

まっきぃ
ありがとうございます😊