Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 Контент вільний від AI. Цей пост на 100% написаний людиною, як і все на моєму блозі. Насолоджуйтесь!

25.01.2024

Генеративне тестування

Є такий різновид тестування, як генеративне, або ж ще кажуть тестування на властивості. Я такі на практиці бачу досить рідко, втім, корисно знати про цей підхід.

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

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

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