Опыт использования ИИ при тестировании информационных систем

Новости и события

Опыт использования ИИ при тестировании информационных систем

Экспертиза ФОРС

Даниил Астахов, специалист отдела тестирования, отделение разработки информационных систем, компания «Форс – Центр разработки» (ГК Форс)

#Форс_ИИ

Даниил Астахов, специалист отдела тестирования, отделение разработки информационных систем, компания «Форс – Центр разработки» (ГК Форс)

Инструментарий автотестирования: ключевые возможности

В данной статье представлен опыт автоматизированного и нагрузочного тестирования с использованием инструментов Claude Code и Claude Desktop, которое проводилось нами в рамках проекта по развитию и модернизации Единой информационной системы Мосжилинспекции (ЕИС МЖИ).

В части автотестирования на проекте применялся BDD-фреймворк на Java, использующий Selenide для тестирования Web UI, Cucumber для написания сценариев в стиле BDD и REST Assured для тестирования REST API. Автотесты формировались при помощи Claude Code на основе анализа пунктов требований бизнес-постановки (БП) по конкретным заявкам на доработку системы. На рабочей машине для Claude Code был предоставлен доступ к исходному коду и локальным репозиториям фреймворка автотестирования, а также к ранее написанным автотестам. После этого на основе предоставленной информации нейросеть сформировала файл claude.md, содержащий краткую информацию о структуре проекта, фреймворка и автотестов — своего рода файл навигации и правил для нейросети для дальнейшей работы. Далее в репозиторий был добавлен Word-файл с бизнес-требованиями, а Claude был дан запрос на формирование feature-файлов с автотестами по конкретным пунктам из предоставленной бизнес-постановки. С использованием скилла docx (предустановленный скилл от Anthropic для работы с docx-файлами) Claude Code проанализировал пункты требований БП и сформировал набор feature-файлов и фрагментов для автотестов.

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

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

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

При проведении нагрузочного тестирования в данном проекте использовался JMeter как основной инструмент написания и тестирования скриптов нагрузки. Далее на готовых скриптах прогоны выполняются рабочими машинами посредством запуска из CI/CD Git, а результаты (графики и метрики) анализируются с дашбордов Grafana.

При подготовке скриптов нагрузочного тестирования не представляется возможным дать Claude Code задачу сгенерировать скрипт, так как он полностью состоит из HTTP-запросов, которые необходимо записывать рекордером из браузера непосредственно с тестового стенда и тщательно конфигурировать. Claude Code не даёт такой возможности по причине того, что тестовый контур системы закрыт VPN Заказчика.

Однако Claude Code помогает в части отладки и проверки работоспособности скрипта. К примеру, ему удавалось прочитать jmx-файл скрипта (более 20 тысяч строк) и найти места, в которых не хватало подстановки необходимых переменных. При наличии сотен запросов в скрипте в трудночитаемом для человека JSON-формате Claude Code отлично справляется с этой задачей и быстро указывает места и запросы, в которых требуются доработки.

Также Claude Code в десятки раз быстрее выполняет рутинные задачи — например, по переименованию всех запросов в скрипте по порядку или добавлению корректной нумерации.

В свою очередь, инструмент Claude Desktop помогает в решении более тривиальных, но не менее трудоемких задач, а именно: написании XPath/JSONPath-локаторов, поиске простых ошибок и информации по техническим вопросам, анализе документации на соответствие требованиям и т.д.

Инструментарий автотестирования: дополнительные возможности

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

В части работы с тестовыми данными ИИ помогает генерировать наборы значений, в том числе граничные и негативные, готовить данные для параметризованных тестов и формировать примеры тел запросов в форматах JSON и XML. Это снижает риск упустить нетривиальные граничные случаи, что может случиться при ручном подборе.

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

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

Последнее слово — за человеком

Опыт применения Claude Code и Claude Desktop на проекте ЕИС МЖИ показал, что ИИ-инструменты являются эффективным вспомогательным средством, которое ускоряет работу тестировщика, но не заменяет его. Наибольшую пользу они приносят при выполнении рутинных или трудоёмких операций: анализе объёмных и трудночитаемых файлов, подготовке черновиков сценариев и документации, генерации тестовых данных, рефакторинге и массовых однотипных правках.

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

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