Скажімо, що ви хотіли вручну протестувати свою програму щоразу, коли ви її розгортали. Як би ви зробили це?
Ну, для початку ви можете скласти список усіх речей, які хочете перевірити, щоб потім не забути тестувати щось. Тоді ви, мабуть, пишете кроки для кожного тесту, щоб переконатися, що ви робили їх кожен раз однаково. Якби ви не переконалися, що використовуваний процес тестування був послідовним, ваші результати не були б послідовними.
Отже, тепер, коли у вас є список тестів, які вам потрібно виконати, ви відкрили веб-переглядач, прочитали перші кроки тесту, виконали їх і зробили б помітку про результат. Ви повторите цей процес для кожного тесту у своєму списку.
Кількість тестів, які ви виконуєте, буде продовжувати зростати в міру зростання вашої програми та у міру виявлення нових помилок. Звичайно, ви б обмежилися виконанням цих тестів на людській швидкості, зробивши їх досить повільними.
Іронія тут полягає в тому, що механічно переглядаючи список операцій, ви здійснюєте обчислення. Ви просто робите це повільніше, ніж, скажімо, комп'ютер.
Це, серед багатьох інших вагомих причин, тому ми пишемо одиничні тести: вони дозволяють комп’ютеру робити обчислення, щоб не потрібно.
Я можу запустити комплексний тестовий пакет досить швидко, щоб його часто використовувати під час розробки, а не лише раз на тиждень перед розгортанням. Це дозволяє мені швидше виявляти помилки, економлячи час і гроші.
Я навіть можу написати тести, які прогнозують поведінку системи, а потім написати таку поведінку (яку я вже знаю, що вона правильна, тому що я лише перевірив її), процес, відомий як Test Driven Development.