Phone icon Зв'язатись з нами

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));
}
Тест на JUnit: підготувати дані, викликати метод, порівняти результат з очікуваним.

Часті запитання

Хто пише модульні тести — розробник чи тестувальник?

Зазвичай розробник, разом із кодом: тільки він знає внутрішню будову модуля і може відокремити його від решти системи. QA-інженери відповідають за вищі рівні — інтеграційні та E2E-тести, де систему перевіряють ззовні.

Що таке моки і заглушки?

Це замінники справжніх залежностей: замість звернення до бази чи платіжного сервісу тест використовує спрощену заміну з наперед відомою відповіддю. Так тест стає швидким, не залежить від зовнішніх систем і дає однаковий результат при кожному запуску.

Яке покриття тестами вважається достатнім?

Універсального числа немає, і сам показник може вводити в оману: можна мати 80% покриття і не перевіряти жодного важливого сценарію. Практичніше орієнтуватися на ризики — ретельно покривати складну логіку і грошові розрахунки, а простий код залишати без тестів.

Що таке TDD?

Розробка через тестування: спочатку пишуть тест, який не проходить, потім мінімальний код, щоб він пройшов, а потім покращують рішення. Підхід дисциплінує і покращує структуру коду, але потребує звички і підходить не для всіх задач — особливо коли вимоги ще змінюються.

Навчання тестуванню в OWU

Опануйте професію QA-інженера на практичних курсах із менторами та реальними проєктами.

Обрати курс