ROI試算式を構成する要素が分かりましたので、次は前回紹介したテスト自動化の知識体系『TABOK』と、前述の『CBAoTA』で解説している試算式のバリエーションを見ていきます。
『TABOK』では、「Simple ROI Method」「Efficiency ROI Method」「Risk Reduction ROI Method」という3つの試算式を紹介しています。
3つの試算式は『Test Automation ROI』(DiJohnInnovativeConsulting,Inc./PDF)という記事でオープンになっているので、これを参考にしながら解説していきます。
Simple ROI Methodは下記の式で表されます。分母に自動テストの初期開発コストも含んでいます。
ROI(t) = (手動テストを続けた場合の運用コスト(t) - 自動テストの初期開発コスト - 自動テストの運用コスト(t)) / (自動テストの初期開発コスト + 自動テストの運用コスト(t))
Simple ROI Methodはコストの構成要素を金額で積み上げていくもので、以下の特徴を持ったテスト自動化において有効です。
Simple ROI Methodのメリットとデメリットは下記の通りです。
Efficiency ROI MethodはSimple ROI Methodを改良したもので、金額削減のみに注力してしまうことが多いSimple ROI Methodに対して、金額ではなく、工数(時間や日数)をコストとして積み上げ、工数を改善する効率をROIとします。
ROI(t) = (手動テストを続けた場合の運用工数(t) - 自動テストの初期開発工数 - 自動テストの運用工数(t)) / (自動テストの初期開発工数 + 自動テストの運用工数(t))
Efficiency ROI Methodのメリットとデメリットは下記の通りです。
Risk Reduction ROI Methodは、テスト自動化によりテストの実行頻度とカバレッジ(自動と手動の両方)が増加した影響を加味するものです。これは「間接コスト」、つまり手動テストを実施していた場合の「欠陥コスト」と、自動テストによる低減したコストの差分を盛り込んだものです。
ROI(t) = (欠陥コストの差分(t) + 手動テストを続けた場合の運用コスト(t) - 自動テストの初期開発コスト - 自動テストの運用コスト(t)) / (自動テストの初期開発コスト + 自動テストの運用コスト(t))
Risk Reduction ROI Methodのメリットとデメリットは下記の通りです。
ここまで、『TABOK』の3つのROI試算式を見てきましたが、最後の【3】Risk Reduction ROI Methodで取り扱った「間接コスト」「欠陥コスト」について考えてみましょう。
「間接コスト」の例として、製品あるいは本番サービスで発生した障害の対応コストがあるとします。その場合、欠陥を修正するコストについては、開発部門と(分離していれば)テスト部門が負うことになりますが、クレーム対応やリコール対応に掛かるコストはカスタマーサポート部門、広報部門、営業部門など、複数に及ぶこともあります。
このような自部門外で発生するコストを除外して自部門のROI改善のみに注力すると、局所最適化になってしまう可能性があります。
また、「内部」(自部門)と「外部」(自部門外)という考え方以外に、別の変動要素を考慮する必要があります。
例えば、手動テスト、自動テストに限らず、同じメンバーで改善を進めていけば、1ケース当たりの設計コストや実装コストは下がっていくでしょう。また、逆にメンバーが入れ替わった場合は、一時的にコストが上昇することもあり得ます。
このような「外部」への影響、変動要素などを考慮する場合、CBA(Cost Benefit Analysis、費用・便益分析、*3)の考え方が参考になります。前述の『CBAoTA』の「CBA」部分のことです。
CBAとは、利益と投資のバランスを考える対象範囲を、「企業単体」から、「その企業の活動が影響を与える全ての範囲」にまで広げて、投資するかどうかを判断するものです。
また、CBAが対象とするプロジェクトは「規模」だけではなく(長期にわたるものが多いため)、「割引現在価値」という概念を取り入れています。「割引現在価値」はCBAを試算する際に不確実な将来の利益を現在の価値に割り引くものです。
現在のように低金利状態が続いている日本では、「割引現在価値」まで考慮する必要はありませんが、長期かつ広範囲なテスト自動化を検討する場合、CBAにおける「時間経過」という概念を踏まえて、ROIを試算することもできます。
このCBAは、通常、国が行う規制・施策に投資するかどうかを判断する際に用いられるものですが、前述した「欠陥コストの影響が、複数の部門にわたる場合のROI」を考える際にも有効な手法です。ぜひこの考え方も学んでみてはいかがでしょうか。
CBAについてある程度理解していただいたところで、『CBAoTA』の2つの試算式を紹介します。
ROI(t) = テスト自動化による利益 / テスト自動化のコスト
ROI(t) = Δ手動テストに対するテスト自動化の利益 / Δ手動テスト対するテスト自動化のコスト = ΔB(t) / ΔC(t)
『CBAoTA』では、試算式1にある、他と比較のない「テスト自動化による利益」と「テスト自動化のコスト」を正確に試算するのは難しいとしております。そのため、以降、試算式2をブレークダウンして解説しています。
ΔB(t) = Σ(自動テストによる固定費の削減分)(t) + Σ(n2回手動テストを実施した場合の変動費)(t) - Σ(n1回自動テストを実施した場合の変動費)(t) ΔC(t) = Σ(自動テストによる固定費の増加分)(t) + Σ(自動テストの開発費) - Σ(手動テストの開発費) + Σ(自動テストのメンテナンスコスト) (n1/N) n1 = 自動テストの実行回数 n2 = 手動テストの実行回数 N = メンテナンスが必要になるまでの自動テストの平均実行回数
この式では時間軸と共に、テスト自動化による改善と増加コスト、自動テストと手動テストの実行頻度の違い、実行回数とは異なる頻度で発生する自動テストのメンテナンスコストが考慮されています。
前述の『TABOK』の【2】Efficiency ROI Methodを金額ベースにして精緻化したものと考えてよいでしょう。
次回は、上記『CBAoTA』の試算式2の要素を詳細に解説するとともに、この式を使ってスモークテスト(初期テスト)とGUIテストを自動化するROIを実際に求めていきます。
太田健一郎
大手SIerで開発支援ツール開発SEを経験した後、商用・オープンソースを使った各種の自動テスト、パフォーマンステスト、インスペクションをお客さまプロジェクトで担当。その後、大手Webサービス会社でJenkinsを始めとするCIやテスト自動化、パフォーマンスチューニングなどを担当。
現在、株式会社SHIFTでテスト自動化やCIの導入、トレーニングを担当。その他、コミュニティ活動として、JaSST実行委員会、テスト自動化研究会などに所属し、公私ともにテスト自動化を始めとする自動化に情熱を燃やしている。
Copyright © ITmedia, Inc. All Rights Reserved.