自動化のメリットがある一方、反対に導入をしていない環境もあります。
デメリットもいくつかありますのでご紹介します。
・手動テストと比較すると多額の初期費用が発生する
手動テストの場合、テストエンジニアの稼働コストが主なコストになります。
しかし自動化では、テストコードを作成する・ツールを使いこなすための学習・どのくらいの範囲を自動化するのか・自動化することでどういった効果を求めるかといったような手動テストに比べるとかかる工数・費用・効果が異なります。
そのために導入の際には費用対効果を考慮して導入する必要性が出てきます。
・長期的かつ継続的な保守・運用が必須
自動化の導入をすることですぐに効果を得られるわけではありません。
長期間、継続的に運用することでやっと効果を発揮するものになります。
長期間の運用にはそのための工数を割り当てる必要性が出てきます。
また開発が終了したらそこで一緒に終わるものでもありません。
導入後にメンテナンス・アップデートをする必要があります。
テストの対象に新機能が追加されればそれに応じて新機能に対してのテスト内容を追加しなければいけないためです。
自動化を導入した時の状態をそのままにしてしまえば、うまく利用することができずに結局手動のテストを実施する。
もしくは再度テストコードを大幅に更新するといった手間が増えるため、それに対してのコストや工数を割かなければいけないといった状態になる可能性も出てきます。
導入の際には保守・運用の体制についても考えなければいけません。
https://www.veriserve.co.jp/asset/approach/column/test-automation/test-automation04.html
・テスト内容が間違っていたとしてもわからない
自動化する際にテストコードを書いていきます。
その際に書き手がテスト観点とはまったく違うことを書いていた場合でもその処理が合っていれば止まることなくテストを実行し続けてしまいます。
この間違いを見つけ出すことは容易ではなく、リリースされてから気づくことも少なくありません。
自動化して実行しているテストにはヒューマンエラーがなくともテストコードを書いている段階でヒューマンエラーが発生してしまうこともあるということです。
・その通りにしかテストを実施できない
自動テストではテストコードの通りに実行をしていきます。
そのテストコードがあっていれば問題ありません。
しかし自動テストの対象外であった場合は正しく判断ができません。
検出できないということになります。
手動のテストでは人間が判断するため、ちょっとした違和感やテストケースに書いていない暗黙的なものも処理することができます。
自動のテストはいわば言われたことのみしかできないため、人間的な暗黙の解釈を判断できません。
・自動テストの向き・不向きがある
原理的に手動で実行しなければいけないようなテストや自動での操作を防止する仕組みのテストでは自動化することができません。
できないという以外にも不向きなテストも存在します。
何度も実施しないようなテスト・仕様の変更が流動的に行われ頻繁に修正が入るというようなテストでは自動化で確認することも可能ではありますが、随時更新をかけたりと開発者の負担が増えてしまうため手動で実行することが望ましいと言えます。
自動化のテストにはできない・向かないテストというものが存在しています。
つまり全てのテストを自動化するということはできず、手動のテストに頼らないといけない場面が必ずあるということです。