テストツール導入、それって投資対効果(ROI)どうなの?

## 初めに
この記事は[commmune Advent Calendar 2023](https://qiita.com/advent-calendar/2023/commmune)の15日目として投稿されました

## テストツール導入、それって投資対効果どうなの?
世の中には自動でテストケース作成してくれる、自動テストを管理してくれる等のSaaS系テストツールが多くあります。

例えば、開発現場で「テストツール導入したい」と意見が出たとしても決裁者に伝える時にはどうしても数値を伝える必要があります。今回、そういうシーンを仮定してテストツール導入の投資対効果を算出してみました。

## 算出のための手段
ビジネスシーンではよく投資対効果の指標としてROIが採用されるので今回ROIの数式を基に考えてみます。
参考: https://www.innovation.co.jp/urumo/roi/

### ROIについて
ROI（Return on Investment）は、企業やプロジェクトにおける投資の収益性を評価する指標の一つです。ROIは、投資にかかるコストと、その投資によって得られる利益との比率を計算して表現されます。

ROIは以下の数式で表されます。

$$ROI = \left( \frac{得られる利益 - 投資コスト}{投資コスト} \right) \times 100 \$$

ここで、

- \(得られる利益\): 投資によって得られる利益や収益の合計
- \(投資コスト\): 投資にかかるコストや費用の合計

です。ROIが正の値であれば、投資<利益と言うことができるので"投資が成功"となります。

### 投資コスト
次にテストにおける投資コストについて考えていきます。

| 項目                           | 説明                                               |
|--------------------------------|----------------------------------------------------|
| ツールのライセンス費用         | テストツールの使用にかかるライセンス料          |
| 導入コスト     | ツールの導入と既存プロセスへの統合にかかる費用 |
| サポートと保守料金             | テストツールのサポートと定期的な保守料金       |
| データの移行コスト             | 既存データやテストシナリオを新しいツールに移行にするのにかかる費用 |
| 既存プロセスに統合するコスト　　　　　　　　　| 既存プロセスにテストツール仕様を組み込む際に生じる費用 |
| トレーニングコスト             | テストツール使用を習得するための費用   |
| ツールの運用コスト          | ツール運用のための費用        |

以上が考えた投資コストです。主に`ツールのライセンス費用(年額)`が多くを占める想定ですが、プロジェクトやチームにとっては`既存プロセスに統合するコスト`や`トレーニングコスト`も同等の金額になる可能性もあるため全て書き出しました。

### 得られる利益
最後にテストツールによって得られる利益について考えてみます。

| 項目                             |説明                                       |
|----------------------------------|------------------------------------------------|
| 自動化によるテスト時間短縮             | これまでのテスト時間とツール導入後のテスト実行想定時間を比較し時間の削減率を費用計算 |
| バグの早期発見による開発コスト削減 | バグの早期発見がもたらすコスト削減の費用計算 |
| 品質向上によるサポートコスト削減 | 品質向上によりサポートコスト削減の費用計算 |
| リリース後の不具合修正コスト削減 | リリース後の不具合修正コスト削減の費用計算 |
| 品質向上による顧客満足度向上     | 顧客からのフィードバックやリピートビジネスの増加などの評価 |

以上が考えた得られる利益です。テストツール導入の際には`自動化によるテスト時間短縮`に目が行きがちですがテストツールによって発見された不良があると仮定するならば更に大きな利益をもたらしてくれる事になります。

また、`リリース後の不具合修正コスト削減`については、品質コストの'外部失敗コスト'を想定しています。外部失敗コストについては[こちらの記事](https://zenn.dev/devopsinqa/articles/13427cf0f5f75a)の説明がわかりやすかったです。

## 試しに考えてみる
算出式のあらかたの項目を洗い出すことができたので今後はテストツールを導入すると仮定してROIがどれぐらいになるのか試算してみようと思いま。範囲を1ヶ月に設定して算出します。

### 架空の自動テストツールを導入しよう
実際に世にあるテストツールで算出しようと思いましたが値段を公表していない企業が多いので今回はChatGPTに架空の自動テストツールである**Quantum Tester**を作成してもらいました。

これを現プロジェクトに導入すると仮定して算出していきます。

#### Quantum Tester 料金表
| プラン名                | 月額料金 (円) | 主な機能                                   | サポート                   |
|-------------------------|---------------|--------------------------------------------|----------------------------|
| **スタータープラン**    | 110,000       | 基本的な自動化テスト機能                  | 基本サポート                |
| **プロフェッショナルプラン** | 275,000       | 自動化テスト + パフォーマンステスト機能 | 拡張サポート                |
| **エンタープライズプラン**   | 550,000       | 全機能（自動化、パフォーマンス、セキュリティ、CI/CD統合） | 優先サポート、カスタマイズ可能 |

### 投資コスト
次にこのテストツールの投資コストを算出していきます。
正確な算出は難しいのでChatGPTで概算を出しもらいそれを自分の方で修正しました。

現プロジェクトの環境は以下の想定です
- エンジニア 5人×5チーム 合計25人
- QA(ツール保守・管理) 1人 
- 現状、E2Eのリグレッションテストは手動テストでしか行っていない
- テストツールを導入して浮いた時間で他の開発にリソースを割きたい

#### Quantum Tester 導入に伴う投資コスト

| 項目                           | 金額 (円)                                      |
|--------------------------------|-------------------------------------------------|
| ツールのライセンス費用         | 550,000 (エンタープライズプランの月額料金)       |
| 導入コスト                     | 100,000 (導入と既存プロセスへの統合にかかる費用) |
| サポートと保守料金             | 55,000 (QA1人がテストツール保守にかける費用)   |
| データの移行コスト             | 200,000 (既存データやテストシナリオを新しいツールに移行する際の費用) |
| 既存プロセスに統合するコスト | 80,000 (既存プロセスにテストツール仕様を組み込む際の費用) |
| トレーニングコスト             | 250,000 (チームメンバーへのトレーニングにかかる費用) |
| 時間とリソースの損失           | 100,000 (前提として、ツール導入に伴う損失がないと仮定) |

**合計金額: 1,335,000円**

### 得られる利益
こちらについてはChatGPTがデタラメな数字を出してきたので具体的な数字を当てはめながら計算していきます。

#### 自動化によるテスト時間短縮
テストツール導入によりエンジニア全員が開発工数の5%を削減できたと仮定する。エンジニアの月費用を30万円と仮定し全員で25人いるのでツール導入による効果は375,000円

$$300,000 \, \text{円} \times 0.05 \times 25 = 375,000  \text{円}\$$

#### バグ早期発見による開発コスト削減
Quantum Testerのエンタープライズプランは開発コスト削減に特化していないため0円

#### 品質向上によるサポートコスト削減
これは品質が上がった事によってサポート部隊が今までかけていた工数を削減できた時の費用を指している。サポート部隊1人の月費用を30万円としてサポート工数の10パーセントを削減できたとか仮定すると300,000円

$$300,000 \, \text{円} \times 0.10 = 30,000 \, \text{円}\$$

#### リリース後の不具合修正コスト削減
リリース後の不具合対応が減少し、エンジニア全員の開発工数の10％を削減できたと仮定すると750,000円

$$300,000 \, \text{円} \times 0.10 \times 25 = 750,000 \, \text{円}\$$

#### 品質向上による顧客満足度向上
Quantum Tester導入による直接的効果は見込めないので0円

#### 合計
$$375,000 \, \text{円} + 0 + 30,000 \, \text{円} + 750,000 \, \text{円} + 0 = 1,155,000 \, \text{円}\$$

**1,155,000円**

### ROI
投資コストと得られる利益を導出することができたので最後にROIを出してみます。

$$ \text{ROI} = \left( \frac{1,155,000 - 1,335,000}{1,335,000} \right) \times 100 $$
$$ \text{ROI} = \left( \frac{-180,000}{1,335,000} \right) \times 100 $$
$$ \text{ROI} \approx -13.48\% $$

ROIは大体-13％となりました。
**残念ながら負の値を取ってしまったのでQuantum Tester導入は見送られそうですね笑**

## 振り返り
今回Quantum Tester導入にはなりませんでしたが以下の対応をすると結果が変わる可能性があります。

- エンタープライズプランではなくスタータープランにしてみる
- 月換算の考え方ではなく年換算で再計算する
- ツール導入によるエンジニアの削減コストを上げる

エンジニアの削減コストやサポートコストについてはツールの試用期間中に算出できると良いですね。

## 終わりに
いざテストツール導入しようと考えても決裁者にどのように伝えれば良いのか迷っている時に数値で見せるのは効果的だと思います。テストツール導入に悩むQAにこの記事が届いてくれれば幸いです。