はじめに
テストの自動化に興味があるので、メリット・デメリットを自分なりにまとめました。
書かないこと
- CI/CDについて(まだ理解していないため)
- テストの種類、方法
テストを自動化するメリット
プロダクトが改修に強くなる
改修しても既存機能が 正しく動作することを保証できる。リグレッションテストをいつでも簡単に実施でき、デグレードの発生を防げる。リファクタリングできる
テストコードがあることで、安全に内部ロジックを変更でき可読性・保守性が高いコードを維持できる。
テストを自動化していないことによる弊害
開発するモチベーションが下がる
スクショ保存、エビデンス作成という単調かつ自動化できる作業を手作業でやることになる。
⇨なるべく開発しないように務める。また、工夫してわかりやすいロジックを組むことをしなくなる。プロダクトの本質がわからなくなる
テストを行う工数がかかるため、根本から対応せず、その場凌ぎのコードで対処する。または、なるべく運用で回避してもらう方向でユーザーと調整することになる。
特定の作業を効率化するためのプロダクトなのにも関わらず、プロダクトのために非効率的な運用を求められてしまう。
⇨プロダクトの本質とは何かわからなくなる。保守性・可読性の低いコードが量産される。
改修する→改修部分以外の今ある仕様を変更したくない⇨既存ロジック変更時のテストしなくては→テストの工数かけたくない→小手先の修正になる→可読性の低いコードが生まれる→次見たときに何をやっているかわからないコードが増える。
最後に
ウォーターフォール型だろうがアジャイル型だろうが関係なくなるべくテストは自動化したいです。メリット>デメリットとなるケースが多いのではないかと考えています。
銀の弾丸ではないと認識はしていますが、テストを自動化することによるデメリットはまだわかりません。筆者にとってそれは未知の世界です。
テストを自動化するデメリットやCI/CDを理解してテストの自動化との関連性をまたいづれ書きたいです。