Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni
🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!25.01.2024
Генеративне тестування
Є такий різновид тестування, як генеративне, або ж ще кажуть тестування на властивості. Я такі на практиці бачу досить рідко, втім, корисно знати про цей підхід.
Типовий (не генеративний) тест утворює передбачуване середовище та перевіряє отримання конкретного результату. Причому ми завжди перевіряємо обмежений набір прикладів — таких, які, на нашу думку покривають поведінку коду. Це добре та приємно, втім, в деяких випадках перебрати всі значущі приклади не виглядає можливим.
Тоді й буде корисним генеративне тестування. Тут на вхід тесту подаються випадково згенеровані дані, а на виході перевіряються загальні властивості результату. Зазвичай генеративний тест запускається багато разів, за чим ми робимо висновок, що код працює без помилок та з очікуваним результатом.
Мені це згодилося для перевірки статистики, що генерується складним запитом в базі даних. Для перевірки я обрав таку властивість результату, яку також легко обчислити на Ruby з вхідних даних. Потім генерую дані, записую в базу, витягую з бази результат та порівнюю з тим, що обчислює тестовий код на Ruby. Даних багато, комбінацій ще більше, але код перевірки можна прочитати та зрозуміти — в цьому сила генеративних тестів.