ソフトウェアの品質を学びまくる

ソフトウェアの品質、ソフトウェアテストなどについて学んだことを記録するブログです。

「探索的テスト3.0」における「探索」の位置づけなどの覚書

Compass Rose

テストと探索的テスト

 James BackとMichael Boltonによる、「彼らの」探索的テストについて、簡単に振り返っておきます。これを読んでも、探索テキストがうまくなるわけではありません。

 『Exploratory Testing 3.0』(探索的テスト3.0)という記事は、「探索的テスト」が生まれた背景や変遷についても言及しており、とても長いです。

www.satisfice.com

 翻訳はこちらにあります。5年以上前の翻訳で粗も目立ちますが、許してください。*1

sites.google.com

 About That Last Bullet Point の部分を読めば、彼らの今の立場がわかります。

 まず大事なのは、「探索的」という言葉についての認識の刷新。

今や、すべてのテスティングが探索的であると定義付けている

 「探索的テスト」が旨としていた「探索」は、実はテスト自体が当然もつべき性質であるとしています。よって「探索的テスト」という言葉は、馬から落馬しているようなものなのです。

 そこで、この新しい認識を踏まえたうえで、Testing 自体に新しい定義を与えています。

テスティングとは、探索と試行を通じてプロダクトについての知識を得ることでそれを評価するプロセスである。これには、質問、学習、モデリング、観察、推論、出力のチェッキングなどが含まれる。

 つまり、よく対比される探索 (exploring) もチェック (checking) も含むプロセスを、テスト (testing) と再定義しているわけですね。
 現在の、探索(search ではなく exploration の方)を行わない自動テスト (automated testing) は、テストの役割のうち特にチェックを担うという位置づけになるでしょうか。

 ただし彼らは、チェックを「価値のないもの」「無意味なもの」と扱ってはいるわけではありません。テストに属する重要な要素の一つです。探索とチェック、それぞれの役割があるという考えですね。

 ダメなのは、人間による unmotivated checking、つまり「やる気なしチェック」です。これはまさに自動化で代替したいところ。逆に、モダンな自動テストであれば、「やる気なしチェック」よりよっぽど上等な学習や推測をしてくれるかもしれません。 

 同じように、スクリプトテストについても否定していません。

必ずしも、誰かに与えられ、従うよう義務付けられた具体的な指示を指すわけではない。あなたの先入観が、手順に影響する。あなたの無知が、手順に影響する。あなたの組織の文化が、手順に影響する。あなたが成し、二度とはやり直せない選択が、手順に影響する。

 一般的に「探索的テスト」といえば、手順が指定されていないことを特徴とされがちですが、「手順があること」は必ずしも「探索」を妨げるものではないからです。
 考えてみれば、手順が明確にされていたとしても、あやしい動きを見たら立ち止まることもありますし、そこから派生するテストケースを書き出したりもしますよね。

 もう一つのポイントが以下ですね。

ET 3.0は、手順化を一つの技法に格下げし、探索的テストをテストそのものであると格上げした

 従来は、「テスト」があって、その下に「手順のない探索的テスト」と「手順のあるスクリプトテスト」のように扱われていました。
 今は、探索行為を含む「テスト」があって、その方法の一つとして「手順のあるスクリプトテスト」を位置づけているということです。

 以上をまとめると、以下のようになります。

  • 探索的なふるまいは、本来「テスト」自体が持つ要素である。
    • 「探索的テスト」という言葉は引退!
  • 「テスト」には、探索やチェックの他、質問・学習・モデリング・観察・推論といった行動も含まれる。
  • テストの手順は探索の否定にはならない。
    • ただし手順化は、テストの技法の一つに過ぎない。

 まあちょっと言葉遊び感も、あるにはあります。
 ただ、「探索的テスト」に限らず、テスト自体が人間の能力と自発性を要求するものだという位置づけは、納得のいくものだなと思います。

 ・・・と書き終えたところで、また『Checking vs Testing』という記事が上がっているとにしさんのツイートを見かけたりして・・・。

medium.com

*1:またこのお詫び自体も、まるで「今ならもっといい翻訳ができる」と言わんばかりの見栄に満ちていますが、合わせて許してほしい。