探索的テストの「オポチュニティ」を意識する

探索してますか?

最近は色々なところで探索的テストの話を聞くようになりました。個人的に少し気になることがあるので、書いてみようと思います。

このエントリはテストの小ネタアドカレ 20日目です。

気になっていること

気になっていることはずばり、
「チャーターだけに沿った探索的テストをしていませんか?」
ということです。

探索的テスト≠チャーターを使ったテスト

探索的テスト=チャーターを使ったテストみたいな認識になっている気がしていて、それはちょっと違うかなと思っています。探索的テストはあくまで目の前にあるソフトウェアから得た情報をもとにテスト設計、実行をしていくテストだと思っています。 慣れていないと事前に記述するチャーターを細かく設定することが多く、それはほぼ抽象度の高いテストケースになります。そしてそれがある程度網羅されていると、それをなぞるのに精いっぱいになったり、網羅することで満足してしまいます。

「チャーターに沿って探索しましたが、バグは出ませんでした。」

そんな報告が聞きたいんじゃない!バグを見つけたいんですよ!!我々は!! 手順がないテストケースだけを実施して満足したいわけじゃないんです。

オポチュニティ

そこで重要になってくる考え方が「オポチュニティ」です。 Rapid Software Testing(RST)に記述されている探索的テストの1つであるセッションベースドテストの報告項目には以下が含まれています。*1

チャーター/オポチュニティ(トータルセッションに対する割合。オポチュニティはチャーターには当てはまらないが、有用なテスト作業である)

チャーターに80%、チャーターに沿わない時間(=オポチュニティ)が20%の場合は80/20みたいな形です。 このオポチュニティと全体に対する割合が定義されていることが重要だと考えています。 図で書くとこんなイメージです。

f:id:nemorine:20211221025550p:plain
チャーターとオポチュニティ

チャーターに沿った場合は、チャーター付近のバグ(小赤星)は気付くと思いますが、奥深くにあるバグ(大赤星)を見つけることはできません。一方、チャーターから外れて奥を探索することで(=オポチュニティ)奥深くに存在するバグを見つけることができます。

「じゃ どうやって奥に続く道なき道を見つけるか?」についてはまた別の機会に!

追記

秋山さんから質問があったので、自分なりの答えを書いてみます。

質問①: 「チャーター/オポチュニティ」という指標の測定結果の数値の妥当性はどう判断したら良いのですか?

nemorine的回答: 常にオポチュニティが0(図でいうと緑のところが一つもない)というのは避けたほうがよいと思っています。すなわち、100/0 というより90/10や80/20みたいな形がいいのだろうと思っています。 割合はソフトウェアの作り、テスターのスキル、チャーターの抽象度などによると思っているので、理想は80/20みたいなものはないと思っています。ただ、「2割くらいはチャーター外れていきましょう!」というようなチームの目標値は個人的にはありだと思います。

質問②: この式に「検出したバグの数や種類」が現れていないのも気になります。

nemorine的回答: RSTにはバグの報告の記述はありますが、チャーター/オポチュニティによるバグの数や種類の分類はないです。やってみると面白そうな気がしますが、実務的には単純にソフトウェアの機能で分類する方が有益そうだと思います。

*1:これ以外の報告項目に関しては セッションベースドテスト を参照のこと