18 мая 2025 г.·6 мин чтения

Тесты приёмки функций ИИ на основе реальных тикетов поддержки

Тесты приёмки функций ИИ превращают провалившиеся обращения в поддержку в простые повторяемые проверки, чтобы команды ловили реальные проблемы пользователей до их повторного появления.

Тесты приёмки функций ИИ на основе реальных тикетов поддержки

Почему лабораторные демонстрации не показывают реальную боль пользователей

Модель может выглядеть отлично в демо, потому что демо убирают те элементы, которые раздражают реальных пользователей. Команды тестируют аккуратные подсказки, полные предложения и явный запрос. Реальные клиенты присылают недописанные мысли, вставляют старые номера заказов, смешивают две проблемы в одно сообщение и опускают детали, которые системе необходимы.

Этот разрыв больше, чем многие ожидают. Отполированное демо может доказать, что функция работает один раз. Оно не доказывает, что она будет работать, когда пользователь расстроен, торопится или неясно формулирует просьбу. Тикеты поддержки показывают это давление простым языком. В них фиксируются моменты, когда модель ошиблась в догадке, упустила контекст или дала ответ, который звучал нормально, но ничего не решил.

Входящая почта поддержки — это место, где продуктовые заявления встречаются с реальностью продакшена. Если пользователи продолжают открывать тикеты по одной и той же просьбе о возврате, спору по оплате или изменению аккаунта, у вас уже есть доказательство того, что что-то не работает. Вам не нужен воркшоп, чтобы придумывать крайние случаи. Ваши клиенты уже их написали.

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

Тесты приёмки должны выглядеть как тикеты, которые вызвали боль, а не как подсказки, которые хорошо выглядели на ревью. Если реальный клиент просил возврат с недостающим контекстом, лишними эмоциями и опечаткой в ID заказа, ваш тест должен сохранить эти грубые края. Слишком аккуратно отредактировав, вы тестируете другую проблему.

Хороший набор приёмки выполняет одну задачу: он превращает вчерашнюю кашу из поддержки в завтрашнюю повторяемую проверку. Когда модель меняется, вы видите, справляется ли она по-прежнему с ситуациями, которые реально вредят пользователям. Тогда численные показатели качества начинают иметь смысл за пределами лаборатории.

Выбирайте подходящие тикеты поддержки

Хорошие тесты начинаются с тикетов, в которых есть чёткая цель пользователя. Вам нужно понимать, чего человек пытался добиться, что модель сделала вместо этого и каким был бы правильный результат. Если вы не можете суммировать это в одном простом предложении, тикет не готов.

Повторяющаяся боль важнее редкой драмы. Странная одноразовая ошибка может выглядеть серьёзно, но еженедельные проблемы заслуживают внимания в первую очередь, потому что бьют по большим группам пользователей и возвращаются после обновлений. Если одна и та же жалоба попадает в поддержку каждые несколько дней, ей место в верхней части набора тестов.

Тикеты, которые дошли до живого агента, часто служат лучшим исходным материалом. Кому‑то уже пришлось вмешаться, прочитать случай и решить, что должно было произойти. Это даёт вам более чистое ожидаемое поведение, чем тикеты, закрытые автосообщением или оставленные без решения.

Некоторые тикеты всё ещё слишком расплывчаты для тестирования. Пропускайте жалобы, которые лишь говорят «это было плохо» или «что-то сломалось». Пропускайте отчёты без транскрипта, скриншота или окончательного решения. Пропускайте ветки, где цель пользователя поменялась по ходу переписки. Такие случаи могут пригодиться позже, но не до тех пор, пока команда не согласует, что считать успехом.

Также помогает группировать похожие ошибки под одним именем теста, а не считать каждый тикет новой историей. Если пять пользователей просили возврат немного разными словами и модель неправильно обработала все пять, объедините их в одну категорию вроде «запрос на возврат с частичной информацией о заказе» и сохраните несколько вариантов под этой меткой. Вы получите более широкий охват, не превратив набор в хаос.

Небольшой чистый набор обычно даёт больше информации, чем огромная куча случайных жалоб. Двадцать тест-кейсов с ясными целями, понятными исходами и реальным повторением поймают больше регрессий, чем двести расплывчатых заметок из логов чатов.

Если в команде спорят о том, прошёл ли случай, вероятно тикет был плохим выбором. Начните с случаев, где реальным пользователям нужен был один конкретный результат, поддержка исправила это вручную, и вы можете снова проверить этот результат после каждого изменения модели.

Превратите один провал в тест

Хороший тест начинается с точного сообщения пользователя, которое вызвало проблему. Не переписывайте его, чтобы оно звучало чище или короче. Неровная формулировка, недостающие детали и странные обороты часто и есть причина, по которой модель ошиблась.

Сначала скопируйте оригинальный ввод. Затем удалите приватные данные, не меняя само обращение. Заменяйте имена, номера аккаунтов, email и ID заказов плейсхолдерами, но сохраните тот же запрос, тон и уровень путаницы.

Большинство полезных очисток сохраняют пять вещей: что хочет пользователь, факты, которые он уже дал, формулировку, которая может сбить модель, наличие временного давления и канал, где это произошло — чат или email.

Потом опишите ожидаемый результат простыми словами. Избегайте расплывчатых записей вроде «обработать корректно» или «дать полезный ответ». Скажите, что именно должен сделать хороший ответ. Он может подтвердить проблему, запросить одну недостающую деталь, отказать в запрещённом действии или вызвать правильный инструмент.

Сделайте результат лёгким для оценки. Руководитель поддержки, продукт‑менеджер и инженер должны прочитать его и прийти к одному и тому же вердикту без долгих споров. Именно это превращает историю из поддержки в настоящий тест приёмки.

Тест также нуждается в том же контексте, который была у модели при ошибке. Включите инструмент, который она могла использовать, политику, которой она должна руководствоваться, и скрытые инструкции или состояние аккаунта, формировавшие ответ. Без этого контекста вы не тестируете реальное поведение, вы тестируете упрощённую версию, которая может пройти по ложной причине.

Сохраняйте каждый случай в формате, который команда сможет прогнать снова после изменений подсказок, инструментов, политик или моделей. Держите структуру скучной: ID, санитизированный ввод пользователя, доступный контекст, ожидаемый исход и заметки о прохождении/провале — этого достаточно.

Когда одна производственная ошибка становится повторяемой проверкой, команда перестаёт спорить о памяти и начинает измерять поведение.

Пишите правилa прохождения и провала, по которым люди согласятся

Большинство команд делают эти правила слишком расплывчатыми. Они судят тон, полировку или то, «звучит ли ответ умно». Для тестов приёмки оценивайте результат, который получил пользователь.

Практичное правило проверяет три вещи: факты, действия и отказы. Факты — это утверждения, которые делает модель. Действия — шаги, которые она предлагает пользователю. Отказы — моменты, где она должна остановиться, предупредить или передать дело человеку.

Это разделение сокращает много бессмысленных споров. Ответ может звучать спокойно, но провалиться, потому что дал неверную инструкцию. Другой ответ может использовать другие слова и пройти, потому что факты были верны и пользователь получил правильный следующий шаг.

Установите жёсткие провалы для ответов, которые могут нанести вред. Если модель говорит клиенту отменить не ту услугу, раскрывает приватные данные, выдумывает политику или пропускает обязательный отказ по безопасности, тест должен сразу провалиться. Не смывайте это стилевыми оценками.

Незначительные изменения формулировки не должны иметь значение, если исход остаётся верным. Командам поддержки обычно важнее, сможет ли пользователь решить проблему, а не в одной ли фразе модель это сделала. Если два ответа дают одну и ту же корректную политику, тот же безопасный следующий шаг и одинаковое предупреждение, оба должны пройти.

Держите каждое правило коротким, чтобы поддержку и продукт можно было быстро проверить. Если людям нужен митинг, чтобы расшифровать рубрику, рубрика плоха. В большинстве случаев одного короткого блока достаточно: какие факты должны появиться, какие действия предложить, когда модель обязана отказаться или передать, и какие вредные ошибки вызывают немедленный провал.

Если рецензенты продолжают спорить после прочтения одного и того же ответа, правило всё ещё слишком расплывчато.

Простой пример на запросе возврата

Постройте компактный набор тестов
Постройте небольшую систему тестов приемки из тикетов, которые отнимают у команды время и доверие.

Тикеты с возвратами — хороший стресс‑тест, потому что они показывают разрыв между гладким демо и реальным использованием. Клиент часто пишет после истечения окна возврата, сообщение эмоционально: он чувствует себя введённым в заблуждение, торопится или разочарован. Если ваша модель научилась только «звучать полезно», она может слишком быстро пообещать возврат.

Это создаёт вторую проблему. Клиент теперь ожидает деньги, хотя политика этого не позволяет. Поддержке приходится отменять обещание, успокаивать клиента и объяснять, почему первый ответ был неверным.

Слабый ответ может быть: «Я могу сразу помочь с возвратом». Это звучит вежливо, но игнорирует реальное правило. Именно такой провал стоит сохранить в наборе тестов.

Лучший ответ делает три вещи. Он чётко излагает политику простым языком, не обещает возврат и даёт клиенту полезный следующий шаг.

Например, сильнее ответ мог бы объяснить, что покупка попадает за пределы окна возврата, поэтому команда не может одобрить возврат по обычной политике. Затем можно предложить путь вперёд: проверить дату списания, изучить процесс для исключений или передать дело живому агенту, если клиент считает, что произошла ошибка с оплатой.

Такой ответ не сделает всех счастливыми, но он честен. Честность лучше, чем утешение и ложное обещание.

Когда вы сохраняете этот случай, оставьте оригинальное сообщение клиента, плохой ответ, который пообещал возврат, одобренный ответ, соответствующий политике, короткую заметку с объяснением ошибки и правило прохождения для будущих прогонов.

Это правило должно оставаться простым. Модель не должна обещать возврат. Она должна упомянуть окно политики и предложить реальный следующий шаг.

А потом прогоняйте тот же кейс при каждом изменении подсказки, модели, маршрутизации или текста политики. Один тикет перестаёт быть единичной ошибкой и становится постоянной проверкой на ложную надежду.

Прогоняйте проверки после каждого изменения

Небольшие изменения ломают поведение чаще, чем команды ожидают. Твик подсказки может изменить тон. Обновление инструмента может поменять, какие данные видит модель. Смена модели может превратить безопасный ответ в новую проблему поддержки.

Прогоняйте проверки каждый раз, когда меняете подсказки, системные инструкции, связку инструментов, настройки поиска или саму модель. Если пользовательский опыт изменился хоть немного, протестируйте его.

Скорость важна, поэтому разделите набор на два уровня. Начните с небольшой группы высокорисковых кейсов, привязанных к вашим худшим тикетам. Эти кейсы ловят очевидные регрессии за несколько минут. Если они прошли, запускайте более широкий набор для полного охвата.

Такой порядок экономит время и снижает шум. Команда не должна ждать час, чтобы узнать, что поток возврата сломался на первом же тесте.

Держите одну стабильную базовую версию и сравнивайте с ней каждый новый прогон. Не считайте только общее число пройденных. Смотрите, какие кейсы упали, какие восстановились и какие появились новые провалы. Десять проходов могут скрыть один серьёзный промах, если упал не тот тикет.

Простая рутина релиза работает так: прогонять малый набор на каждое изменение, прогонять полный набор перед релизом, сравнивать провалы с последней стабильной версией, отправлять новые провалы владельцу продукта и лидеру поддержки, и добавлять пару свежих тикетов из последнего цикла релиза.

Отправляйте упавшие кейсы тем, кто чувствует боль напрямую. Владельцы продукта решат, ломает ли поведение задуманный поток. Лиды поддержки скажут, приведёт ли ответ к новому тикету, возврату или злому письму.

Поддерживайте набор в актуальном состоянии. После каждого цикла релиза просматривайте новые тикеты и добавляйте несколько, которые обнаружили реальные пробелы. Снимайте устаревшие кейсы только когда соответствующий поток продукта больше не существует.

Это то, что делает тесты приёмки полезными на практике. Набор остаётся достаточно маленьким, чтобы запускаться часто, но продолжает учиться на продакшене вместо того, чтобы снова превращаться в лабораторное упражнение.

Ошибки, которые делают набор тестов бесполезным

Настройте проверки релиза
Преобразуйте небрежную историю поддержки в простой рабочий процесс, который команда будет запускать при каждом релизе.

Набор перестаёт помогать, когда уходит от реальной боли пользователей. Быстрейший способ разрушить его — писать кейсы из предположений вместо реальных тикетов. Команды часто придумывают аккуратные подсказки, которые звучат правдоподобно, но никогда не случались в продакшене. Такие кейсы заставляют модель выглядеть лучше, чем она есть.

Ещё одна распространённая ошибка — смешивать несколько проблем клиента в одном тесте. Одна переписка может содержать неверное решение по возврату, пропущенную проверку политики и запутанный ответ. Если всё это свести в один кейс, итоговая метрика мало что скажет. Держите каждый тест узким: одна проблема, одно ожидаемое действие, одна ясная причина для прохождения или провала.

Команды также ослабляют набор, пряча некрасивые кейсы, потому что падает счёт. Это заманчиво, особенно когда кто‑то хочет аккуратный отчёт. Но именно грязные тикеты важны. Если пользователи часто пишут с недостающими деталями, плохой грамматикой или противоречивыми фактами, ваш набор должен сохранять такие случаи. Их удаление не повышает качество, а только улучшает видимость на графике.

Та же проблема возникает, когда люди меняют ожидаемый ответ и не оставляют записи. Иногда изменение корректно — политика поменялась или старая метка была неправильной. Тем не менее каждое обновление нуждается в короткой заметке с причиной и датой. Без этой истории никто не поймёт, улучшилась ли модель или команда просто сдвинула цель.

Более мягкая версия той же ошибки — оценивать стиль больше, чем исход. Вежливый ответ может всё равно совершить неправильное действие. Если модель одобряет возврат, который должна отклонить, пропускает проверку личности или даёт следующему агенту неверные факты, ответ провален, даже если тон тёплый и спокойный. Сначала проверьте правильность действия, потом уже оценивайте тон.

Хороший набор тестов редко красив. Он сохраняет реальные провалы, чётко их разделяет и фиксирует каждое изменение правила.

Контрольный список перед тем, как доверять цифрам

Снизьте ручную доработку
Сократите ручную доработку поддержки с помощью лучших подсказок, связки инструментов и правил передачи человеку.

Набор может выглядеть аккуратно в таблице и при этом почти ничего не значить. Если кейсы не из реальной боли поддержки, счёт может расти, а пользователи будут продолжать открывать те же жалобы.

Перед тем как доверять результату, сделайте короткий проход рецензии. Это займёт меньше времени, чем дважды исправлять плохой релиз.

Привязывайте каждый тест к реальному тикету или к небольшой группе тикетов с одинаковым паттерном. Дайте каждому тесту один ожидаемый результат. Удаляйте приватные данные перед сохранением. Держите правило прохождения/провала коротким, чтобы его можно было прочесть без скролла. Попросите кого‑то из поддержки проверить набор — они знают, какие провалы отнимают время, вызывают злые ответы или заставляют пользователей обращаться повторно.

Простой пример делает разницу очевидной. Пять клиентов написали, потому что ассистент одобрял возвраты, которые политика не позволяет. Слабый тест спросит: «Отвечал ли модель вежливо?» Это почти ничего не скажет. Полезный тест спросит, отказала ли модель в возврате, объяснила ли причину и указала ли реальный следующий шаг.

Ревью от поддержки важнее, чем многие думают. Продукт и инженерия часто фокусируются на том, звучит ли ответ умно. Поддержка замечает, закрывает ли ответ обращение на самом деле. Это не одно и то же.

Ещё одна проверка: ищите дубликаты. Десять почти идентичных кейсов могут сделать ваш счёт стабильным, скрывая целые классы провалов. Меньший набор с чистым покрытием обычно лучше, чем раздутый, полный повторов.

Когда этот чеклист выдержан, ваша оценка приёмки начинает что‑то значить. До тех пор это просто число.

Что делать дальше

Не начинайте с гигантского бэклога. Начните с десяти тикетов, которые причиняют боль. Выберите случаи, которые привели к возвратам, повторным обращениям, эскалациям или ручной доработке. Десять болезненных примеров научат вас больше, чем сто случайных, и вы сможете превратить их в тесты на этой неделе, а не обсуждать месяц.

Большая куча старых тикетов кажется исчерпывающей, но обычно умирает в таблице. Маленький набор используется.

Привлеките поддержку, продукт и инженерию к совместному обзору. Поддержка объяснит, что имел в виду клиент. Продукт решит, каков хороший итог. Инженерия превратит это в повторяемую проверку с понятными правилами прохождения и провала. Если все трое вместе просматривают один провал, вы тратите меньше времени на споры о крайних случаях позже.

Сохраните небольшой основной набор, который защищает релизы. Это проверки, покрывающие ваши самые дорогие ошибки и самые частые провалы. Если один из них ломается — ставьте релиз на паузу и исправляйте. Вот где тесты приёмки перестают быть отчётом и начинают формировать качество.

Немного структуры помогает. Дайте каждому тест‑кейсу владельца, фиксируйте дату последнего обновления, заменяйте устаревшие кейсы, когда меняется поведение пользователей, и выводите из набора те, что больше не важны. Большинству команд не нужно ничего сложнее.

Если у вас уже есть пятьдесят или сто кандидатов, сопротивляйтесь желанию сразу перевести их в тесты. Постройте первые десять, прогоняйте их при каждом изменении подсказок, обновлении модели, изменении политики или рабочего процесса и смотрите, какие провалы повторяются. Затем расширяйте целенаправленно.

Если команде нужна помощь в построении рабочего процесса, Oleg Sotnikov at oleg.is работает как Fractional CTO и консультирует стартапы по доставке AI-first продуктов и автоматизации. Такая практическая настройка хорошо подходит для задачи: превратить болезненные провалы поддержки в небольшой набор, который команда сможет запускать перед каждым релизом.

Выберите десять тикетов. Назначьте владельца для каждого. Поставьте дату следующего обзора в календаре. Затем запускайте тесты до следующего релиза, а не после следующего пожара в поддержке.