テスト自動化のROIの理論と実践

9,197 views

Published on

Asian Automation Alliance ~自動化を語り合おう!(2014/06/28)

で発表させて頂いた資料です。

Published in: Technology
0 Comments
25 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
9,197
On SlideShare
0
From Embeds
0
Number of Embeds
4,604
Actions
Shares
0
Downloads
61
Comments
0
Likes
25
Embeds 0
No embeds

No notes for slide

テスト自動化のROIの理論と実践

  1. 1. Asian Automation Alliance テスト自動化の ROI の理論と実践 太田 健一郎 @oota_ken テスト自動化研究会
  2. 2. アジェンダ  テスト自動化と ROI  テスト自動化の ROI の構成要素  ROI の試算式のバリエーション  ROI の試算式の詳細と実際
  3. 3. 対象とする方  テスト自動化を推進する方  テスト自動化の定性的な効果は理解しているが、定量的な説明 がうまくできない方
  4. 4. 本日お持ち帰り頂けること  テスト自動化の ROI を試算する際に検討すべき構成要素を列挙 できるようになります  プロジェクトや目的に応じて複数の ROI の試算式を検討できる ようになります  実際に自分のプロジェクトでも ROI を試算できるようになりま す
  5. 5. 本日お話しないこと  ROI の試算とは直接関係ないテスト自動化のアンチパターンや ベストプラクティス  特定のテストレベルやテストタイプに依存する ROI の話題  ROI を試算した後にテスト自動化を成功裏に導入するノウハウ
  6. 6. テスト自動化と ROI
  7. 7. テスト自動化における ROI の必要性  テスト自動化における問題点  https://sites.google.com/site/testautomationresearch/info/testautomation_prob  Q4. リソース不足  自動化を計画できる時間が全く無い、あるいはかなり少ない 63 %  自動化のトレーニングが計画されない 37%  自動化に掛かるコストが予算化されない 35%  Q7. 自動テストシステム自体の品質が低い  自動化スクリプトの保守にコストが高い 44%  期待した ROI に届かない 34%
  8. 8. テスト自動化における ROI の必要性  世にある定性的な説明  変更毎にすぐに障害を検知できる  夜間にコストほぼゼロで無人実行できる  もしくはツールベンダーの主張  三回実行すれば元が取れる  → 提案や予算を取るには説得力に欠ける  → 短期のリターンを求められ、炎上の可能性も高い
  9. 9. テスト自動化における ROI の必要性  いつリターンが得られるのか?  どれほどのコストを掛けたらどれほどの利益が得られるのか?  他にもっと投資効率の良い代替策はないか?  →ROI を試算して、複数の施策を比較検討する
  10. 10. テスト自動化の 3 つの目的と ROI の関係 from TABOK  コストの削減  繰り返し実行可能で再利用できる自動テストや、従業員の工数削減 、欠陥の早期の発見と修正、再作業の削減によって長期間のコスト 削減となる  効率の向上  テスト実行時間とスケジュールの短縮によって、テストの効率を向 上させる  ソフトウェア品質の向上  対象のソフトウェアとハードウェアのテスト実行カバレッジを増加 させることにより、リリース前の潜在欠陥のリスクとコストを低減 する
  11. 11. テスト自動化の 3 つの目的と ROI の関係 from TABOK  効率の向上 → コストの削減  ソフトウェア品質の向上 → コスト削減  最終的に「コスト」の削減に還元できる  → コストベースの定量評価に換算できる  →ROI で評価できる TABOK (Test Automation Body of Knowledge) テスト自動化の知識体系 http://www.automatedtestinginstitute.com/home/index.php?option=co
  12. 12. テスト自動化における ROI の定義  会計学上の定義  ROI = ( 当期営業利益 + 減価償却費 ) / ( 株主資本 + 有利子 負債 ) * 100  抽象化した定義  ROI = 利益 / 投資額 * 100  テスト自動化における定義  ROI(t) = 利益 (t) / 投資額 (t) * 100  利益 (t) = 手動テストを続けた場合の運用コスト (t) - 自動テスト の運用コスト (t)  投資額 (t) = 自動テストの初期開発コスト + 自動テストの運用コ スト (t)
  13. 13. テスト自動化の ROI の構成要素
  14. 14. テスト自動化の構成要素 自動テスト固有・共通 固定・変動 自動テスト固有のコスト テストの実行回数に非依存なコスト テストの実行回数に比例するコスト 自動・手動テスト共通のコスト 両方で発生するが顕著な違いはないコスト 両方で発生するが違いがあるコスト
  15. 15. テストの実行回数に非依存なコスト ( ただし、時間 t には依存 )  ハードウェア ( 追加及びアップグレードも含む )  自動テストで使用するソフトウェア ( テストウェア ) のライセンス  テストウェアのサポートコスト  テストウェアの接続ライセンス  自動テスト環境の設計と実装  自動化環境のメンテナンス  自動化スクリプト作成ツール  自動テストツールと自動テスト環境のライセンス  ツールのトレーニング  ツールの導入とアップデート
  16. 16. テストの実行回数に比例するコスト  自動テストのためのテスト設計  自動テストのテストケースの実装  自動テストのメンテナンス  テストオラクルの作成  自動テストの実行  テスト結果の分析  障害報告  テスト実行の報告
  17. 17. 手動・自動テストの両方で発生するが顕著な違いがないコスト  テスト対象の分析  テスト計画  基本テスト設計 ( 自動テスト非依存 )  手動テストも含めた障害報告  テスト結果のマネジメント向け報告
  18. 18. 手動・自動テストの両方で発生するが違いがあるコスト  テスト環境のメンテナンス  自動化によってトータルコストが上昇する場合もある  テスト実行  テスト結果の分析  障害報告  テスト結果の報告  テストデータの生成
  19. 19. 実際の試算では  テストの実行回数に非依存なコスト  ハードウェア、ソフトウェア・ライセンスなど明確に価格が分かる ものはコストとして積み上げる  テストの実行回数に比例するコスト  厳密にタスク分解してコストが積み上げられるならば、タスク毎に コストを積み上げる  厳密なタスク分解とコスト割り当てが難しければ、概算であればエ ンジニアの単価から始めても問題ない  同じ構成要素と基準で施策を比較検討する方が重要
  20. 20. ROI の試算式のバリエーション
  21. 21. TABOK の 3 つの試算式
  22. 22. TABOK の 3 つの試算式  Simple ROI Method  Efficiency ROI Method  Risk Reduction ROI Method
  23. 23. Simple ROI Method  式  ROI(t) = ( 手動テストを続けた場合の運用コスト (t) - 自動テスト の初期開発コスト - 自動テストの運用コスト (t)) / ( 自動テスト の初期開発コスト + 自動テストの運用コスト (t))  メリット  金額ベースで積み上げていくために ROI の試算の内訳についてマ ネジメント層とコミュニケーションが取りやすい  デメリット  テストエンジニアの単価が明確ではない場合、適用出来ない  余りに計算を単純化しすぎている  テスト自動化によりプロジェクトの予算を圧縮できるように見え る
  24. 24. Efficiency ROI Method  式  ROI(t) = ( 手動テストを続けた場合の運用工数 (t) - 自動テスト の初期開発工数 - 自動テストの運用工数 (t)) / ( 自動テストの 初期開発工数 + 自動テストの運用工数 (t))  メリット  金額の削減のみに注力することを避けられる  テストエンジニアの単価が明確でなくても、適用出来る  デメリット  工数の削減のみに注力するために、 同一条件下では Simple ROI Method よりも ROI の値は低くなる  金額とテストエンジニアの単価の問題以外は Simple ROI Method と同様の問題を抱える
  25. 25. Risk Reduction ROI Method  式  ROI(t) = ( 欠陥コストの差分 (t) + 手動テストを続けた場合の運 用コスト (t) - 自動テストの初期開発コスト - 自動テストの運 用コスト (t)) / ( 自動テストの初期開発コスト + 自動テストの 運用コスト (t))  メリット  手動テストと自動テストの単純なコスト比較ではないテスト自 動化の効果を ROI に盛り込める  デメリット  欠陥コストの低減を正確に見積もるのは難しい  テストカバレッジやテストタイプの増加は手動テストのままで も実施できるため、テスト自動化を ROI 向上の理由として訴求 しにくくなる
  26. 26. ROI と CBA  外部性  どこまでを内部とするか?  プロジェクト、部門、会社、取引先  変動要素  メンバーの成熟度と入れ替わり、ツールの変更  メンバーの生産性が上記により変動  割引現在価値  今の 100 円と 1 年後の 100 円の価値は現在から見ると異なる  CBA (Cost Benefit Analysis, 費用便益分析 )  事業の社会貢献度を分析する手法  主として公共公益事業で用いられている  公害対策など企業単独の ROI を追求した場合の問題に対応  外部性と変動要素、現在価値を考慮
  27. 27. Cost Benefits Analysis of Test Automation の試算式
  28. 28. Cost Benefits Analysis of Test Automation の試算式  式  ROI(t) = Δ 手動テストに対するテスト自動化の利益 / Δ 手動 テストに対するテスト自動化のコスト = ΔB(t) / ΔC(t)  ΔB(t) = Σ( 自動テストによる固定費の削減分 )(t) + Σ(n2 回手 動テストを実施した場合の変動費 )(t) - Σ(n1 回自動テストを 実施した場合の変動費 )(t)  ΔC(t) = Σ( 自動テストによる固定費の増加分 )(t) + Σ( 自動テ ストの開発費 ) - Σ( 手動テストの開発費 ) + Σ( 自動テストの メンテナンスコスト ) (n1/N)  n1 = 自動テストの実行回数  n2 = 手動テストの実行回数  N = メンテナンスが必要になるまでの自動テストの平均実行回数
  29. 29. ROI の試算式の詳細と実際
  30. 30. 各要素の解説  自動テストによる固定費の削減分  テストの実行回数に依存しないテスト計画やテスト設計など、手動テストと自 動テストで共通に発生するコストで改善された差分  通常は大きな変動がない、もしくは、一時的なコスト上昇が改善効果で相殺さ れるために、 0 になることが多い  n1 = 自動テストの実行回数  n2 = 手動テストの実行回数  実行頻度とそれに伴い発生する各コストを考慮  従量課金の環境で自動テストを実施する場合、自動テストでも実行の変動費が かかる
  31. 31. 各要素の解説  N = メンテナンスが必要になるまでの自動テストの平均実行回数  スクリプトのメンテナンスコストに影響を与える  オブジェクトマップなどの技術によって N を上げることができ る  スクリプトの構造化、データ駆動などは N 毎のメンテナンスコ ストを下げる  自動テストによる固定費の増加分  テストツールのライセンスなど自動テスト固有のもの  手動テストの開発費  手動テストに対する自動テストの相対的な初期投資を算出するために 、マイナスする
  32. 32. スモークテストの自動化での ROI の試算
  33. 33. 状況設定:テストは内製でエンジニアは同一単価  1 日に 1 回ビルドを実施し、テストを実行 ( 週に 5 回 )  手動テストでは設計に 5 日、実行に 2 時間かかる  手動テストは半分のみを 1 日 1 時間で実行し、残り半分を次の日に 1 時間実行する ( ビ ルド毎には半分しか実行しない )  自動テストは設計と実装に 15 日かかり、実行はオンプレミスの自動であるため、コスト ゼロとする  自動テストには 10 万円の追加ハードウェアが必要で、減価償却期間は 3 年とする  自動テストは 25 回の実行に 1 回、 1 日のメンテナンスが必要となる  試算対象期間 t としては 6 ヶ月 (125 日 ) と 18 ヶ月 (375 日 ) を選ぶ  手動テスト、自動テストのいずれのエンジニアの単価も 80 万円 / 月、 960 万円 / 年、 4 万円 / 日、 5,000 円 / 時とする
  34. 34. ROI の試算  利益  ΔB(t) = Σ( 自動テストによる固定費の削減分 )(t) + Σ(n2 回手動テス トを実施した場合の変動費 )(t) - Σ(n1 回自動テストを実施した場合 の変動費 )(t)  Σ( 自動テストによる固定費の削減分 )(t) = なし  Σ(n2 回手動テストを実施した場合の変動費 )(t) = 1 時間あたりのエ ンジニアの単価 * 手動テストの 1 日の実行時間 * 日数  Σ(n1 回自動テストを実施した場合の変動費 )(t) = 自動テストの実 行コスト * 日数  ΔB(6 ヶ月 ) = 0 + (5,000 * 1 * 125) - (0 * 125) = 5,000 * 125 = 625,000 ( 円 )  ΔB(18 ヶ月 ) = 0 + (5,000 * 1 * 375) - (0 * 375) = 5,000 * 375 = 1,875,000 円 ( 円 )
  35. 35. ROI の試算  コスト  ΔC(t) = Σ( 自動テストによる固定費の増加分 )(t) + Σ( 自動テストの開発費 ) - Σ( 手動テストの 開発費 ) + Σ( 自動テストのメンテナンスコスト ) (n1/N)  Σ( 自動テストによる固定費の増加分 )(t) = 3 年間のハードウェアのコスト * ( 経過年数 / 3) = 3 年間のハードウェアのコスト * ( 経過月数 / 36)  Σ( 自動テストの開発費 ) = 自動テストの設計と実装の日数 * 1 日あたりのエンジニアの単価  Σ( 手動テストの開発費 ) = 手動テストの設計と実装の日数 * 1 日あたりのエンジニアの単価  Σ( 自動テストのメンテナンスコスト ) = 1 日あたりのエンジニアの単価 * 自動テストの実行 日数 / メンテナンスが必要になるまでの自動テストの平均実行回数  ΔC(6 ヶ月 ) = 100,000 * (6/36) + 15 * 40,000 - (5 * 40,000) + 40,000 * (125/25) = 616,666 ( 円 )  ΔC(18 ヶ月 ) = 100,000 * (18/36) + 15 * 40,000 - (5 * 40,000) + 40,000 * (375/25) = 1,050,000 ( 円 )  ROI  ROI(6 ヶ月 ) = 625,000 / 616,666 = 1.013 ( 損益分岐点 )  ROI(18 ヶ月 ) = 1,875,000 / 1,050,000 = 1.786 (80% リターン )
  36. 36. 手動テストは外注で、自動テストを内製化、手動と自動でエンジニアは別単価  現在スモークテストの手動テストは外部ベンダーに外注してい る  手動テストの設計と自動テスト設計・実装のエンジニアの単価は 80 万円 / 月、 960 万円 / 年、 4 万円 / 日、 5,000 円 / 時のままと する  手動テストの実行エンジニアの単価を 40 万円 / 月、 480 万円 / 年 、 2 万円 / 日、 2,500 円 / 時に変更する  試算対象期間 t としては 36 ヶ月 (750 日 ) を追加する
  37. 37. 再度 ROI 試算  ΔB(6 ヶ月 ) = 0 + (5,000 * 1 * 125) - (0 * 125) = 2,500 * 125 = 312,500 ( 円 )  ΔB(18 ヶ月 ) = 0 + (5,000 * 1 * 375) - (0 * 375) = 2,500 * 375 = 937,500 円 ( 円 )  ΔB(36 ヶ月 ) = 0 + (5,000 * 1 * 750) - (0 * 375) = 2,500 * 750 = 1,875,500 円 ( 円 )  ΔC(6 ヶ月 ) = 100,000 * (6/36) + 15 * 40,000 - (5 * 40,000) + 40,000 * (125/25) = 616,666 ( 円 )  ΔC(18 ヶ月 ) = 100,000 * (18/36) + 15 * 40,000 - (5 * 40,000) + 40,000 * (375/25) = 1,050,000 ( 円 )  ΔC(36 ヶ月 ) = 100,000 * (36/36) + 15 * 40,000 - (5 * 40,000) + 40,000 * (750/25) = 1,700,000 ( 円 )  ROI(6 ヶ月 ) = 312,500 / 616,666 = 0.507 ( 投資期間 )  ROI(18 ヶ月 ) = 937,500 / 1,050,000 = 0.89 ( 損益分岐点に達しない )  ROI(36 ヶ月 ) = 1,875,500 / 1,700,000 = 1.103 (10% リターン )
  38. 38. 比較のグラフ
  39. 39. 試算結果分析  日本の現状のエンジニア単価をあてはめてみると、スモークテ ストでも即効性は高くない  ROI を高めるためには、 Risk Reduction ROI Method のように欠陥 対応コストを盛り込む必要がある  アメリカのようなエンジニアの単価が高い国ではコスト削減の ための自動化だけでも ROI は高い
  40. 40. GUI テストの自動化での ROI の試算
  41. 41. 状況設定:テストは内製でエンジニアは同一単価  新規のソフトウェアでテストも一から作成する  手動テストの開発には 5 人 / 年、自動テストの開発には 15 人 / 年かかる  自動テストでは 1 年後に 1 人 / 年のメンテナンスが発生する  手動テストの実行では 10 人 / 年のフルタイムのメンバーが、自動テスト では 1 人 / 年のメンバーが必要となる  自動テストではオープンソースの無料ツールを使い、ハードウェア分の 90 万円の固定費が減価償却 3 年で必要となる  試算対象期間 t としては 12 ヶ月 (250 日 ) と 24 ヶ月 (500 日 ) を選ぶ  手動テスト、自動テストのいずれのエンジニアの単価も 80 万円 / 月、 960 万円 / 年、 4 万円 / 日、 5,000 円 / 時とする
  42. 42. ROI の試算  利益  ΔB(t) = Σ( 自動テストによる固定費の削減分 )(t) + Σ(n2 回手動テストを実施した場合の変 動費 )(t) - Σ(n1 回自動テストを実施した場合の変動費 )(t)  Σ( 自動テストによる固定費の削減分 )(t) = なし  Σ(n2 回手動テストを実施した場合の変動費 )(t) = 1 年あたりに必要な手動テスト実行の人数 * エンジ ニアの 1 年あたりの単価 * 年数  Σ(n1 回自動テストを実施した場合の変動費 )(t) = 1 年あたりに必要な自動テスト実行の人数 * エンジ ニアの 1 年あたりの単価 * 年数  ΔB(12 ヶ月 ) = 0 + (10 * 9,600,000 * 1) - (1 * 9,600,000 * 1) = 86,400,000   ( 円 )  ΔB(24 ヶ月 ) = 0 + (10 * 9,600,000 * 2) - (1 * 9,600,000 * 2) = 172,800,000 ( 円 )
  43. 43. ROI の試算  コスト  ΔC(t) = Σ( 自動テストによる固定費の増加分 )(t) + Σ( 自動テストの開発費 ) - Σ( 手動テスト の開発費 ) + Σ( 自動テストのメンテナンスコスト ) (n1/N)  Σ( 自動テストによる固定費の増加分 )(t) = 3 年間のハードウェアのコスト * ( 経過年数 / 3  Σ( 自動テストの開発費 ) = 1 年あたりに必要な自動テストのエンジニアの人数 * 1 年あたりのエンジニ アの単価  Σ( 手動テストの開発費 ) = 1 年あたりに必要な手動テストのエンジニアの人数 * 1 年あたりのエンジニ アの単価  Σ( 自動テストのメンテナンスコスト ) = 1 年後に発生する自動テストのメンテナンスコスト = 1 年後の メンテナンスに必要なエンジニアの人数 * 1 年あたりのエンジニアの単価  ΔC(12 ヶ月 ) = (9,000,000 * (1/3)) + (15 * 9,600,000) - (5 * 9,600,000) + 0 = 99,000,000 ( 円 )  ΔC(24 ヶ月 ) = (9,000,000 * (2/3)) + (15 * 9,600,000) - (5 * 9,600,000) + 9,600,000 = 111,600,000 ( 円 )  ROI  ROI(12 ヶ月 ) = 86,400,000 / 96,300,000 = 0.897 ( 損益分岐点に達しない )  ROI(24 ヶ月 ) = 172,800,000 / 106,200,000 = 1.627 (63% リターン )
  44. 44. 手動テストは外注で、自動テストを内製化、手動と自動でエンジニアは別単価  手動テストの設計のエンジニアの単価は 80 万円 / 月、 960 万円 / 年 、 4 万円 / 日、 5,000 円 / 時のままとする  スモークテストの時よりも自動テストの設計・実装に高いスキルが必 要になると仮定し、自動テストのエンジニアの単価は 100 万円 / 月、 1200 万円 / 年、 5 万円 / 日、 6250 円 / 時に変更する  スモークテストの時よりも手動テストの実行と分析、報告に高いスキ ルが必要になると仮定し、手動テストの実行エンジニアの単価を 60 万円 / 月、 720 万円 / 年、 3 万円 / 日、 3750 円 / 時に変更する  試算対象期間 t としては 36 ヶ月 (750 日 ) を追加する
  45. 45. 再度 ROI 試算  ΔB(12 ヶ月 ) = 0 + (10 * 7,200,000 * 1) - (1 * 9,600,000) = 62,400,000 ( 円 )  ΔB(24 ヶ月 ) = 0 + (10 * 7,200,000 * 2) - (1 * 9,600,000 * 2) = 124,800,000 ( 円 )  ΔB(36 ヶ月 ) = 0 + (10 * 7,200,000 * 3) - (1 * 9,600,000 * 3) = 187,200,000 ( 円 )  ΔC(12 ヶ月 ) = (900,000 * (1/3)) + (15 * 120,000,000) - (5 * 9,600,000) + 0 = 132,300,000 ( 円 )  ΔC(24 ヶ月 ) = (900,000 * (2/3)) + (15 * 120,000,000) - (5 * 9,600,000) + 9,600,000 = 142,200,000 ( 円 )  ΔC(36 ヶ月 ) = (900,000 * (3/3)) + (15 * 120,000,000) - (5 * 9,600,000) + 9,600,000 = 142,500,000 ( 円 )  ROI(12 ヶ月 ) = 62,400,000 / 132300,000 = 0.472 ( 投資期間 )  ROI(24 ヶ月 ) = 124,800,000 / 142,200,000 = 0.878 ( 損益分岐点に達しない )  ROI(36 ヶ月 ) = 187,200,000 / 142,500,000 = 1.317 (32% リターン )
  46. 46. 比較のグラフ
  47. 47. 試算結果分析  テストレベルが高くなると、自動化の難易度もあがるため、同 一期間での ROI は低くなる  ROI にはツールやハードウェアのコストよりも人件費が大きく 効いてくる  逆に、人件費の高いアメリカや日本では、ツールやハードウェアへ の投資によって、人件費を下げることができるため、ツールやハー ドウェアは ROI が高い  例  複数サーバーによる分散ビルドや分散自動テスト  SSD やマルチコアによる開発者の待機時間削減 ( 残業費削減 )
  48. 48. ROI の試算からのフィードバック  テスト自動化以外の別の施策も ROI 分析してみる  手動テストでの改善  ニアショア化  オフショア化  既存オペレーションの改善  テスト自動化内でも施策を変更  自動化対象のテストレベル・テストタイプを変更  商用ツールから OSS  オンプレミスからクラウド  一度、試算式を確立できれば比較検討は容易
  49. 49. まとめ  テスト自動化の ROI の試算に必要な構成要素をお話しました  厳密に要素分解できない場合、例のようにエンジニアの単価から始 めても問題ありません  複数の試算式をお話しました  状況と目的に応じて使い分けますが、施策を比較検討する場合には 同一の試算式を使うようにします  試算の例を紹介しました  皆様のテスト自動化の検討でも是非使ってみて下さい
  50. 50. さらに詳しく  @IT テスト自動化の ROI を計算してみよう  全三回の連載  第 1 回  http://www.atmarkit.co.jp/ait/articles/1406/03/news152.html  第 2 回  http://www.atmarkit.co.jp/ait/articles/1406/13/news016.html  第 3 回  本日のお話をより詳しく、順を追って解説する連載です
  51. 51. 参考文献  テスト自動化における問題点  https://sites.google.com/site/testautomationresearch/info/testautomatio  TABOK (Test Automation Body of Knowledge)  http://www.automatedtestinginstitute.com/home/index.php?option=com_  The Return on Investment (ROI) of Test Automation  http://www.arcondis.com/assets/files/pdf/publikationen/ROI%20of%20Tes  Cost Benefits Analysis of Test Automation  http://www.softwarequalitymethods.com/papers/star99%20model%20pape
  52. 52. 大募集 SHIFT では、以下を大 募集しております  Test Automator  Test Service Engineer  Test Tool Engineer  Test Architect

×