会社によってQA(Quality Assurance :品質保証)と呼ばれたりQC(Quality Control :品質管理)と呼ばれたりしますが、いずれにしろその仕事を担当している人たちのことを、プログラマの多くは「悩みの種」だと思っています。私の直接知っている範囲でも、テスト担当者たちと敵対的な関係に陥っているプログラマは多くいます。「小うるさい」「完壁主義すぎる」という愚痴もよく聞きます。読者の中にも同じような人は多いのではないでしょうか。

私自身は、彼らに対してまったく違った印象を持っています。そうなった原因はおそらく、最初に勤めた会社でテストを担当していた人にあると思います。その会社でテストを担当していたのは何と総務部長でした。マーガレットという名前の女性で、とても感じの良い人でした。いつも業務がスムーズに進むよう、細かいところにまで気を配ってくれ、私も含めた若いプログラマたちの教育も買って出ていました。プロとして顧客の前ではどう振る舞うべきなのかを教えていたのです。そして、彼女はバグを見つける才能にも恵まれていました。どれほど目立たないバグだろうとすぐに見つけてしまうのです。

当時私が担当していたプログラムは、元々は経理担当の人間が書いたものでした。書いた本人は、自分の腕はプロ並みだと思っていたようですが、実際はやはりプロではないため、プログラムは重大なバグをいくつか抱えていました。その修正が私の仕事だったのです。修正ができるとマーガレットがテストをします。私としては完全に直したつもりだったのですが、彼女が使い始めると、ほんの少しキーを叩くだけで、すぐに妙な動きをするのです。新たなバグが見つかったというわけです。もちろんそのときは、いらだたしい思いや恥ずかしい思いをすることもありましたが、ともかく彼女が感じの良い人だったので、恨む気持ちはまったくありませんでした。テスト、デバッグを繰り返すうち、ついにその日が来ました。マーガレットが使っても、プログラムは何の問題もなく起動され、請求書の作成からプリントアウト、終了までまったく滞りなく進んだのです。実に嬉しい瞬間でした。さらに素晴らしかったのは、顧客のコンピュータにプログラムがインストールされてからです。プログラムには何の問題も起きず、ずっと順調に動き続けました。リリース前にあらゆるバグをマーガレットが見つけてくれたからでしょう。

テスト担当者たちは、プログラマの敵ではなく「友人」であると私は言いたいです。彼らは、取るに足りないと思えるような問題を逐一指摘してくるかもしれません。それで「恥をかかされた」と思う人もいるでしょう。しかし、些細に思える問題でも解決しておけば、顧客はその問題に煩わされずに済みます。そうすれば、あなたは恥をかくどころか、顧客から高く評価されるでしょう。素晴らしいことではないでしょうかそれはテスト担当者が問題を見つけてくれたからこそ、できたことなのです。私の言う意味はもうおわかりでしょう。

想像してみてください。たとえば今、とても革新的な人工知能アルゴリズムを利用したソフトウェアが納入され、はじめて使ってみているところだとします。人工知能が、並行処理に関する問題を自動的に発見し修正してくれるという触れ込みです。起動してみたら、最初の方に表示される画面で"intelligence"のスペルが間違っているのに気づきました。何となく嫌な予感がしますが、単なるタイプミスです。大した問題ではありません。さらに操作すると、環境設定の画面で、ラジオボタンであるべきところにチェックボックスが使われているのが見つかりました。それからキーボードショートカットがいくつか機能しないのにも気づきました。どれも大問題というわけではないのですが、数が多くなると、作ったプログラマに対する信頼感は揺らいでくるはずです。こんな簡単な問題の修正もちゃんとできない人たちが作った人工知能、本当に大丈夫だろうか。並行処理の問題はずっと難しいのに、それを発見して修正するなどという芸当が果たしてできるのだろうか。そう思っても不思議はありません。

もちろん、プログラマたちが大変な天才で、AIを素晴らしいものに仕上げるのに熱中するあまり、些細な問題にはまったく気づかないということはあり得ます。それでも、他の人間にテストをさせれば、些細な問題は見っかり、顧客の目に触れるようなことはなかったはずです。それができないというのは、プログラマとしての資質を疑われでも仕方ないでしょう。

だから、些細な問を社内で見つけてくれ、顧客の目に触れないようにしてくれるテスト担当者は、プロクラマにとって「友人」と言えるのです。なかなか納得はできないかもしれませんが、それは本当です。