よりよいテストの方法は動物が食べ物を探す方法から学ぶことができる、とJames Bach氏は主張する。テスタは時間をかけてプロダクトのバギーな部分を見つけ出すが、一度離れて他の領域を探した方が効果的な場合もあり得る。オートメーションに頼るのは止めて、バグをハントする方法を学ぶのだ。

コンサルティングソフトウェアテスタのJames Bach氏はFall Online Testing Conference 2017で、“When Animals Test”と銘打った基調講演を行った。このカンファレンスに関してはInfoQでもQ&Aや要約，記事などを通じて取り上げる予定である。

InfoQはBach氏にインタビューして、効率的に欠陥を見つける方法、必要な計画やルールの数の決定、テスタがスキルを磨くために実践すべきこと、などについて話を聞いた。

InfoQ: テストと動物の捕食行動には、どのような類似点があるのでしょう？

James Bach: 数少ない貴重なものを、広大な、場合によっては複雑な空間から探す、という点が共通しています。テスタの場合、それはバグを見つけることです。動物の場合は、それが食べ物を探すことになります。自然選択と変異(つまりDarwin派のいう進化)のメカニズムを通じて、動物たちは、エネルギを浪費することなく食物を探す戦略を開発してきました。これらの戦略が、テストをより理解する上で有効なのです。例えばマルハナバチは、蜜を探して周りを飛び回ります。最初はでたらめに飛んで、多くのエネルギを費やすのですが、しばらくすると花の場所を学習します。テスタがプロダクトのバグのある場所を学習するのは、これとよく似ています。最も興味深いのは、蜜を集めるルートを最適化した後も、ハチは時々ランダムな方向に飛ぶことで、新たな花の発見を可能にしているという点です。効率的に食べ物を収集したり、探し回ったりしているのです。テスタも同じようなトレードオフ問題に直面します。

InfoQ: ここから何を学ぶことができるのですか？

Bach: ひとつは、動物でさえうまくいかないと知っているようなテスト方法は止める、ということです。探索はオープンエンドで確率論的な問題であるということを、動物たちは知っています。クモは食糧問題の解決に適応的アプローチを使用します。非適応なテストケースを無数にスクリプト化するというのは、バグを発見する最善の方法ではないのです。 オートメーションが助けてくれる、という考え方は止めましょう。バグを探す方法を学ばなくてはなりません。バグハントはダイナミックなプロセスです。オートメーションは確かに私たちを支援してくれますが、私たちが眠りにつくためではなく、私たちのセンスやパワーを増強するためにオートメーションを使うべきなのです。

InfoQ: 計画の価値とは何でしょう？計画が多過ぎる、あるいはルールが多過ぎるというのは、どうすれば分かりますか？

Bach: 計画の目的は、私たちのツールやリソースや行動を、目標を効率的に達成するために設定することにあります。計画には貴重な時間とエネルギを必要とする上、よい計画に必要なデータとスキルは、ある意味で悪い計画の結果を経験することから来ていますから、質問への答はこうなります – “不要な計画プロセスを見つけるためには、プロセスの一部を忘れた、あるいは削除した場合に何が起きるかを体験するという、予備的な適応プロセスが必要である”。 ルールは高価です。しかしルールは、私たちのために良いことをしてくれます。進行中の実験と変異について、適切なトレードオフを探してください。それは動物が行っていることです。

InfoQ: ルールの数が多過ぎる場合はどうすれば削除できるのでしょう？どれを保ってどれを削除するかを決めるには、どうすればよいのですか？

Bach: 規律の欠如、若者の非礼(youthful irreverence)、物忘れといったものすべてが適応的な価値を持つ理由がここにあります。こういった性質は、必ずしもプロセスのバグではありません。私がよく言うのは、悪いプロセスを説教するつもりならば、少なくとも自分ではそれを実践しないことです。 言い換えれば、過度なルールを捨てる必要はないのかも知れません。なぜなら、そのようなルールにはすでに誰も従っていないかも知れないからです。

InfoQ: テスタが自分のスキルを磨くためには、どうすればよいと思いますか？

Bach: 自分の仕事を見てください。他の人の仕事を見てください。問題がどのように解決されるのか、タスクがどのように完了するのか、しっかりと見極めることも場合によっては必要です。 こういったことは、動物にはうまくできません。 ひとつ例をあげましょう。私は以前、自分のテストする様子を7分間のビデオに撮って、2秒単位のブロックで分析したことがあります。テストの一部として、さまざまな事実チェックを無意識に実行しているだろうと思っていましたが、実際にそのとおりであることが分かりました。驚いたのは作業時間の25パーセントが、厳格に言えばテストや事実チェックではない行為に費やされていたことです。その行動はセンスメイキング(sensemaking)でした。センスメイキングは、経験したことを説明するための理論を構築するプロセスです。7分間のテストを3時間かけて分解してみるまで、自分の仕事においてセンスメイキングが重要な役割を持っているとは思ってもいませんでした。自分が数多くのセンスメイキングを行なっていると認識したことによって、それを体系的に改善するための練習や経験則の習得が可能になります。