Как в команде автотестировщиков РСХБ.Цифра увеличить скорость работы в 2 раза
РСХБ.цифра — это бренд, объединяющий все технологические решения Россельхозбанка и его дочерних компаний. Команда занимается цифровой трансформацией крупнейшего сельскохозяйственного банка России и управляет высоконагруженными системами — АБС, ДБО, процессингом. Более 3000 человек по всей стране создают и выводят на рынок собственное ПО для банков и госкорпораций, финансовых, страховых организаций и агропромышленных предприятий. 26 программных продуктов их разработки вошли в реестр отечественного ПО.
Задача
В 2024 году команда РСХБ.Цифра решила ускорить процессы в тестировании с помощью GenAI. В рамках проекта предстояло собрать команду, инструменты, обеспечить работу «провайдера» LLM и внедрить AI в разработку SDET-сервисов, создание UI-автотестов и API-автотестов.
Решение: системный подход к генерации автотестов с помощью LLM
Первым делом команда РСХБ.Цифра занялась подбором провайдера LLM. Нашли практически идеальный вариант, который дает возможность взаимодействовать с широким классом моделей через единое API, имеет классный интерфейс и кучу всяких плюсов.
Сбор команды
Решили не искать уникального специалиста, который умеет и тестирование, и использует LLM. Итог — собрали как классических автоматизаторов, которые раньше занимались тестированием и знают, с чем придется работать, так и специалистов по AI. Заметили, что именно со специалистами уровня Middle и Senior при использовании AI происходит эффект ускорения.
Создание UI‑тестов
На этапе написания кода с AI в РСХБ.Цифра пошло ускорение в тестировании. В ряде случаев, используя код фронта, который клиент получает в HTML, можно было получать готовые селекторы.
Протестировали гипотезу по сбору из данных кластеров семантически близких тест-кейсов, чтобы на автоматизацию одного тест-кейса тратить больше времени, а на автоматизацию семантически близкого тест-кейса намного меньше.
Для этого построили векторную базу для тест-кейсов самостоятельно на базе распределенной векторной базы данных Milvus и эмбединговой модели deep VK. Эффект был заметным — появился новый инструмент, который стал частью методики.
В ходе автоматизации тест-кейсов стали использовать подход, который можно назвать воронкой промптов. Если на вершине воронки промпты были абстрактные вроде «определить айдишники», без особых деталей, то потом код проходил ниже по воронке — и промпты усложнялись — например, нужно было написать методы, затем код. А в конце, когда код доходил до низа, появлялась задача форматирования. У каждой команды свои правила оформления кода, который AI послушно исполнял.
Создание API‑тестов
При генерации этих автотестов появилась сложность интеграции человеческого кода со сгенерированным AI кодом. Чтобы решить этот вопрос, команда РСХБ.Цифра попросила модель написать вспомогательный код — функционально такой же, как человеческий, но написанный AI.
Вторая задача была связана с единым промптом — команда написала серию промптов и объединила в конвейер DAG (Directed Acyclic Graph) в Apache Airflow. На этой базе был построен такой DAG для управления задачами. Этот граф брал задачу, брал тест-кейс, на входе он получал тест-кейс, информацию преобразовывал и вызывал базовый агент.
После построения эффективного процесса генерации API автотестов построили систему для автоматизации и управления процессами обработки данных: на вход поступает список тест-кейсов, а на выходе инженер получает массу работающих автотестов прямо в кодовой базе.
Технически граф состоит из следующих шагов:
1
Тест-кейс преобразуется в Markdown
2
С помощью ролевого конвейера формируется пустая оболочка автотеста с нужными идентификаторами
3
С помощью ролевого конвейера формируется основное «мясо» автотеста, все действия, описанные в тест-кейсе
4
С помощью ролевого конвейера автотест преобразуется к виду принятого у автоматизаторов (форматирование, отступы, отладочная информация)
5
Автотест вставляется в кодовую базу
6
Производится запуск автотеста
7
Если произошла ошибка, то осуществляется попытка рефлексии и исправления ошибок. Если рефлексия неудачна, то автотест удаляется из кодовой базы
8
Берется следующий тест-кейс
Sdet сервисы
LLM стали использоваться как способ ускорения разработки, не являясь центральным звеном. В качестве фреймворка использовался streamlit. Что стала делать команда?
Получать и преобразовывать тест-кейсы
из TMS в markdown и собирать контекст
Анализировать изменения на фронтенде
за счет записи действий с помощью плагина для chrome. Этот плагин также был создан нашей командой
Проводить векторный поиск тест-кейсов
с отображением семантического сходства
Собирать аналитику по исходному коду
автотестов, для построения трендов и ведения статистики автоматизации
Проводить прозрачное резервирование тест-кейсов
на автоматизацию, чтобы оптимизировать процессы разработки (больше самостоятельности инженеров и меньше вероятности помешать друг другу)
Управлять сущностями автотестов в TMS
за счет этого расширить функциональные возможности системы управления тестированием
Производительность команды автоматизации тестирования РСХБ.цифра за счет AI выросла в 2 раза
Результаты
Опыт РСХБ.Цифра показывает, что при внедрении AI сложным моментом становится человеческий фактор. Но и его можно сделать предсказуемым для AI.
Будущее за теми, кто обладает компетенциями и в тестировании, и в AI. Успех внедрения AI в тестирование во многом зависит от грамотного менеджмента и умения собрать сильную команду, готовую к решению сложных и неоднозначных задач.
На положительный исход внедрения генеративного AI оказывают влияние процессы и подходы к тестированию. При низкой цифровизации и прозрачности в компании, AI не сможет раскрыться в полной мере.
Хотите решить похожую задачу?
Мы расскажем, с чего начать!