Найкраща рентабельність інвестицій - це найчастіше тестування, яке може виявити цей тип помилок.
Блок тестування повинен знайти більшість помилок, які є лише одним методом, або, можливо, один компонент. Він виявляє помилки, які зазвичай можна виправити за лічені хвилини із загальним часом обороту менше однієї години. ДУЖЕ дешеві тести, ДУЖЕ дешеві помилки, щоб знайти та виправити! Якщо ці помилки перетворили його на інтеграційне тестування, поворот може бути схожим на день (тестові запуски часто трапляються щоночі), припускаючи, що помилка не закривається іншою помилкою; плюс, ймовірно, буде введено більше помилок, оскільки інший код був написаний проти початкового коду помилок; плюс будь-яке оновлення вплине на більше фрагментів коду. Крім того, пускати більше помилок означає, що потрібно зробити ще багато тестових запусків, перш ніж тестування інтеграції може бути завершено Бідне тестування одиниць часто лежить в основі тривалого, обтяжливого і дорогогоцикли тестування інтеграції. Пропуск тестування блоку може вдвічі зменшити час розробки, але тестування триватиме щонайменше 3 - 4 рази довше, весь проект збільшиться вдвічі, і ви все одно будете мати нижчу якість, ніж якщо б ви одиниці перевірених IME.
Тестування інтеграції - це, як правило, найдавніше фактичне тестування, яке може знайти помилки інтеграції (хоча процеси перегляду можуть знайти деякі помилки до написання програмного забезпечення або до того, як код перейде на перевірку). Ви хочете знайти ці помилки, перш ніж почати показувати програмне забезпечення користувачеві або випускати, оскільки виправлення помилок в останній момент (або гаряче виправлення!) Дуже дороге. Ви не зможете знайти цих помилок раніше, коли їх було б дешевше виправити, оскільки для інтеграції вам потрібно кілька робочих компонентів (за визначенням). Інтеграційне тестування сповільнюється, коли помилки, які не мають нічого спільного з взаємодіючими фрагментами (як-от незначні друкарські помилки), потрібно спочатку вирішити, перш ніж цікавіші тестування навіть зможуть розпочатись.
Тестування прийняття користувача гарантує, що програмне забезпечення робить те, що хоче клієнт (хоча, сподіваючись, він залучається весь час, знизити ризик знайти величезний розрив між очікуванням та реальним програмним забезпеченням в кінці проекту - ДУЖЕ дорого) !). До того часу, як ви перейдете на цю стадію тестування, ви дійсно повинні вірити, що більшість помилок у вашому продукті, порівняно з характеристиками, принаймні, вже знайдено. Тестування прийняття користувача стосується більше того, щоб продукт відповідав потребам замовника, ніж про те, щоб не було помилок порівняно з технічними умовами.
Якби я збирався автоматизувати лише один тип тестування, це було б одиничне тестування. Інтеграційні тести можна робити вручну і робили таким чином багато великих компаній протягом багатьох років. Вручну потрібно зайняти роботу, яку можна виконувати за допомогою комп'ютера знову і знову, і набагато дорожче для більшості проектів, не кажучи вже про нудні та схильні до помилок, але це можна зробити. Тести приймання користувачів часто є ручними, оскільки користувачі часто не знають, як автоматизувати свої тести, поки тестують те, що їх цікавить. Блок тестів ОБОВ'ЯЗКОВО бути автоматизованим. Потрібно мати змогу запускати всі тести одиниці протягом декількох секунд на вимогу так само часто, як кожні кілька хвилин. Люди просто не можуть навіть наблизитися до ручних тестів. Не кажучи вже про те, що одиничні тести є в коді, і їх неможливо виконати, не викликаючи їх через код, тобто автоматизуючи їх.
Слід пам’ятати, що це форум насамперед для розробників, а не тестерів. Інтеграційне тестування в основному реалізується тестерами. Тестування блоку реалізується розробниками. Природно, розробники говорять більше про тестування одиниць, ніж про інші типи тестування. Це не означає, що вони не вважають, що інші тестування важливі. Це просто означає, що вони насправді не роблять цього (або роблять це рідше).