Головним приводом розробника за те, що він не мав належного тестування, - це "Код не розроблений в одиничному порядку". Я намагаюся зрозуміти, який тип дизайну та код не можна перевірити.
Головним приводом розробника за те, що він не мав належного тестування, - це "Код не розроблений в одиничному порядку". Я намагаюся зрозуміти, який тип дизайну та код не можна перевірити.
Відповіді:
Кілька факторів можуть ускладнити код для перевірки. У такому випадку рефакторинг допомагає покращити код, щоб він міг бути перевіреним.
Деякі приклади коду, які, ймовірно, будуть важко перевірити:
function pGetDp_U(int i, int i2, string sText).Зауважте, що відсутність чіткої архітектури не робить код важким для одиничного тестування, оскільки одиничні тести стосуються невеликих частин коду. Незрозуміла архітектура все ще матиме негативний вплив на інтеграцію та тестування системи.
Є багато речей, які ускладнюють код тесту. Випадково багато з них також ускладнюють підтримку коду:
Найпоширеніші приклади коду, які люди не бажають проводити на тестуванні:
Використовуючи макетну рамку, всі ці приклади можна перевірити на одиницю. Це просто робота з налаштування макетних замін на внутрішні залежності.
Те, що справді не може бути перевірено одиницею:
Кілька областей, які можуть ускладнити написання одиничних тестів. Однак я наголошу, що це не означає, що ви повинні знижувати корисні методи з рук просто тому, що вони можуть додати певну складність вашому тестуванню. Як і будь-яке кодування вас повинні робити власний аналіз, щоб визначити, чи користь випереджає витрати, а не сліпо приймати те, що якийсь випадковий хлопець публікує в мережі.
Вартість більшості цих спіралей поза контролем, якщо ви не знаєте, чим займаєтесь. На жаль, багато хто не знають, як використовувати ці методи для пом'якшення таких речей, як перевірка складності.
Немає такого поняття, як код, який не можна перевірити. Однак є кілька прикладів коду, ЩО СТАТИСТЬ, СТАТИСТЬ важко перевірити (до речі, можливо, не варто витрачати зусиль):
Взаємодія обладнання - Якщо код безпосередньо маніпулює обладнанням (наприклад, запис у реєстр для переміщення фізичного пристрою), тестування пристрою може бути надто складним або дорогим. Якщо ви використовуєте справжнє обладнання для тесту, це може отримати дорогу ціну, щоб отримати відповідний зворотний зв'язок у тестовому джгуті (ще більше обладнання!), А якщо цього немає, вам доведеться наслідувати точну поведінку фізичних об'єктів - не маленька хитрість у деякі екземпляри.
Взаємодія годин - Це зазвичай простіше, тому що майже завжди можливо знущатися з функцій системного годинника досить тривіально. Але коли ви не можете, то ці тести стають некерованими - тести, засновані на режимі реального часу, як правило, потребують тривалого часу, і, на моєму досвіді, вони, як правило, дуже крихкі, оскільки завантаження системи робить речі довшими, ніж повинні. , спричиняючи збої фантомного тесту.
Мої основні три групи для цього:
код, який покладається на зовнішні сервіси
системи, які не дозволяють тестерам змінювати стан незалежно від програми.
тестові середовища, які не повторюють виробничі налаштування.
Це те, що я пережив найбільше, як розробник, який перетворився на QA-інженера.