機能テストは非常に重要です。はい、彼らは書くのに時間がかかりますが、あなたが正しい機能テストを書いているなら、彼らはそれ以上の価値があるでしょう。
アプリケーションで機能テストを自動化するのには、いくつかの正当な理由があります。
- Webサイトに新しい機能が追加されると、その新しい機能に加えられた変更がサイトの他の機能を損なうかどうかをすぐに知ることができます。
- アプリケーションがどのように実行され、連携してビジネス要件を達成するかについての文書化された知識。
- サードパーティライブラリを更新するときは、それを更新して機能テストスイートを実行し、何かが壊れていないかどうかを確認できます。すべてのページを自分で確認する代わりに、コンピューターに実行してもらい、壊れたすべてのテストのリストを提供することができます。
- 負荷テスト!何千もの同時ユーザーがすべて同時にサイトにアクセスすることをシミュレートでき、サイトがどこで遅くなり、プレッシャーの下で座屈するかを確認できます。サイトがクラッシュしたという深夜の電話を受ける前に、Webサイトの動作を確認できます。
- 機能テストを手動で行うには時間がかかります。はい、ケースを書くのに時間がかかりますが、製品を出荷する前に完了しなければならない500ページのテストを含むバインダーと一緒に座っていなければならなかった場合、自動テストが必要です!
- テスト文書はすぐに古くなってしまいます。新機能が追加されたら、必ずマスターテストドキュメントを更新する必要があります。誰かがいくつかのテストをスキップすると、突然「完了してテスト済み」のページにバグが忍び寄ることになります。私は現在そのような環境で仕事をしていますが、それは悪夢です。
最後に、はい、これらのケースを書くには時間がかかりますが、それらを書くことに誇りを持つべきです。あなたのコードが動作し、そこにある他のすべての機能で動作することは疑う余地がありません。QAが来てバグがあると言ったら、それを修正し、それをテストスイートに追加して修正されたことを示し、それが二度と起こらないようにします。
それはあなたの安全策です。誰かが入ってストアドプロシージャをハイジャックし、彼らのコードで動作するように小さな変更を加えると、プロセス内の他の3つの機能が壊れていることがわかります。締め切り前の夜ではなく、その夜にキャッチします!
システムの重要な機能のみの機能テストを作成する場合。それはあなたに全体像を与えないだろうし、それはバグがこっそり通過できるようになります。必要なのは、システムクリティカルではないが、システムクリティカルな機能と間接的に相互作用する小さな機能を1つ追加するだけで、バグが発生する可能性があります。