Усі тести пройдено. Користувач усе одно не зміг зіграти в гру
«API повертає 200 OK!»
На своїй першій інженерній роботі я помітив серйозну проблему. Мої старші колеги обожнювали дашборди. Вони любили високе покриття коду тестами. Вони вважали, що якщо тести «зелені», то продукт працює.
Вони помилялися.
Те, що код працює, і те, що людина отримує потрібне — це різні речі. Кнопка може повертати код успіху, залишаючи користувача на зламаному екрані.
Я розробив спосіб знаходити такі UX-глухі кути без запуску додатка. Я називаю це «статичним проходженням за допомогою двох агентів» (two-agent static walkthrough). Він використовує двох ШІ-агентів, що спілкуються по колу.
- Агент А — це користувач. Цей агент має конкретну мету. Він впертий. Він не здається після першої ж помилки. Він продовжує пробувати різні шляхи.
- Агент B — це додаток. Він має доступ лише для читання до реального вихідного коду. Він відстежує шлях коду для кожної дії користувача. Він повідомляє саме те, що робить код. Він вказує файл і номер рядка. Він не може вигадувати те, чого немає в коді.
Я протестував це на зламаному генераторі мініігор на базі ШІ. Ось що сталося:
Раунд 1: Кнопка не спрацювала. Користувач натиснув «Generate». Код відправив запит на старий, неактивний endpoint замість нового. Тести пройшли успішно, тому що старий API все ще працював.
Раунд 2: Ненатискна порожнеча. Користувач спробував натиснути на результат. Код розмістив текст у звичайному полі без обробника кліків (click handler). Нічого не сталося.
Раунд 3: Хибне благословення. Користувач спробував виправити помилку. Бекенд видав помилку через відсутність ID. Екран показав зелене повідомлення про успіх, хоча система «впала».
Раунд 4: Обрізана надія. Користувач спробував скопіювати код вручну. API обрізав текст на середині. Код був пошкоджений.
Користувач пішов.
Більшість юніт-тестів перевіряють лише те, чи повертає endpoint код 200. Вони не перевіряють, чи досягає користувач своєї мети насправді.
Як це використовувати:
- Зробіть агента-користувача впертим. Справжні баги ховаються за першою ж помилкою.
- Прив'яжіть агента-додатка до реального коду. Це перетворює рольову гру на справжній звіт про помилку.
- Використовуйте це як доповнення до ваших тестів. Це допомагає знайти прогалини там, де ваша логіка стикається з реальністю.
Цей метод є статичним і дешевим. Він запускається ще до того, як ви напишете хоча б один тест-фікстуру (test fixture). Він перетворює «код працює» на «користувач досягає успіху».
Джерело: https://dev.to/terum/every-test-passed-the-user-still-couldnt-play-the-game-388o
Додаткова спільнота для навчання: https://t.me/GyaanSetuAi
