アプリケーションをデプロイするたびに手動でアプリケーションをテストしたいとしましょう。どうやってそれをやりますか?
まず、テストするすべてのもののリストを作成して、後で何かをテストすることを忘れないようにします。次に、各テストの手順を書いて、毎回同じ方法で実行したことを確認します。使用したテストプロセスが一貫していることを確認しなかった場合、結果は一貫しません。
したがって、実行する必要のあるテストのリストが用意できたので、ブラウザーを開き、最初のテストの手順を読んで実行し、結果をメモします。リスト内のテストごとにこのプロセスを繰り返します。
実行するテストの数は、アプリケーションの成長や新しいバグの発見に応じて増え続けます。もちろん、これらのテストを人間の速度で実行することに制限され、かなり遅くなります。
ここで皮肉なのは、操作のリストを機械的にステップスルーすることで、あなたがコンピューティングしているということです。あなたは、例えばコンピューターがやるよりもゆっくりとそれをしているだけです。
これは、他の多くの正当な理由の中でも、ユニットテストを作成する理由です。コンピューターが計算を行うため、ユーザーはテストを行う必要がありません。
包括的な単体テストスイートは、展開する前に週に一度だけではなく、開発中に頻繁に使用するのに十分な速さで実行できます。これにより、エラーをより迅速に検出でき、時間と費用を節約できます。
私もシステムの挙動を予測し、テストを書くことができ、その後(私はちょうどそれをテストしたので、私はすでに知っている正しい)その振る舞い、テスト駆動開発と呼ばれるプロセスを記述します。