Как тестировать AI — когда правильного ответа нет Меня попросили написать тесты для фичи с ChatGPT. Я завис на 20 минут.

Классический подход: expect(response).toBe('...') — не работает. Ответ каждый раз другой.

И это не исключение — по данным Katalon State of Software Quality 2025, 76% QA-специалистов уже используют AI-инструменты в работе (источник). Но как их тестировать — единого ответа до сих пор нет.

Вот как я решил эту проблему.

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

LLM-системы не дают одинаковый output. Это не баг, это природа модели. Значит, нам нужны другие assertions.

3 подхода, которые работают: 1. Structure testing — проверяем форму, не содержание test('AI response has correct structure', async () => { const response = await askAI('Summarize this article');

expect(response).toHaveProperty('text'); expect(response.text.length).toBeGreaterThan(50); expect(response.confidence).toBeGreaterThan(0.7); });

2. Semantic testing — используем другой LLM как судью const isRelevant = await llmJudge({ question: 'Summarize this article', answer: response.text, rubric: 'Response should mention main topic and be concise' }); expect(isRelevant.score).toBeGreaterThanOrEqual(3); // из 5

3. Regression через snapshots с drift detection — Сохраняем базовые ответы — Проверяем семантическое сходство (cosine similarity — порог подбирается под задачу, у меня 0.85) — Алертим, если поведение существенно изменилось

Реальность: тестирование AI — это не pass/fail, это мониторинг качества.

Кто уже тестирует AI-системы? Каков ваш подход? 🤔

#llm_testing #sdet #qa_automation #ai #testing #playwright #typescript #ai #llm @haradkou_sdet