BLOG.tass.io

テスト自動化の件、進捗どうですか?

2015-06-05

Sauce Labsのオフィシャルブログに「テスト自動化のKPI」という興味深い記事が載ってました。 本当に注力すべき作業、例えば価値を生み出すためのコードを書くことに集中するために、(テスティングに限らず)自動化を推進するのはもはや常識のように書かれています(そりゃあテストプラットフォームを提供する会社のブログだもの、当然ですよねw)

自動化に取り組んだものの、挫折したプロジェクトも結構あるんじゃないかと思います。あれ、耳が痛い。
導入が間違った方向に進んでしまったり、導入したは良いものの、実際の運用の中で内実を伴わない状態に陥ることもあります。そのためにも、メトリクスをとって監視・改善していくべきだし、”自動化を育てていく”イメージがわく素敵な記事だなと思いました。

ただ、テスト自動化について、国内では事例を聞く機会があまりありません。
文化的背景もあって「Javaの単体テストコードは書いてるよ」という話は聞きますが、システムテストやUIテストの自動化は?パフォーマンステストはcommit毎に実行してる?などの話を耳にする機会は多くありません。

徐々に広まっている感はありますが、インフラとかデプロイの自動化の話はよく聞くのに対して、ちょっと少ない気がします。この違いって何なのでしょうか。

テスト自動化が進まない理由

おもいつきで、適当に列挙してみます。

  1. テスト自動化はまだ技術的に未成熟であり、プロダクトに採用するレベルに達していない
  2. テスト自動化の専門家が不足している(人材育成に時間がかかっている)
  3. テスト自動化はオペレータがコツコツやれば良い(専門家がやるほど難しい作業ではないと判断している)
  4. テスト自動化には投資に見合う効果がない(ROIが良くない)
  5. テスティングはリスクマネジメントであって、ある程度のリスクを許容しているならテストを省いても良い(経営者がそう判断している)

上記からだと、4.の「投資効果が薄い」というのが一番ありがちな理由らしいです。

「エンジニア単価の観点から、オフショアやニアショアなど他のコスト低減策と比べて、テスト自動化はROIが良くない場合がある」ことも、日本でなかなかテスト自動化が進まない理由の一つになることが分かります。  一方でエンジニア単価が高い米国では、「手動テスト、自動テストの区別にかかわらず、実行コストを下げるために、オフショアと自動テストのROI投資効率を比較して、結果として国内でのテスト自動化が選ばれる」と考えられます。
— ROIの試算例から見る、日本でテスト自動化が進まない理由
http://www.atmarkit.co.jp/ait/articles/1406/27/news047.html

つまるところ、「日本のエンジニアは安く使えるので、人海戦術でテストやらせても充分だよね」ということです。
でもそれって、本当に「充分」なのでしょうか?

ROIの計算、本当にそれで合ってますか?

受託開発で「言われたとおりに作って、納品したら終わり」ならばROIの計算は単純で済みます。確かに充分です。

対して、「投資してより大きな価値を生み出す仕組みを手に入れたい」と考えている人にとって、ソフトウェアの開発はもっと複雑です。 アジャイルとかウォーターフォールとか手法の話は抜きにして、「本当に価値があるソフトウェアを作る」という作業が成功する確率は換算されているのでしょうか。

世界中の競合が今現在も世に製品を送り出し、ニーズも凄まじい勢いで変化していきます。その中で、本当に価値があるものを一度の施行で生み出して市場に投入するのは至難の技です。特に変化の激しいサービス系のソフトウェアでは、「高速に実装して市場に投入」し、さらに「高速に変化させるか」が鍵となっています。

最初に作るものは「過去の時点で必要だったもの」で、「いまは今で変化したものが必要」という難しい舵取りが要求されます。

投資を行う人は、ROIを計算する上で「投資を決めた瞬間に欲しいと願ったソフトウェアは、いま欲しいソフトウェアではない」を勘案しなければなりません。残念ながら、イメージすることが難しい、複雑な領域の話になってしまうのです。ROIの計算は、もっともっと複雑になります。Sauce Labsの記事にあるように、「機能要求を如何に短い時間で本番環境にデプロイできるのか」が価値に繋がるという側面もあるのです。

で、何がいいたいの?

すみません、「安易に計算して、”テスト自動化は費用対効果が薄いよね”と判断してしまっていませんか?」という問いかけをしたかっただけですw

プロジェクトマネージャの中には、プロジェクトはあくまで単発であって、継続して価値があるものに育てていくことは仕事の範疇じゃない、と考えているひとがいるみたいで、こわいのです…。

「いいから黙ってテスト自動化に投資しろ!」とは思いません

思ってませんってば!w

そもそも、まだ投資が足りていない分野なのでスキルを持ったエンジニアが不足していて、雇用にも教育にもお金がかかると思います。専門の会社にお願いするのもありますが、それこそ変化の激しいプロダクトに第三者の会社を入れるのは、自動化とは別の分野で課題があります。
結局、投資効果があるのか判断が別れる分野であるのは間違いないので、進まないのは仕方ないと思いますが、せっかく面白い分野なのにもったいないなあと思っている次第です。

悲しいかなSauce Labesの記事に登場する「自動化エンジニア(Automation Engineer)」に、私はまだ出会ったことがありません。むしろ私がなりたいです。投資してください…(˚ ˃̣̣̥ω˂̣̣̥ )


Michael Kuroneko

Written by Michael Kuroneko. Follow me on twitter, github.