Первый RAG комом: как мы учились анализировать ошибки автотестов с помощью LLM
Habr ·

Привет! Меня зовут Алексей, я автотестер в hh.ru . У нас около 3000 запускаемых классов с e2e (UI) тестами на Java. Они прогоняются по несколько раз в день и служат основным quality gate. Но тесты периодически флакуют — становятся нестабильными, и с этим приходится работать. Для борьбы с этим у нас работает карантин, а точнее автоматический карантин. Если тест становится нестабильным, крон исключает его из прогонов и создаёт задачу в Jira на владельца теста с просьбой разобраться в проблеме. Подробнее о том, как мы работаем с flaky-тестами и устроили автоматический карантин , уже рассказывали на Хабре. А теперь решили дополнить этот процесс LLM. Идея была простой: когда тест попадает в карантин, нейросеть анализирует ошибку и оставляет владельцу подсказку — несколько гипотез о причинах падения и возможные способы исправления, если проблема на стороне тестов. Сегодня расскажу, как мы реализовали эту задачу, почему классический RAG с векторным поиском не дал нужного результата и как в итоге пришли к подходу, в котором LLM сама определяет, какой код ей нужен для анализа. Читать далее
Привет! Меня зовут Алексей, я автотестер в hh.ru . У нас около 3000 запускаемых классов с e2e (UI) тестами на Java. Они прогоняются по несколько раз в день и служат основным quality gate. Но тесты периодически флакуют — становятся нестабильными, и с этим приходится работать. Для борьбы с этим у нас работает карантин, а точнее автоматический карантин. Если тест становится нестабильным, крон исключает его из прогонов и создаёт задачу в Jira на владельца теста с просьбой разобраться в проблеме. Подробнее о том, как мы работаем с flaky-тестами и устроили автоматический карантин , уже рассказывали на Хабре. А теперь решили дополнить этот процесс LLM. Идея была простой: когда тест попадает в карантин, нейросеть анализирует ошибку и оставляет владельцу подсказку — несколько гипотез о причинах падения и возможные способы исправления, если проблема на стороне тестов. Сегодня расскажу, как мы реализовали эту задачу, почему классический RAG с векторным поиском не дал нужного результата и как в итоге пришли к подходу, в котором LLM сама определяет, какой код ей нужен для анализа. Читать далее