E2E自動テスト導入の第1手としてROIを計算してみた話
先日E2E自動テストの導入編の記事を公開しました。多くの方に読んでいただけているようでとても嬉しいです!
後日自分でも改めて読んでみたのですが、記事の中でテスト自動化のROIの計算に触れられていなかったことに気づきました。よってここで供養できればと思います。
ROIとは
Return On Investmentの略称です。ある投資によってどれだけの利益を出すことができたのかの指標となります。
E2E自動テストのROI
E2E自動テストのROIはそのテストを実行したことでどれだけの利益がでているのかの指標として使われます。
計算しようと思った理由
E2E自動テストツールの導入期だったこともあり、当時のプロダクトの運用とツールの価格や運用コストもふくめたROIが見れればと思いました。正確性はあまり求めておらず、今後運用していく上での判断材料のひとつ(導入したSaaSツールをそのまま使っていくのかなど)になればという感じです。
計算方法
以下の書籍とサイトを参照しました。
- システムテスト自動化 標準ガイド 第8章 メトリクス
https://www.shoeisha.co.jp/book/detail/9784798140544 - ROIの試算例から見る、日本でテスト自動化が進まない理由
https://atmarkit.itmedia.co.jp/ait/articles/1406/27/news047.html
実際に利用した計算式は以下です。
ROI = 利益 / コスト * 100
利益 = 手動テスト実行の人件費 - 自動テスト実行の人件費
コスト = 毎月のツール利用料 + 初期開発コスト*1年目のみ発生 + (自動テストの継続的なメンテコスト - 手動テストの継続的なメンテコスト) + 1年毎に発生する中規模メンテコスト(リファクタリングなど)
欠陥にも言及したいところですが、テスト自動化導入前と導入後の検出数を推測できなかったため、データソースが確実に得られる、もしくは仮置きしやすい値に絞って計算してみました。実際下記のような計算結果を元に、どれくらい自動テストを回すとROIが出てくるのかを可視化して、ステークホルダーと認識合わせを行いました。
1日あたり5時間手動のリグレッションテストを行なっている場合
1日あたり2時間手動のリグレッションテストをおこなっている場合
当時担当していたチームではリリース前に手動でリグレッションテストをおこなっていたため、リグレッションテストにかかる時間を比較対象としています。
ROIから見るE2Eテスト自動化
- 1日あたりのテストに使っている時間が多いと自動化向き
- 1日あたり4時間以上テストを行なっているチームだと約1年続ければコストの回収が可能
- 1日あたり3時間以下だと5年以上続けないと回収ができない。 ※コスト回収のためにツールの利用料を下げるなど、他の面での対策が必要
- エンジニアの時間単価が高いと効果が高い
- テストを行うエンジニアの時間単価が高いほど、利益が大きくなるので効果が高くなる
- 今回はテストを内製化している前提で計算
- 初期開発コスト>継続的なメンテコスト
- メンテコストがコンスタントにかかってくるとROIの回収率も永続的に悪くなる
- 初期開発コストが多少かかっても2年目以降のROIの回収率は一定
- 継続的なメンテコストが最小限で済むように、初期段階でしっかり設計しておく必要がある
活用方法
今回のE2Eテスト自動化については「コスト削減」が目的ではなかったため、このようにROIを計算しての説明はマストではなかったように思います。
「自動化したらコストが削減できる」の説明として利用したというよりは、継続的にかかっていく費用が高ければROIが上がりにくい、逆に初期導入時の費用がいくら高くても、メンテナンスコストが抑えられればコストを早いうちに回収できる、など、数値を動かしながらの説明に活用してみました。
まとめ
ROIが全てというわけではないと思います。しかし、多くのE2E自動テストはきちんと設計や改善を行っていけば必ずコスト面でも効果がが出るのではないかと思いました。なかなか効果が出ない場合でも、ツール自体を変えたりしてコストのかけ方を変えるという手段もあります。今やっていることが最適なコストで運用できているのか、という目線はどこの場でも大事なのではないかと思います。そうすることで本当に時間をかけたい部分にだけ、集中することができると思うからです。
またきちんとROIが出ている(もしくは将来的には出るであろう)ことが簡単にでもステークホルダーに向けて説明できれば、初期設計やメンテナンスに多少時間がかかっていたとしても、納得感を持ってテスト自動化の推進や運用ができるのではないでしょうか。
さいごに
これは違うのでは?この方がいいのでは?自分はこうしてみた!などコメントお待ちしております!Meetyでカジュアル面談も行っておりますので、気軽にお話ししましょう!
Discussion