Усі тести пройдено. Користувач усе одно не зміг зіграти в гру

«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