Дозвольте мені підійти до цього з іншого боку. Що відбувається, коли ви розробляєте нетривіальну програму без одиничних тестів? Якщо у вас хороший відділ контролю якості, одне з перших, що відбудеться, - це те, що ви виявите, що у вас є велика кількість повідомлених проблем. Чому, тому що ви не перевіряли те, що ви зробили, і вважали, що це буде працювати, і тому, що ви не приділяли такої великої уваги вимогам, і ваша заявка їх не відповідає. Назад до дошки для малювання, щоб переписати та виправити. Тепер ви зробили виправлення та знайшли цілий новий набір проблем, тому що перед тим, як натиснути на QA, ви не мали змоги перевірити, чи не виправились ваші виправлення. Кінцевий термін Oops настав і пішов, і керівництво порушено.
Ситуація гірша, якщо у вас немає хорошого відділу контролю якості, оскільки тоді користувачі знайдуть помилок, і не тільки те, що зробить вашого начальника нещасним, це може поставити виробниче середовище на коліна, і 100-ти, а то й тисячі людей опиняться на колінах зупинка, поки ви виправляєте помилки, які тестування блоку запобігло б. Це НЕ вдалий вибір кар’єри.
Тепер припустимо, що цей ковбойський підхід триває роками? Тепер кожна зміна, навіть тривіальна, здається, викликає нові несподівані проблеми. Мало того, але багато речей, які ви хотіли б зробити, щоб програма працювала краще, ви не можете зробити, тому що вони занадто ризиковані або занадто дорогі або обидва. Таким чином, ви ставите патчі на патчі, роблячи систему все більш складною, гнучкішою та складнішою у використанні.
Користувачі починають ставити під сумнів ваші оцінки часу, оскільки вони все більше і більше збільшуються, і важко пояснити їм, що система стала такою складною безладдям, важко знайти, де навіть зробити зміни, і ще важче переконатися, що вони не роблять ' t зламати щось інше.
Я працював у такому місці, де після десятирічної розробки практично нічого, що ми хотіли зробити, щоб виправити реальні проблеми, не вдалося зробити, тому що ми не могли сказати, хто з сотень налаштованих клієнтських програм порушиться. Початкові розробники дуже були "тестовими одиницями, нам не потрібні тени для смердючих одиниць". Кожен, хто стежив за ними, постраждав завдяки короткозорості.
Без тестових одиниць програмне забезпечення є більш гнучким і займає більше часу як для початкового розвитку, так і для обслуговування. Чому б вам не хотілося робити одиничні тести? Час, який ви витратите на написання тесту, буде набагато меншим, ніж час, який ви витратили на виправлення проблем, які ви мали б знайти раніше (чим раніше виявлена помилка, тим менше часу потрібно на її виправлення) та проблем, яких ви б взагалі уникли, написавши тести По-перше, це дає краще розуміння вимог перед тим, як розпочати кодування.