QA та тестування
Що таке модульне тестування (unit-тести)?
Модульне тестування (unit testing, unit-тести) — це перевірка окремої невеликої частини коду, функції чи класу, окремо від решти системи. Такий тест не звертається до бази даних і зовнішніх сервісів — замість них використовують заглушки.
Unit-тести — найшвидший і найдешевший рівень перевірки. Вони виконуються за мілісекунди, запускаються сотнями під час кожної збірки і точно показують місце поломки: тест, що впав, одразу вказує на конкретну функцію.
Зазвичай їх пише сам розробник. Крім захисту від помилок, вони дають свободу змінювати код: його можна переписувати, знаючи, що зміна поведінки буде одразу помічена.
Де застосовується
Модульні тести пише розробник, як правило, разом із кодом функції. Їх запускають на своєму комп’ютері перед відправкою змін і автоматично в CI — сотні таких тестів виконуються за секунди, тому вони стають першою лінією захисту від помилок.
Насамперед ними покривають логіку, де легко помилитися: розрахунок ціни зі знижками і податками, перевірку даних, роботу з датами і валютами, граничні умови. Мережеві запити і звернення до бази замінюють заглушками, інакше тест перестає бути модульним і стає повільним.
Приклад
Функція рахує вартість замовлення зі знижкою. Тести перевіряють звичайний випадок, нульову суму, знижку 100% і від’ємну кількість. Будь-яка майбутня зміна формули одразу покаже, яка з цих умов перестала виконуватися.
@Test
void appliesPercentDiscount() {
Order order = new Order(new BigDecimal("1000"));
BigDecimal total = pricing.applyDiscount(order, 15);
assertEquals(new BigDecimal("850"), total);
}
@Test
void rejectsNegativeDiscount() {
Order order = new Order(new BigDecimal("1000"));
assertThrows(IllegalArgumentException.class,
() -> pricing.applyDiscount(order, -5));
}
Часті запитання
Хто пише модульні тести — розробник чи тестувальник?
Зазвичай розробник, разом із кодом: тільки він знає внутрішню будову модуля і може відокремити його від решти системи. QA-інженери відповідають за вищі рівні — інтеграційні та E2E-тести, де систему перевіряють ззовні.
Що таке моки і заглушки?
Це замінники справжніх залежностей: замість звернення до бази чи платіжного сервісу тест використовує спрощену заміну з наперед відомою відповіддю. Так тест стає швидким, не залежить від зовнішніх систем і дає однаковий результат при кожному запуску.
Яке покриття тестами вважається достатнім?
Універсального числа немає, і сам показник може вводити в оману: можна мати 80% покриття і не перевіряти жодного важливого сценарію. Практичніше орієнтуватися на ризики — ретельно покривати складну логіку і грошові розрахунки, а простий код залишати без тестів.
Що таке TDD?
Розробка через тестування: спочатку пишуть тест, який не проходить, потім мінімальний код, щоб він пройшов, а потім покращують рішення. Підхід дисциплінує і покращує структуру коду, але потребує звички і підходить не для всіх задач — особливо коли вимоги ще змінюються.
Навчання тестуванню в OWU
Опануйте професію QA-інженера на практичних курсах із менторами та реальними проєктами.
Обрати курс