テスト自動化ROI試算式の構成要素と5つの例。そしてCBAとは何か:テスト自動化のROIを計算してみよう(2)(1/2 ページ)
テスト自動化の導入理由や効果測定をROIという観点で説明できるように、テスト自動化のROIの概念から実際の計算式までを解説する連載。今回は、テスト自動化ROI試算式の構成要素を解説し、5つの試算式の例を出しながらCBA(Cost Benefit Analysis)とは何かを解説。
連載第1回の「テスト自動化の3つの目的とROIの必要性、定義」では、テスト自動化のROIは下記のようにして求められることを解説しました。
ROI(t) = (手動テストを続けた場合の運用コスト(t) - 自動テストの運用コスト(t)) / (自動テストの初期開発コスト + 自動テストの運用コスト(t))
第2回となる今回は、各コストを分解した構成要素とその構成要素を使った試算式を解説します。
テスト自動化ROI試算式の構成要素
まず、ROI試算式の構成要素について、『The Return on Investment(ROI)of Test Automation』(PHARMACEUTICAL ENGINEERING/PDF/以下『ROIoTA』)と『Cost Benefits Analysis of Test Automation』(Software Quality Methods, LLC./PDF/以下『CBAoTA』)の解説例を見ていきます。
『ROIoTA』で解説している構成要素
『ROIoTA』ではROIの構成要素として下記を挙げています。
要素 | 説明 | 手動テストの運用コスト | 自動テストの開発コスト | 自動テストの運用コスト | テストで直接的に発生するコスト | テストで間接的に発生するコスト |
---|---|---|---|---|---|---|
テストケース数 | 実行する総テストケース数(手動、自動両方) | ○ | ○ | ○ | ||
自動化対象のテストケース数 | 自動化を予定しているテストケース数 | ○ | ○ | ○ | ||
サイクル当たりの実行テストケース数 | 各サイクルで実行するテストケース数 | ○ | ○ | ○ | ||
テストサイクル数 | ROIの評価対象期間でのテストサイクル数(週ごと、ビルドごと、リリースごとなど) | ○ | ○ | ○ | ||
テストエンジニアの時間単価 | テストエンジニアの平均時間単価 | ○ | ○ | |||
欠陥コスト | 本番環境での欠陥に対する予想対応コスト | ○ | ○ | ○ | ||
手動テストの実行・分析時間 | 1つの手動テストの実行と結果の分析にかかる平均時間 | ○ | ○ | |||
ツールの取得、検証、ライセンスコスト | テストツールに掛かるコスト | ○ | ○ | |||
ツールのトレーニングコスト | ツールの習得に必要なトレーニングコスト | ○ | ○ | |||
テスト実行マシンのコスト | 手動テスト環境とは分離した自動テスト用のマシン環境のコスト | ○ | ○ | ○ | ||
自動テスト環境の構築コスト | 自動テストの環境が使用できるまでのコスト | ○ | ○ | |||
自動テストの開発時間 | テストスクリプトの開発に必要な時間 | ○ | ○ | ○ | ||
自動テストの実行時間 | 自動テスト1ケース当たりの平均実行時間 | ○ | ○ | |||
自動テストの結果分析時間 | 1サイクルの自動テストの実行結果の平均分析時間 | ○ | ○ | |||
自動テストの平均メンテナンス時間 | 1サイクルの自動テストを実行するためにメンテナンスにかかる平均時間 | ○ | ○ | |||
夜間実行の実施 | 昼間だけではなく夜間にも実行するか? | ○ | ○ |
表の「手動テストの運用コスト」「自動テストの開発コスト」「自動テストの運用コスト」は各単位時間当たりのコストと実行時間を積み上げていけば、算出できます。
「欠陥コスト」の扱いが問題
表の「テストで間接的に発生するコスト」で○が付いている「欠陥コスト」は「本番環境での欠陥に対する予想対応コスト」なので、発生する欠陥の頻度や重要度によって異なります。自動化された後の運用コストの値は、同一の「規模」「特性」を持ったソフトウェアからのベンチマークで計ることが多いですが、正確な予想値を見積もるのが困難な場合があります。障害の数がどれだけ減るかは、この「欠陥コスト」をはじめ、さまざまな変動要素が絡むためです。このため、簡易的なテストの運用改善に完結したROI試算では「欠陥コスト」は使用しない場合もあります。
また後述しますが、手動テストを自動化する場合、手動テストを行う人員が、別のアプリケーションのテストも担当していることを受け、その人員のコストを「固定費」として計上することがあります(手動テストが外注で、そのまま自動化して置き換えられるようなシナリオを除きます)。
手動テストを行う人員コストが固定費としてそのまま存続する場合、テスト自動化のROIを「アプリケーション」だけを対象として考えるなら、ROIは手動テストと自動テストのコストから算出できます。一方で、「テストを行う部門」を対象として考えた場合、上記「欠陥コスト」のような「間接コスト」を考慮しないと、正確なROIを算出できないため、「テストを行う部門」としてはコストを改善できない可能性があります。
『CBAoTA』で解説している要素
『CBAoTA』では、自動テストのコストを、「テストの実行回数に依存しない固定費」と「テストの実行回数に依存するコスト」に分類しています。ただし「テストの実行回数に依存しない固定費」といっても、ROIの評価対象期間である時間tには依存します。
例えば、(一括もしくは減価償却費とする)自動テストツールを取得するコストや、自動テストツールのライセンスを更新するコスト、サポートコストなどは時間tに依存します。
- 「テストの実行回数に依存しない固定費」
- ハードウェア(追加およびアップグレードも含む)
- 自動テストで使用するソフトウェア(テストウェア)のライセンス
- テストウェア(*1)のサポートコスト
- テストウェアの接続ライセンス
- 自動テスト環境の設計と実装
- 自動化環境のメンテナンス
- 自動化スクリプト作成ツール
- 自動テストツールと自動テスト環境のライセンス
- ツールのトレーニング
- ツールの導入とアップデート
- 「テストの実行回数に依存するコスト」
- 自動テストのためのテスト設計
- 自動テストのテストケースの実装
- 自動テストのメンテナンス
- テストオラクル(*2)の作成
- 自動テストの実行
- テスト結果の分析
- 障害報告
- テスト実行の報告
- *1:テストウェア(testware):テストプロセスを通じて作成される、テストの計画、設計、実行に不可欠なもの。例えば、ドキュメント、スクリプト、入力、期待結果、セットアップとクリーンアップの処理手順、ファイル、データベース、環境、その他、テストで使用する付加的なソフトウェアやユーティリティなど(『ソフトウェアテスト標準用語集(日本語版)Version 2.2.J03』(International Software Testing Qualifications Board用語集作業班/PDF)より)
- *2:テストオラクル(test oracle):テスト対象となるソフトウェアの実行結果と、比較する期待結果のソース。オラクルとは、実在する(ベンチマーク用の)システム、他のソフトウェア、ユーザーマニュアル、個人の専門知識のことであるが、コードであってはならない(『ソフトウェアテスト標準用語集(日本語版)Version 2.2.J03』(International Software Testing Qualifications Board用語集作業班/PDF)より)
「実行回数に依存するコスト」は、構成要素のタスクごとに厳密にコストの割り当てができている組織であれば、各タスクのコストを積み上げることによって求めることができます。
一方、タスクごとに厳密にコストを割り当てられないケースもあります。しかしこの場合も同一の試算式を使うことで、詳細に分解していない合算値からでも、ある程度、妥当性があるROIを出すことができます。これは複数の施策を比較する上で有効です。そのため、タスクに割り当てているエンジニアの単価を積み上げることから始めても問題はありません。
次回、連載第3回の試算例でも単価を積み上げて計算します。
一方、手動テストでも自動テストでも、以下のように共通に実施する要素もあります。
- 共通要素
- テスト対象の分析
- テスト計画
- 基本テスト設計
- 手動テストも含めた障害報告
- テスト結果のマネジメント向け報告
自動テストを行う場合、これら「共通要素」は手動テストを行う際より精緻化する必要があるため、自動テストに移行する際、一時的にコストは上昇します。しかし長期的には、精緻化によって発生する「プロセス改善効果によるコスト削減」で相殺されることが多いため、ROI試算には通常組み込まれません。ただし、実際にテスト自動化を開始すると、手動テストをそのまま自動化することは少ないです。
また、上記「共通要素」の精緻化に伴い、テスト設計やテストケース実装を改善したり、テストカバレッジが増加したりする可能性が高まります。そのため、自動化による実測値は試算値通りにならない可能性もあります。
大きく試算値と実測値に乖離(かいり)があった場合は、「自動化に伴い発生したテストプロセス改善」の存在を確認します。その上で、次にテスト自動化のROIを試算する際には、必要に応じて「自動化に伴い発生したテストプロセス改善」をROIの構成要素として計算に組み込むことを推奨します(特に、事前にこれら構成要素の変化を正確に見積もることは難しいため、最初はROI試算に組み込まない方がいいでしょう)。
手動テストと自動テストのどちらで実施するが、「コストが上昇、もしくは低下する」要素として、『CBAoTA』では以下を挙げています。
- テスト環境のメンテナンス(自動化によってトータルコストが上昇する場合もある)
- テスト実行
- テスト結果の分析
- 障害報告
- テスト結果の報告
- テストデータの生成
テスト自動化で利益つまりコスト削減になるものとしては、下記を挙げています。
- テストの実行
- 業務時間後のテスト実行
次回は、この『CBAoTA』で挙げられている要素を使いながら、ROIを試算していきます。
Copyright © ITmedia, Inc. All Rights Reserved.