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

ソフトウェアの品質、テストなどについて学んだことを記録するブログです。旧ブログからゆっくり移行中です。http://blog.livedoor.jp/prjmng/

テストの自動化にROIなんてないんじゃない?

 JaSST2013 Tokyoや、テスト自動化カンファレンス2013で、テスト自動化研究会「テスト自動化のROI」というのを一つのテーマとして発表しています。
 何が全テスト自動化だ、何がリグレッションテストコストがゼロ円だ、何がプロジェクトを強くしてやるだ!夢見させるようなこと言うな!ということですよね。

https://www.slideshare.net/omn/stac2013openingkoukaiwww.slideshare.net

 ですが一方で、表題のようなタイトルのブログ記事を見かけましたので、紹介*1しておきましょう。

blog.smartbear.com    「not」と「no」で二重否定ではなく、強い否定を表すという、正統でない構文ですね。
 割りと釣りくさいタイトルですが、主張はまず、以下のように始まります。

ROIを語れるのは、具体的で(tangible)・追跡可能で(traceable) ・完全に相関のある(100% correlated)利益(revenue)があるときのみ。「品質」とか「テスト全体の価値」といった抽象的な(intangible)なものなら、定量的に測定するアルゴリズムが必要だ。

 これを読むと、自動化によって削減できたコスト、つまりマイナスのマイナスを、「利益」として計算すればいいのでは?と考えてしまいます。ですが、テストツールによってコスト削減したことを、記事では次のような比喩で表しています。

たとえばクーポン割引でモノを買ったとき、それは「金を使わずにすんだ(save)」のではない。「使う金が少なかった(spend less)」だけ。

 筆者自身の言うとおり、この理屈は「hairsplitting」、枝葉末節でしかないように思えます。
 ただ、よくよく考えてみると、妙なことに気づきます。例として、服を買う場合のROIを考えてみましょう。払った金額がInvestmentで、得られた「価値」から金額を引いたものをがReturnと考えてみましょう。

  1. 12,000円の価値のある服を、値札通り10,000円で買う
  2. 12,000円の価値のある服を、値札の10,000円から2割引きクーポンを使って買う

 (a)のROIは、(12,000 - 10,000) / 10,000 = 20%
 (b)のROIは、(12,000 - (10,000 - 2,000)) / (10,000 - 2,000) = 50%

 さて、ここで言うROIって、何のROIでしょうか。 服のROIですよね。  比喩を元に戻すと、服がテスティング作業に、クーポンが自動化ツールに相当します。よってここで得られているROIは、ツールではなく、あくまでテストという行為のROIです。

 では、ツールのROIはどうやって求めるのでしょう。

ツールに金を使い、自動化に投資する。そのリターン(期待される利益)は何か。何もない。コストがあるだけだ。会計の言葉でいう、サンクコストなのだ。

 ツール自体がもたらす利益があるわけではない、という考え方です。
 さらに記事はこう主張します。

テスティングのコストについて偽るのをやめて、テスティングへの投資と、それがもたらす便益(benefit)とがどう釣り合うかを、ステークホルダーやチームの人たちがわかるようにしよう。それには、費用便益分析だ!

行ったことを正しく評価したいなら、いくら金が戻ってきたかでなく、得られたものを数えてみるべき。

 確かにわたしはこれまで、ROIのRとは「節約できたコスト」と考えていました。が、それはもしかすると、「利益」ではない・・・?

 モヤモヤのまままとめると、以下になると思います。

  • ツールの購入はサンクコストであり、それ自体が利益を産むわけではない。よってROIはゼロ。これをツール導入の根拠に使うのはミスリーディングだ。
  • テスト自動化の取り組みやツールの導入の際に行うべき分析は、ROIではなく、費用便益分析である。

 ぜひ元記事を読んでいただき、本当の記事の意図を教えていただければと思います。元記事のコメント欄も盛り上がっています!

*1:わたしの記事の解釈はひどく怪しいです。もし興味をもたれたら、ぜひ元記事を読んで、わたしの誤解を指摘してください。