Тестові дані мають доводити ризик

Набір тестів будується як ланцюжок: ризик → сценарій → дані → перевірка результату → review якості → evidence у PR. Кількість тестів не дорівнює якості, якщо вони не відрізняють правильну реалізацію від дефектної.

КатегоріяПрикладиЩо перевірити
Некоректний ввідНульова сума, відʼємне значення, відсутній описValidation і відсутність сміттєвих операцій
МежіПовна сума, останній дозволений деньНемає off-by-one помилки
ДоступКористувач без потрібної роліПомилка доступу та відсутність змін
ПовторенняПодвійний однаковий запитІдемпотентність і відсутність дубліката
Зовнішній сервісTimeout платіжного провайдераЗрозуміла помилка та узгоджений стан
ЧасUTC, перехід через добуСтабільний розрахунок строків

Boundary analysis перевіряє сусідні значення

Для refund policy це може бути попередній день, останній допустимий день і перший заборонений день; для суми — мінімум, нуль, відʼємне значення та значення понад залишок.

  1. Знайдіть нижню дозволену межу.
  2. Перевірте значення безпосередньо на межі.
  3. Перевірте перше значення за межею.
  4. Порівняйте очікувану поведінку й побічні ефекти.
  5. Додавайте часові зони або календарні межі лише для релевантної зміни.

Негативний тест перевіряє відсутність побічного ефекту

  • Неправильний запит повертає погоджений статус і тіло помилки.
  • Запис про refund не створюється.
  • Статус замовлення не змінюється.
  • Платіжний сервіс не викликається.
  • Кошти не списуються та не повертаються частково.
  • Після помилки не залишається неконсистентний стан.

Фікстури мають бути синтетичними

Представницькі дані повинні бути зрозумілими, стабільними й достатньо близькими до сценарію, але повністю безпечними. Використовуйте умовний order ID, домен example.com, тестову валюту та очевидну суму.

Не переносіть у тести production ID, реальні адреси, токени, ключі, платіжні дані або фрагменти логів. Реалістичність не виправдовує витік приватної інформації.

Безпечний напрямок для fixture
orderId: test-order-001
customerEmail: reviewer@example.com
currency: TST
amount: 42.00

Ревʼю тестів — те саме питання, що й для коду

  • Чи тестує сценарій зовнішню поведінку, а не приватний метод?
  • Чи є змістовні assertions?
  • Чи не замокано саме обʼєкт перевірки?
  • Чи немає залежності від часу, мережі, випадковості або порядку запуску?
  • Чи зрозуміла назва сценарію?
  • Чи був regression-тест червоним до fix і зеленим після?
  • Чи немає в даних конфіденційної інформації?

Канонічне джерело уроку · JavaRush

Відкрити матеріал JavaRush