miwaさんのこちらのツイートに、ソフトウェア品質・テスト関係の方々がいろんな意見を寄せていました。ぜひスレッドを追ってみてください!
"テストのビジネスのことわざで「製品の中で品質をテストできない」"
— miwa (@miwa719) 2022年1月22日
ここでいう"製品の中"というのは"開発全体のフェーズの最後の製品だけで"という意味なのかな? うちのチームだとチケット単位(2,3日のストーリー)で所謂V字の右上までいくので、このことわざを見たとき、え?? と考えてしまった。 pic.twitter.com/G4oG1E3NaG
いろんなところに現れる常套句
上のツイートは、『実践アジャイルテスト』からの引用です。原著『Agile Testing』と合わせて、もう少し引用してみます。
An old saying in the testing business is, "You can't test quality into the product." This is, of cource, true of agile development as well. We feel you can't deliver high-quality software without following some fundamental practices.
テストのビジネスのことわざで、「製品の中で品質をテストできない」 というのがあります。これはもちろんアジャイル開発においても真実です。いくつかの基本的なプラクティスなしには、高い品質のソフトウェアは作れないと感じています。
日本語も理解が難しいですが、原文なら理解できるかというとそれも難しい。
似たような表現は随所に現れます。
『テストから見えてくる グーグルのソフトウェア開発』とその原著『How Google Tests Software』から引用。
"Quality cannot be tested in" is so cliche it has to be true.
<品質はテストできない>という言葉はとても使い古されているので、真実であるに違いない。自動車からソフトウェアまで、最初の設計段階から品質が作り込まれていなければ、製品は決してまともなものにはならない。
『実践ソフトウェア・エンジニアリング』*1とその原著『Software Enineering - A Practitioner's Approach』から引用。
As they say, "You can't test in quality. If it's not there before you begin testing, it won't be there when you're finished testing."
「品質はテストできない。テストを始める前に存在しなかった品質は、テストが終わったところでやはり存在しないのだ」という言葉の通りだ。
どう解釈するか
少なくとも、3つの解釈が考えられます。
- 品質は、テストより前に作り込むべきものである。
- 品質を上げるのはテスト自体ではなく、その後の活動である。
- 品質そのものはテストできない。
辰巳さんからは、William Edwards Deming氏の言葉を教えていただきました。
『Out of the Crisis』*2からの引用(翻訳筆者)です。
Inspection does not improve the quality, nor guarantee quality. Inspection is too late. The quality, good or bad, is already in the product. As Harold F. Dodge said, “**You can not inspect quality into a product.”
品質は、検査によって改善されるわけでも、約束されるわけでもない。検査では遅すぎるのだ。良いにせよ悪いにせよ、品質はすでに製品に備わってしまっている。
test(テスト)ではなくinspection(検査)という言葉に変わっていますが、意味合いは同じでしょう。
この文章や、その引用の文章周辺を見ても、解釈1が一番原意に近く、広義には2も含む、みたいに考えられるのではないでしょうか。
test quality into って何!?
ただそれでも、「test quality into the product」ってどういうニュアンスなのよというモヤモヤは残ります*3。日本人(主語デカ)は、動詞+副詞/前置詞型の句動詞に弱いんだよ!
Deming氏の引用にも出てくる*4、統計的品質管理のHarold F. Dodge氏のこの言葉がヒントになると思います。
You cannot inspect quality into a product; it must be built into it.
build quality into a product と inspect quality into a product を対句と捉えることができます。
build inが「作り込む」、push inが「割り込む」であるように、inやintoがもたらす「~込む」という語感。これをtestにくっつけることで、「テストを通じて品質を練り込む」みたいなニュアンスを表現しているのでは、というのがわたしの仮解釈です。どうでしょうかね?
ということで、「テストの段階になって初めて品質を作り込もうなんて考えちゃいかんよ」と、何十年も前から言われ続けていることをあらためて噛み締めて、眠ることにしましょう。
*1:この部分はわたし自身が、『グーグルのソフトウェア開発』の翻訳を参考に訳したので、完全に文責筆者ってやつです・・・。
*2:Amazonで新品の取り扱いがある・・・。
*3:この表現について社内のネイティブに聞いてみたところ、「It is awkwardly worded」というコメントをいただきました。ネイティブスピーカーn=1の意見で正しいというつもりはないけれど、信頼できる英語話者と考えられる方です。
*4:ググっているうちに、「In search sites, his name always come with Deming’s.」という文章に出会って笑ってしまった。確かにセットでした。