Введение в тестирование AI и LLM

Искусственный интеллект и большие языковые модели (LLM) сегодня — часть продуктов, которые тестируют QA-инженеры: чат-боты, AI-поиск, генераторы контента, инструменты автоматического принятия решений. Тестирование таких систем опирается на тот же подход, что и классическое QA, но добавляет набор проблем, с которыми традиционное ручное и автоматизированное тестирование никогда не сталкивалось.

В этой статье рассматриваются:

  1. Чем AI-системы отличаются как объект тестирования
  2. Недетерминированность и почему она меняет подход к написанию тест-кейсов
  3. Основные категории AI-тестирования
  4. Место AI-тестирования в жизненном цикле разработки
  5. Как QA-инженеру начать изучать AI-тестирование

Чем AI-системы отличаются как объект тестирования

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

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

Недетерминированность: один и тот же ввод — разный результат

Задайте LLM один и тот же вопрос дважды — и вы можете получить два по-разному сформулированных, а иногда и противоречащих друг другу ответа. Это происходит потому, что большинство языковых моделей генерируют текст, выбирая слова на основе распределения вероятностей, а не всегда самое вероятное следующее слово. У некоторых систем эту случайность можно уменьшить (часто это называют «температурой»), но полностью убрать её удаётся редко, а многие продакшн-системы намеренно сохраняют долю случайности, поскольку это делает ответы более естественными.

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

Основные категории AI-тестирования

AI-тестирование обычно строится вокруг нескольких пересекающихся направлений, и зрелая тест-стратегия охватывает их все:

  • Функциональная точность — даёт ли система правильные, релевантные ответы на задачи, для которых она создана?
  • Устойчивость (robustness) — справляется ли она с необычным, некорректным или намеренно провокационным вводом, не ломаясь и не выдавая бессмыслицу?
  • Безопасность и предвзятость — избегает ли система вредоносного, оскорбительного или дискриминационного контента и одинаково ли справедливо она относится к разным группам пользователей?
  • Согласованность — даёт ли она стабильные, непротиворечивые ответы на одинаковые или похожие вопросы?
  • Производительность — отвечает ли система в приемлемое время и с приемлемой стоимостью, особенно под нагрузкой?

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

Место AI-тестирования в жизненном цикле разработки

AI-тестирование — это не единая фаза в конце разработки, оно происходит на нескольких этапах:

  • Тестирование данных — до обучения модели, чтобы проверить, что обучающие и оценочные данные репрезентативны, сбалансированы и не содержат явных проблем с качеством.
  • Оценка модели, где дата-сайентисты и QA совместно определяют бенчмарки, которые модель должна пройти, прежде чем считаться готовой.
  • Интеграционное тестирование, после того как модель встроена в реальный продукт, — тестирование AI-функции так, как её реально будет использовать пользователь: через интерфейс, API и окружающую логику приложения.
  • Мониторинг в продакшне, после релиза, поскольку реальное поведение модели может отличаться от того, что наблюдалось при тестировании, и меняться со временем по мере изменения паттернов пользовательского ввода.

QA-инженеры обычно наиболее вовлечены в интеграционное тестирование и мониторинг в продакшне, работая вместе с дата-сайентистами и ML-инженерами, которые отвечают за более ранние этапы.

Как начать QA-инженеру

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

Практический способ начать — выбрать функцию, которой вы уже пользуетесь: чат-бот, AI-поиск, инструмент для написания текста, — и намеренно попытаться её «сломать»: спросить что-то за пределами её задач, дать противоречивые инструкции или задать один и тот же вопрос пять раз и сравнить ответы. Закономерности, которые вы заметите в ходе такого исследования, — основа для остальных статей этого раздела.

Дополнительные материалы

Определение «правильности» в AI-системах
Решение проблемы нестабильности LLM на маркетплейс-платформах
Retrieval-Augmented Factuality
Тестирование галлюцинаций в чат-ботах

Содержание