Так, ви повинні перевірити весь ланцюжок подій як одиницю. Отже, у вашому прикладі з процедурою, яка вставляється в таблицю і викликає декілька тригерів, ви повинні написати тестові одиниці, які оцінюють процедуру для різних входів. Кожен тест одиниці повинен пройти або провалитись залежно від того, повертає він правильні значення, правильно змінює стан таблиць, створює правильну електронну пошту і навіть надсилає правильні мережеві пакети, якщо він призначений для подібних дій. Коротше кажучи, кожен ефект, який має одиниця, повинен бути перевірений.
Ви правильні, що проектування тестів на блоці вимагає певної роботи, але більшу частину цієї роботи потрібно виконати для тестування пристрою вручну, ви просто зберігаєте роботу, необхідну для тестування пристрою, щоб, коли в майбутньому було проведено зміну тестування може бути таким же ретельним і значно простішим.
Зміна даних робить тестування складнішим, але це не робить тестування менш важливим і фактично збільшує значення тестування одиниці, оскільки більшість труднощів потрібно продумати лише один раз, а не кожен раз, коли відбувається зміна в апараті. Збережені набори даних, вставки / оновлення / видалення, які є частиною налаштування / завершення, і вузькообладнана операція можуть бути використані для полегшення цього. Оскільки питання не стосується бази даних, деталі будуть різними.
Не існує порогового рівня складності на високому або нижньому кінці, який не повинен перешкоджати тестуванню або тестуванню одиниць. Розглянемо ці питання:
- Ви завжди пишете безкоштовний код про помилку?
- Чи завжди у маленьких одиницях немає помилок?
- Чи гаразд у великого підрозділу помилка?
- Скільки помилок потрібно, щоб спричинити катастрофу?
Припустимо, ви починаєте нову роботу і покладаєте завдання оптимізувати невелику функцію, яка використовується в багатьох місцях. Вся заява була написана та підтримується працівником, якого ніхто навіть не пам’ятає. У підрозділах є документація, що описує нормальну очікувану поведінку, але мало іншого. Якого з них ви б краще не знайшли?
- В додатку немає тестування одиниць. Після внесення змін ви можете зробити тестування вручну на самому пристрої, щоб переконатися, що він все ще повертає очікувані значення в документації. Потім ви можете розгорнути його на виробництво, схрестити пальці і сподіватися, що він працює (зрештою, ви завжди пишете безкоштовний код про помилку, і оптимізація в одному блоці ніколи не може вплинути на іншу) або витратити величезну кількість часу, вивчаючи, як працює вся програма працює, так що ви можете вручну протестувати кожен блок безпосередньо або опосередковано.
- Тестові підрозділи у всій програмі, які виконуються автоматично щодня або на вимогу. Вони перевіряють не тільки нормальні вхідні значення та очікуваний відгук, але й аномальні значення та очікувані винятки, які виникають. Ви вносите зміни та запускаєте тестовий набір одиниць для програми відразу, побачивши, що три інші блоки більше не повертають очікуваних результатів. Дві з них є доброякісними, тому ви налаштовуєте одиничні тести, щоб врахувати це. Третя вимагає ще однієї невеликої настройки і невеликого тесту на новий блок. Після внесення змін весь набір тестів проходить успішно, і ви з впевненістю розгортаєте зміни.