Баг «вроде всё в порядке»: как находить тихие сбои в приложении на ИИ
Ваш ИИ-конструктор приложений сделал форму обратной связи. Вы ввели своё имя, нажали «Отправить», увидели приветливое сообщение об успехе и пошли дальше. Через неделю вы упоминаете эту страницу другу, а он спрашивает, заполнял ли её кто-нибудь. Вы идёте проверять. Три отправленные заявки висят в каком-то «ожидающем» состоянии. Ни одна из них так и не дошла до вашей почты.
Это самый распространённый тип сбоя для приложения на ИИ, и он не тот, о котором беспокоится большинство. Баги, которые выбрасывают красное сообщение об ошибке, легко найти — ваш ИИ-конструктор исправит их за две минуты. Опасные баги — те, где экран выглядит нормально, пользователь думает, что всё готово, а вы узнаёте об этом только через месяц.
Этот пост — чек-лист для отлова таких багов. Не «как тестировать как QA-инженер», а просто пять мест, где реальные пользователи обжигаются о приложение на ИИ, которое выглядит работающим.
1. Отправьте что-нибудь и проверьте, что оно действительно куда-то ушло
Когда ваш ИИ-конструктор делает форму, задайте один вопрос: куда уходят данные? Не абстрактно — буквально: куда вы можете пойти и посмотреть на них после отправки?
Удивительно большое количество таких форм отправляет данные в обработчик, который возвращает «Спасибо!», но при этом так и не отправляет письмо, не сохраняет в базу данных и никого не уведомляет. Форма — вежливая ширма. Поэтому:
- Отправьте тестовую запись с фейковым, но очевидным именем вроде «ZZZ TEST».
- Откройте дашборд, базу данных, почтовый ящик, таблицу — туда, куда должны попадать заявки.
- Найдите там свою запись «ZZZ TEST» с правильной меткой времени.
Если вы не можете найти её меньше чем за минуту, ваша форма сломана, даже если она поздравила вас с отправкой. Я видел форму «свяжитесь с нами» на платном лендинге, которая три недели собирала ноль лидов, потому что шаг отправки письма так и не подключили. Страница выглядела безупречно.
2. Пройдите тот путь, который сами никогда бы не выбрали
Вы знаете, что делает ваше приложение, потому что наблюдали за тем, как его собирали. Вы каждый раз нажимаете кнопки в одном и том же порядке. Реальные пользователи не будут.
Выберите путь, который кажется самым странным:
- Нажмите «Отправить» дважды подряд, быстро.
- Обновите страницу в середине какого-нибудь действия.
- Откройте приложение в режиме инкогнито, без авторизации.
- Введите имя с апострофом (O’Brien — классический разрушитель).
- Введите число в поле, которое его просит, но сделайте его отрицательным или нулём.
Если что-то ломается явно — это реальный баг, но хотя бы громкий. Версия «вроде всё в порядке» — это когда второе нажатие создало дубликат записи, и по экрану этого никак не понять. Зайдите в базу данных и поищите две строки «ZZZ TEST» с метками времени, отличающимися на две секунды. Если найдёте их, форме нужна защита от дублей.
3. Подождите день, потом вернитесь
Много кода, сгенерированного ИИ, использует временную память, которая обнуляется, когда приложение передеплоивается или перезагружается. Приложение держит ваши данные в том, что разработчик назвал бы «состоянием в памяти», — нормально для демо, ужасно для чего-либо настоящего.
Тест жестокий и простой: введите какие-нибудь данные, закройте вкладку, подождите двадцать четыре часа, вернитесь. Если данные пропали или перепутались — хранилище ненастоящее. Вашему ИИ-конструктору, скорее всего, нужно прямо сказать простыми словами: «эти данные должны переживать перезапуск сервера». Большинство конструкторов переключатся на базу данных по запросу; некоторые не сделают этого, пока не попросишь.
Можно провести ускоренную версию этого теста, спросив у своего конструктора в чате: «где хранятся данные этой формы и переживут ли они передеплой?» Если в ответе встречаются слова «в памяти», «сессия» или «на время этого запуска», вы нашли баг ещё до того, как на него наткнулся хоть один пользователь.
4. Покажите приложение кому-то, кроме себя
Вы знаете, что означает ваше приложение. Вы его придумали. Вы дали названия кнопкам. Подписи очевидны для вас, потому что вы их написали.
Покажите приложение другу, ничего не объясняя. Скажите: «Попробуй сделать X». Наблюдайте за ним. Не помогайте. Произойдёт три вещи:
- Он нажмёт куда-то, куда вы не ожидали, и приложение сделает что-то неожиданное.
- Он застрянет на подписи, которая казалась очевидной, когда вы её писали.
- Он сделает то, что вы хотели, но за половину шагов, которые вы себе представляли, и вообще пропустит какой-то экран — иногда тот самый, на заполнение которого приложение рассчитывало.
Каждая из этих ситуаций — реальный баг. Ни одна из них не выбрасывает ошибку. Друг скажет: «О, мило», — и вернёт ноутбук. А вы по его лицу поймёте, что он на тридцать секунд потерялся там, где вы и не подозревали ни единого шва.
5. Прочитайте письмо, которое отправляет приложение, на телефоне
Если ваше приложение отправляет письма — подтверждения, сброс пароля, счета, — откройте одно на телефоне, а другое в почтовом клиенте, отличном от того, которым вы обычно пользуетесь. Приложения на ИИ склонны генерировать письма, которые шикарно выглядят в Gmail на десктопе и выглядят как помехи в Outlook на Android.
Та же логика касается PDF-чеков, выгрузок для скачивания и кнопок «поделиться ссылкой». То, что выходит за пределы вашего приложения, в реальный мир, — самая недотестированная часть сборки на ИИ. И при этом именно её ваши пользователи видят чаще всего. Один знакомый основатель выпустил красивый процесс оформления заказа, чек которого в PDF на iPhone был сплошным чёрным квадратом. Никто не жаловался — люди просто перестали покупать.
Неудобная правда про «оно работает»
Когда вы собираете приложение в ИИ-конструкторе приложений, «оно работает» означает «оно запустилось на моей машине, в моём браузере, с моими конкретными нажатиями, в тот день, когда я его собрал». Это куда более скромное утверждение, чем кажется.
Настоящие приложения работают, когда:
- Ими пользуется другой человек.
- Данные сохраняются дольше, чем длится демо.
- Путь через приложение — тот, который вы не предвидели.
- Результат читают на устройстве, на котором вы не тестировали.
Вам не нужно становиться тестировщиком, чтобы выпустить что-то хорошее. Вам нужно лишь один раз пройти эти пять проверок — за день до того, как вы кому-то расскажете, что приложение существует. Они занимают около двадцати минут. И они поймают девять из десяти тихих багов, которые иначе дошли бы до платящего пользователя.
Если у вас есть время только на одну, сделайте первую. Отправьте что-нибудь. Найдите это на другой стороне. Большинство приложений на ИИ выглядят нормально. Хитрость в том, чтобы убедиться, что они и правда такие.
Если это откликнулось, следующее, что стоит сделать, — сесть с листом бумаги и выписать три вещи, в которых ваше приложение никогда не должно тихо давать сбой: форма, письмо, оплата — что бы это ни было у вас, — и пройтись по каждой из них с проверками выше. Двадцать минут сейчас купят вам немало спокойных ночей потом.