テスト実行自動化のコストを考える
テスト自動化を導入するプロジェクトが増えていますが、効果判定の結果失敗と判断されるケースがあります。誤った効果判定で、手動テストに立ち戻ることはテストエンジニアの疲弊を招くことになります。
1. よく言われる自動化のコスト
テストの自動実行の大きな目的の一つにテスト実行コストの最適化があります。
自動掃除ロボット、スマートフォンなどに搭載されている音声アシスタント機能……などが「AI」を活用した身近な例として挙げられることが多いと思います。しかし、「AI」機能を活用している製品は思い浮かべられても、実際にどのようなものなのかを認識されている方は少ないように思います。
テスト自動化の導入を進める際、自動テストと手動テストのコストを比較し、どれくらいの実行回数でコストメリットが得られるかが判断基準の一つとなります。
コストの比較では、以下のような項目のコストを算出し、何回テストサイクルを実施すれば自動化の効果が得られるかを比較し、自動化の導入の可否を判断したり実際の効果判定を行ったりします。
- ■ テスト自動化にかかるコスト
・ツールの初期コスト
・ツール購入・導入費
・トレーニング費
等 - ■ ツールの導入後コスト
・スクリプト実装/メンテナンス工数
・自動テスト実行工数 - ■ テスト手動実行にかかるコスト
・テストケースメンテナンス工数
・手動テスト実行工数
・今後のテストサイクル数
アジャイルによるソフトウェアの開発ではイテレーション毎に開発成果物が生成されることになり、イテレーション毎にテストスクリプトの実装/メンテナンス(少量であれ)が必要となります。
コストの比較を行った結果、いつまでたっても実装/メンテナンス工数が計上されるため、場合によっては手動でのテスト実行と同等以上のコストがかかる状態となり、コスト面での説明が出来ず自動化を諦めることとなるかもしれません。
2. 本当の自動化のコスト
そもそも、このコスト計算は正しいのでしょうか?
テスト実行の自動化のメリットとして以下のような点が上げられます。
・テストを頻繁に行える
・リソースの有効利用が出来る
・開発物に自信が持てる
テストの自動実行を行うことで得られるメリットをコストとして計算することで、より実情に近いコストの比較が可能になると考えられます。
例えば、通常の手動テストでは成果物完成後、テスターによる手動テスト実行の開始までタイムラグが発生します。テスト実施者が他のテストを行っているため手が空いていなかったり、退勤間際のため翌日以降にテスト開始が遅れたりして、開発者がテストのフィードバックを受け取るのが随分後になったりします。
また、手動テスト実施中、通常開発者は別の成果物の開発を行っており、手動テストのフィードバックとして不具合が存在した場合、その修正は現在行っている開発の後となり、着手物は増えるが成果物の完成が結果的に遅くなることもあります。
ある程度、テストの自動化が行われており、CI/CDのパイプラインに組み込まれていれば成果物完成後、自動でテストが実行され(自動実行の時間がかかるとはいえ)手動での実行よりはるかに早い時間で、開発者はそのフィードバックを得ることが可能になります。
手動テスト開始の待ち時間が減り、より早くテストのフィードバックを得られることで成果物の完成が早まるのであれば、それらもテスト自動化によるメリットになるのではないでしょうか。
3. まとめ
一度、テストの自動化によって変わるフロー全てからコストを算出し、本当のコストメリットを計算してみてはいかがでしょうか?
テストの自動化にはメリット・デメリットがあり、プロジェクトにあった導入を検討する必要があります。
テスト自動化の導入について興味がございましたら、お気軽にご相談ください。