Перейти к содержанию
суббота, 11 июля 2026 г.

ИИ Вестник

Главные новости о развитии искусственного интеллекта в России

QA-инженер создал пак скиллов для Claude Code, который заставил ИИ доказывать каждый вердикт тестирования

QA engineer reviewing AI test results on dual monitors in modern office.
AI Generated via Pollinations Flux

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

Пару месяцев назад QA-инженер, специализирующийся на ручном тестировании и автоматизации на Playwright, попросил своего ИИ-агента проверить форму обратной связи после рефакторинга. Агент быстро отчитался: все проверки пройдены, форма работает корректно, в отчёте красовались зелёные галочки и уверенный тон. Однако ручная перепроверка с открытой вкладкой Network вскрыла серьёзную проблему: снаружи всё выглядело идеально — валидация зелёная, кнопка активная, сервер отвечал кодом 200, но в payload вместо темы обращения уходила строка [object Object]. Агент проверил всё, кроме того, что реально отправляется на сервер. Этот инцидент стал отправной точкой для создания системы, которая заставляет ИИ доказывать каждый свой вывод.

Строго говоря, как объясняет инженер, агент не врёт — он достраивает. Языковая модель генерирует самое правдоподобное продолжение, а самое правдоподобное продолжение отчёта о тестировании — «всё работает». Кликнув кнопку и не увидев ошибки, модель делает вывод, что проверка пройдена. Наблюдение стоит дорого: надо снять скриншот, открыть Network, сравнить payload с контрактом. Вывод «по логике должно работать» бесплатный. За полгода параллельных ручных проверок инженер насобирал типовые дыры в логике ИИ-агентов. Агент читает DOM, но не видит пиксели: текст ошибки может быть в разметке, но на экране он белый на белом или перекрыт другим элементом. Hover-состояния через инспекцию стилей проверить нельзя — современный Tailwind прячет :hover в @media (hover:hover), а кросс-доменные таблицы стилей бросают исключения на cssRules. Браузерный autofill может не триггерить событие input — поведение различается между браузерами, поле визуально заполнено, а live-валидация считает его пустым. Приложения на Nuxt и Next могут перерисовать содержимое после гидратации, и мгновенный count() ловит окно, в котором коллекция на миг пуста. И главное: payload — клиентская валидация зелёная, кнопка активна, а в теле запроса [object Object], пустые поля или рубли там, где бэкенд ждёт копейки.

Каждый пункт из этого списка агент хотя бы раз пропускал, и каждый раз инженер делал одно и то же: не исправлял баг молча, а дописывал урок в скилл, чтобы в следующем прогоне агент проверял это сам. В первые недели он ловил по два-три пропуска за прогон, сейчас — один-два в месяц, и почти всегда это новый класс проверок, которого в скиллах ещё не было. Ручная работа не исчезла, но сжалась до выборочного контроля. Ядро разработанного пака — контракт, который агент обязан соблюдать. Вердикт Pass или Fail ставится только по наблюдённому артефакту: скриншоту, телу запроса, логу, дампу. Не проверил — пиши Not tested и причину. Мешает окружение — Blocked, и это отдельный статус, а не завуалированный Fail. Любое расхождение с макетом или требованиями логируется сразу, даже если это отступ в четыре пикселя. Правила банальные, но на поведение модели они влияют сильнее, чем любые призывы «будь внимательнее». Причина простая: модели нужен разрешённый честный выход. Когда «не проверено: нет тестовой учётки» — легитимный исход, а не провал, ей больше незачем натягивать зелёный отчёт. Из прогонов почти исчезли уверенные выводы о том, чего агент не открывал. Требование «каждый вердикт = артефакт» заставляет агента реально ходить в Network и снимать скриншоты, потому что иначе ему нечего положить в отчёт. Дисциплина отчётности тянет за собой дисциплину проверки.

Пак состоит из пяти скиллов, склеенных в конвейер. Скилл interview собирает требования серией вопросов, когда задача описана на словах. Test-cases генерирует тест-кейсы и CSV для импорта в Zephyr Scale. Testing гоняет проверки. Bug-report заводит дефект в Jira, обязательно показав превью перед созданием. Test-review проверяет свежие Playwright-тесты до коммита. Самое ценное лежит в справочниках скилла testing — примерно тысяча строк чеклистов, которые читаются и без всякого AI: маски и лимиты полей, вставка и autofill, все состояния каждого интерактивного элемента, сверка с Figma по токенам, переполнение текста, адаптив, кросс-браузерные ловушки WebKit и Firefox. Скилл в Claude Code — это папка с файлом SKILL.md: инструкция, которую агент подгружает, когда задача совпадает с описанием. Рядом лежат references — справочники, которые он читает по мере надобности, а не держит в контексте постоянно. Никакой магии: хорошо организованный текст плюс немного конвенций. Минимальная версия контракта вставляется в CLAUDE.md проекта как есть: вердикт Pass/Fail — только по наблюдённому артефакту; не проверил — пиши Not tested и почему; каждое отклонение от требований логируй сразу; формы: проверка не заканчивается на «кнопка активна», инспектируй фактический payload сабмита.

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

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

Перспективы развития метода связаны с дальнейшим накоплением скиллов и адаптацией под новые типы приложений. Инженер отмечает, что ручная работа не исчезла, но сжалась до выборочного контроля — и это уже значительный прогресс. Открытые вопросы включают масштабирование подхода на мобильные приложения, где инструменты отладки отличаются, и на API-тестирование, где артефакты имеют другую природу. Также остаётся неясным, как метод поведёт себя с другими языковыми моделями, не только Claude — конкуренты вроде GPT-4 и Gemini имеют свои особенности генерации. Тем не менее, сама идея формального контракта между человеком и ИИ, где каждый вердикт подкреплён доказательством, выглядит многообещающей. Возможно, именно такие практики станут стандартом для промышленного использования ИИ в QA, превратив агентов из «чёрных ящиков» в прозрачных и подотчётных помощников.

Читайте также