ROIの試算例から見る、日本でテスト自動化が進まない理由:テスト自動化のROIを計算してみよう(終)(2/2 ページ)
テスト自動化の導入理由や効果測定をROIという観点で説明できるように、テスト自動化のROIの概念から実際の計算式までを解説する連載。今回は、ROI試算式の詳細を解説し、実際に、この試算式でスモークテストとGUIテストを自動化する際のROIを求め結果を考察します。
GUIテスト自動化におけるROIの試算
テストを内製化し、手動と自動でエンジニア単価が同一の場合
次に、下記の条件でGUIテスト自動化におけるROIを求めてみましょう。
- 新規のソフトウェアでテストも一から作成する
- 試算対象期間「t」としては12カ月(250日)と24カ月(500日)を選ぶ
- 手動テスト、自動テストのいずれのエンジニア単価も1年当たり960万円=1カ月当たり80万円=1日当たり4万円=1時間当たり5,000円とする
- 手動テストの実行では、1年当たり10人のフルタイムのメンバーが、自動テストでは1年当たり1人のメンバーが必要
- 自動テストでは、オープンソースの無料ツールを使い、ハードウェア分の90万円の固定費が減価償却3年(36カ月)で必要
- 手動テストの開発には1年当たり5人、自動テストの開発には1年当たり15人必要
- 自動テストでは、1年後に、1年当たり1人分のメンテナンスコストが発生する
- 自動テストでは、オープンソースの無料ツールを使い、ハードウェア分の90万円の固定費が減価償却3年(36カ月)で必要
■利益
Δ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(円)
■コスト
ΔC(t) = Σ(自動テストによる固定費の増加分)(t) + Σ(自動テストの開発費) - Σ(手動テストの開発費) + Σ(自動テストのメンテナンスコスト) (n1/N)
Σ(自動テストによる固定費の増加分)(t) = 3年間のハードウェアのコスト * (経過年数 / 3) Σ(自動テストの開発費) = 1年当たりに必要な自動テストのエンジニアの人数 * 1年当たりのエンジニア単価 Σ(手動テストの開発費) = 1年当たりに必要な手動テストのエンジニアの人数 * 1年当たりのエンジニア単価 Σ(自動テストのメンテナンスコスト) = 1年後に発生する自動テストのメンテナンスコスト = 1年後のメンテナンスに必要なエンジニアの人数 * 1年当たりのエンジニア単価
具体的な値を代入すると、下記のようになります。
ΔC(12カ月) = (900,000 * (1/3)) + (15 * 9,600,000) - (5 * 9,600,000) + 0 = 96,300,000(円) ΔC(24カ月) = (900,000 * (2/3)) + (15 * 9,600,000) - (5 * 9,600,000) + 1 * 9,600,000 = 106,200,000(円)
■ROI
ROI(t) = ΔB(t) / ΔC(t)
ROI(12カ月) = 86,400,000 / 96,300,000 = 0.897(→損益分岐点に達しない) ROI(24カ月) = 172,800,000 / 106,200,000 = 1.627(→63%リターン)
手動テストが外注で、自動テストを内製化し、手動と自動でエンジニア単価が別の場合
スモークテストのときと同じように「手動テストの実行を外注している」と仮定し、下記のように条件を変更して再度ROIを求めてみましょう。
- 試算対象期間「t」としては36カ月(750日)を追加する
- 「スモークテストのときよりも、手動テストの実行と分析、報告に高いスキルが必要になる」と仮定し、手動テストの実行エンジニア単価を1年当たり720万円=1カ月当たり60万円=1日当たり3万円=1時間当たり3,750円に変更する
- 手動テスト設計のエンジニア単価は1年当たり960万円=1カ月当たり80万円=1日当たり4万円=1時間当たり5000円のままとする
- 「スモークテストのときよりも、自動テストの設計・実装に高いスキルが必要になる」と仮定し、自動テストのエンジニア単価は1年当たり1200万円=1カ月当たり100万円=1日当たり5万円=1時間当たり6,250円に変更する
■利益
ΔB(12カ月) = 0 + (10人 * 7,200,000 * 1) - (1人 * 9,600,000 * 1) = 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 * (12/36)) + (15 * 120,000,000) - (5 * 9,600,000) + 0 = 132,300,000円 ΔC(24カ月) = (900,000 * (24/36)) + (15 * 120,000,000) - (5 * 9,600,000) + 9,600,000 = 142,200,000円 ΔC(36カ月) = (900,000 * (36/36)) + (15 * 120,000,000) - (5 * 9,600,000) + 9,600,000 = 142,500,000円
■ROI
ROI(12カ月) = 62,400,000 / 132,300,000 = 0.472(→投資期間) ROI(24カ月) = 124,800,000 / 142,200,000 = 0.878(→損益分岐点に達しない) ROI(36カ月) = 187,200,000 / 142,500,000 = 1.317(→32%リターン)
特に人件費の高い先進国では、ツールやハードウェアのコストよりも人件費がROIに大きく影響を与える
この条件では、「スモークテストよりテストレベルが上がるため、手動テスト実行のエンジニア単価を上げる」と同時に、「自動テストの設計、実装も難易度が上がる」と仮定し、自動テストを内製化するエンジニア単価も上げました。エンジニア単価の変更に伴いROIと損益分岐点が大きく変化しています。
この結果から、「特に人件費の高い先進国では、ツールやハードウェアのコストよりも人件費がROIに大きく影響を与える」ことが分かると思います。逆に、「ツールやハードウェアへの投資が人件費の削減につながる」のでしたら、積極的にツールやハードウェアに投資した方がROIが高まるともいえます。
テスト自動化の提案や企画の際に、試算式を活用してみよう
本連載では「テスト自動化でROIを試算する理由」から、「テスト自動化のROIの構成要素と複数の試算式」、そして「試算の実際」を解説してきました。
テスト自動化に限らず、ソフトウェア開発ではさまざまな外部要素や変動要素が絡むため、精確なROIを求めるのは難しいですが、今回の試算例でも分かるように、簡易的な試算であれば最小限の構成要素から試算できます。
テスト自動化の提案や企画の際には、定量的な交渉条件として、本連載で学んださまざまなROIの試算式を読者が活用することを楽しみにしています。
著者プロフィール
太田健一郎
大手SIerで開発支援ツール開発SEを経験した後、商用・オープンソースを使った各種の自動テスト、パフォーマンステスト、インスペクションをお客さまプロジェクトで担当。その後、大手Webサービス会社でJenkinsを始めとするCIやテスト自動化、パフォーマンスチューニングなどを担当。
現在、株式会社SHIFTでテスト自動化やCIの導入、トレーニングを担当。その他、コミュニティ活動として、JaSST実行委員会、テスト自動化研究会などに所属し、公私ともにテスト自動化を始めとする自動化に情熱を燃やしている。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
テスト自動化の歴史と今後、良い/悪い事例〜システムテスト自動化カンファレンス2013レポート
テスト自動化を開発の“武器”にするための3つのポイントや、“自動化”の良い事例、悪い事例など、テストの現場を「進化させる」知見が多数紹介されたカンファンレンスの模様をレポートする。DevOps時代、テスト自動化はどうあるべきか?:ビジネス目標を見据えたテスト設計が肝!「DevOps時代のテスト自動化カンファレンス 冬の陣」開催
DevOpsの実践で肝となるソフトウェアテストの自動化。しかし@ITの読者調査でも50%以上が「テスト環境に課題あり」と回答した。これにどう対応すれは良いのだろうか? カンファレンス登壇者の言葉にヒントを探る。Selenium WebDriverでWebアプリのテストが変わる(前編):iPhone/Android含むブラウザ自動テストの最終兵器Selenium WebDriverとは
Chrome、Firefox、Internet Explorer、Opera、Android、iOSといったブラウザに対応し、Java、C#、Python、Rubyが使えるWebテスト自動化ツールの3つの特徴と環境、実装方法を簡単に紹介フレームワークで実践! JavaScriptテスト入門(5):Capybara-Webkit+Cucumber+Sinon.JSでJavaScriptのテストはここまで変わる
RubyでWebKitをヘッドレス化するフレームワーク、受け入れテストの記述が日本語でできるツール、スタブやモック、スパイが使えるライブラリを組み合わせたテスト方法などを紹介。Railsで目指せ、情熱エンジニア(8):実例で学ぶRailsアプリのテスト方法
前回はRailsで使われるテストフレームワークをご紹介しました。今回は具体的なWebアプリを例に、簡単なテストを使ったリファクタリングについて解説しますAndroidアプリ開発テスト入門(2):Android SDKでビジネスロジックのテストを自動化するには
Android開発におけるビジネスロジックについて解説し、Android SDKのテストフレームワークの概要と使い方、テストの書き方を紹介します特集:受け入れ検査の自動化手法の考察:Windowsアプリの受け入れテストを自動化しよう
単体テストの次は、エンド・ユーザーへの納品時の受け入れテストも自動化したい? それを実現する手法を紹介する。- 特集:UIオートメーションによる自動UIテスト:WindowsアプリのUIテストを自動化しよう!
Windowsアプリのユーザー・インターフェイス、どうやってテストしていますか? 単体テストで徹底的に自動化して開発効率アップ! - 連載:ASP.NET MVC入門【バージョン3対応】最終回 テスト自動化でアプリケーションの品質向上
M、V、Cに明確に分離されたアプリ構造は従来に比べ単体テストも実施しやすい。テストの基礎からモック・ライブラリ活用までをまとめる PHP開発者のためのテストのすゝめ(1):ユニットテストはなぜ必要なの?
開発の全工程の中で、あまり人気がないのがテスト工程だ。ソフトウェアの品質を証明するためのテストは、なぜ低く見られてしまうのかEclipseプラグインq4eでカンタンMaven入門(前編):ビルドやテスト、依存ライブラリ追加は自動化できる!
ビルドやテスト、レポート作成、依存ライブラリ追加を自動化するMavenと、その操作を簡単にするEclipseプラグインを紹介- 第1回Androidテスト祭りレポート:Android開発で泣かないための「テスト」の重要性
その自由度の高さや多様性ゆえに、さまざまな課題を抱える、Androidアプリ開発の“テスト”に焦点を当てたイベントの模様を紹介します UX Clip(28):JavaScriptのテストを開発工数に入れてもらうには?
Webアプリの大規模化とフロントエンド領域の拡大により、JavaScriptのテストの必要性が高まっている。数ある高機能なテストフレームワークをどう使いこなせば、高速かつ高品質な開発が可能になるのだろうか。