テスト自動化で削減できる「コスト」とやらについての考察

テスト自動化サービスmablのお手伝いをしていると、よく「テスト自動化のコスト」について質問される。今回は、現状僕がわかっている範囲でその回答をまとめてみようと思う。

なぜこれを書こうと思ったかというと、ちょっと前に「人類よ!これがテスト自動化の実践だ!立ち上げのプロ&運用のプロから実践知を発見しよう!」というイベントを開催して、ゲストの増原さんも似たようなことを言及していたからだ。

このイベントは、自分で言うのもあれだが、テスト自動化ツールの実践という意味では、かなり内容の濃いものになっていると思う。いい意味でマニアックなのだが、動画も公開しているので、mablのようなツールを活用してアジャイルテスティングを目指す人にぜひおすすめしたい。そして、もっといい実践があればぜひ話してほしい。

彼の言葉を思い出すと「開発にコストをかけようとするのに、品質になぜコストをかけようとしないのか?」という趣旨だったと思う。僕もこの意見には賛成で、「テスト自動化ツールで品質を安く買える」と考えているのであれば、それは大きな間違いを生む。かもしれないと思うのだ。

イニシャル: 自動テスト基盤構築のコスト

SaaSを利用すればやらなくていいことが増える。参考資料はこちら

コストをひとつずつ整理していこう。まずひとつめは、テスト実行環境の構築コストだ。テストを自動実行する環境を自動テスト基盤と呼ぶとする。この基盤を作るためには以下のような機能を実装しなければならない。加えて、自動テストの作成やメンテコストが必要になる(後述)。

  • テスト実行環境構築
  • クロスブラウザ環境構築
  • 並列実行機能
  • テスト結果データ基盤構築
  • テスト結果レポート生成
  • 定期実行基盤
  • CI/CD連携機能
  • 通知機能(Slackやメール)
  • 画面崩れ検知
  • JSエラー検知
  • ネットワークエラー検知
  • などなど

SaaSを使えば、初期の設定をちょろっとするだけで、簡単に自動テストを作成はじめられる

聞いた話だと、こういった自動テスト基盤を構築するのに2ヶ月ぐらいで300万円かかるそうだ。

何人で作っているかわからないが、コストを金額計算するときの目安として活用すると、自動テスト基盤構築のコストについては、300万円近くのコスト削減になる。時間をコストとして考えると、リードタイムも2ヶ月が1日になる。

イニシャル: 初期自動テストの作成コスト

モバイルアプリのE2Eだと、過去に1ヶ月で「せいやーっっっっっっ!」と作ったことがある。当時のバディだった根本さんと二人でiOSとAndroid各100ケースぐらい作った。あのときはきっと若かった。

定番はちょっとずつ。ただ、若気の至りで一気にやるのも手。参考資料はこちら

プログラマの平均単価が50〜100万らしいので、日本人らしく間を取って75万としよう。自動化以外の仕事もしているが、単純計算で1ヶ月100ケースで75万。1ケースあたり7,500円らしい。

モバイルアプリのE2Eテストは難易度が高いのでWebのE2Eと単純比較できないが、それをいってたら話が進まないので、強引に比較してしまうと、同じぐらいのテスト1件をmablのようなサービスで作るなら、半分以下の時間でできると思う。

よって、(感覚だけど)100ケース75万かかるのが半額37.5万ぐらいで作成できる。時間をコストとして考えると、リードタイムは1ヶ月が半月になる。

ランニング: 自動テスト基盤と自動テストのメンテコスト

イニシャルコストが見えてきたので、ランニングコストを考えてみる。こちらも同じく、基盤とテストの2種類考えなければならない。

言うまでもないが、クロスブラウザ環境やクロスOS環境を構築するため、そのメンテナンスコストが必要になってくる。このあたりは末村さんのスライドがわかりやすく、きっと多くのテスト自動化職人が共感して泣いたはずだ。mablの場合、新しいバージョンのブラウザがリリースされれば、すばやく対応してくれる。

さらに、基盤を支えるミドルウェアのアップデートなど考えるとコストはどんどん膨らんでいく。エンジニアの数が潤沢で、予算がたくさんあるなら問題ないが、E2Eへの期待が大きくなればなるほど、片手間でやるのは辛い作業になるだろう。

さらに、自動テストのメンテナンスである。開発スピードにもよるが、機能が作成・更新されるたびにテストのメンテが必要になる。これはマニュアルテストも同じだろう。

mablのようなキャプチャ&リプレイ型のテスト自動化の弱点は、UIが変化したときに弱い点だろう。そのあたりをmablのような最近のツールは、AIを使ったテストの自己修復(オートヒール)や、Flowのような共通部品化(キーワード駆動テストに近い動作ができる)によって補おうとしている。

ただ、どれだけAIが賢くても、現在の技術では処理内容が変わったら人間がメンテするしかない。将来は進化するかもしれないが、自動テストの新規・修正対応や、安定化コストは発生する

前述の300万のテスト基盤構築だと、人を1名以上貼り付けてランニングコストは50万〜100万ぐらいらしい。日本人らしく間を取って75万としよう。160時間稼働で時給は4,600円ぐらいか。

自分のmabl経験だと、安定化させれば100件流しても日に30分の確認で済む(オールグリーンなら確認すらしないけど)。修正対応するにしても、月に4人日あれば十分だったりしたので、単純に 30分 x 16営業日 + 8時間 x 4人日 = 40時間。40時間 x 4,600 = 184,000円ぐらい。

環境構築はほぼゼロなので、月75万かかるのが19万ぐらいになり、時間をコストとして考えると160時間が40時間になる。

まとめ

まだまだ隠れたコストもありそうだが、代表的な部分をカバーできたのでまとめてみよう。

種類コスト名自力でがんばるテスト自動化ツールを活用する
イニシャル自動テスト基盤構築コスト300万
2ヶ月
0円
1日
イニシャル初期自動テストの作成コスト100ケース75万
1ヶ月
100ケース37.5万
半月
ランニング自動テスト基盤と自動テストのメンテコスト75万
160時間
19万
40時間

コスト面で整理すると、自力でがんばるメリットは少なく感じると思う。

ただ、注意したいのは、テスト自動化サービス最高!ではない点だ。

ツールを使おうが自力でテスト基盤やコード作ろうが、うまく自動テストを作成し活用するスキルは必要だと思う。無駄なテストを簡単に大量に作っていてもしかたがないのだから。

また、テストや品質は開発の外側にあるわけではなく、開発チームや開発組織が自分ごととして考えるべき共有課題だ。ツール導入のコストは重要なポイントではあるが、その前に自分たちにとって品質とはなにか? それをどうしたいのか? を明確にする必要がある。

このあたりはアジャイル・DevOps・アジャイルテスティングについて情報共有の場として作ったFacebookグループ「Agile Testing, Automation and QAの現場」でとてもいいコメントを頂いているのであわせてご確認いただきたい。

最後に、冒頭にもあったように「開発にコストをかけようとするのに、品質になぜコストをかけようとしないのか?」について、個人的な見解を書かせていただくと、開発と同じく、品質への投資はすべきだと思う。テスト自動化ツールを導入してその価値を手に入れているお客様には「テストをスピードへの投資」と考えている点が共通する。上記のようなコスト的な削減もめざせるが、スピードへの投資を検討する企業は、今後もどんどん増えていくと思う。

参考: テスト自動化サービス「mabl」