Назад в библиотеку

Применение LLM при разработке системы автоматизированного тестирования

Автор: А. М. Корниенкова
Источник: Корниенкова, А. М. Применение LLM при разработке системы автоматизированного тестирования / А. М. Корниенкова // A Posteriori. – 2024. – № 6. – С. 7-9. – EDN BDGUFN.

Ключевые слова: автоматизированное тестирование, тестирование UI, тестирование API, LLM

Недавние успехи в области искусственного интеллекта оказали значительное влияние на развитие индустрии программного обеспечения. Среди ключевых технологических прорывов выделяются большие языковые модели (LLM)[1], которые изменили методы взаимодействия с естественным языком. Эти инновации расширили границы в контексте обработки текста, а также предоставили свежие подходы к задачам разработки и тестирования программного обеспечения.

Существует ряд преимуществ в использовании LLM в области тестирования, в частности ChatGPT. Первое – обеспечение безопасности программного обеспечения, которое должно осуществляться с самого начала разработки продукта. Разработчикам доступны функции, как GitHub Secrets, которые ChatGPT может использовать автоматически для улучшения безопасности кода. Кроме того, иногда необходимо специально просить ChatGPT генерировать защищенный код, например, через использование переменных окружения.

Использование LLM также может предоставить тестировщикам возможность более легкого преодоления кривой обучения новым технологиям. Допустим, специалист в сфере автоматизированного тестирования хорошо знаком с Selenium, но имеет ограниченные знания о GitHub pipelines. В таких случаях ChatGPT может сгенерировать базовый код и помочь в создании рабочих прототипов (workflows), что станет весомой поддержкой в освоении новой области.

В контексте отладки кода ChatGPT может оказать помощь, указывая на возможные причины ошибок, основываясь на анализе предоставленного кода. Достаточно скопировать и вставить код в ChatGPT, чтобы получить объяснение возникших проблем. Несмотря на то, что нельзя полагаться на этот инструмент как на абсолютно надежный источник, он может существенно сократить время на поиск и устранение недочетов, особенно на начальных стадиях отладки.

ChatGPT является языковой моделью, полагающейся на статистические закономерности. Такая модель, опираясь на обширные массивы данных, составляет предсказания о следующих словах на основе предыдущего контекста, не обладая при этом глубоким пониманием их значения. Это предполагает ограниченность в применении алгоритма в тех ситуациях, где требуется изначальное понимание контекста, особенно если рассматривать использование ChatGPT для создания тест-кейсов, где необходимо более глубокое понимание тестируемой системы.

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

Ещё одним минусом является необходимость работы с неполным кодом, полученным через ChatGPT. Зачастую возникает необходимость понять и довести неполный код до конечного результата, что может быть сложной задачей и повлечь за собой ошибки.

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

Далее, на основе полученных сценариев, может быть сформулирован запрос на генерацию тестовых скриптов, предназначенных для конкретного инструмента автоматизации тестирования, как например Selenium (рис. 1). Модель подготовит набросок кода для каждого тест-кейса, который обычно потребует дальнейшей адаптации специалистом, включая настройку ожиданий, обработку исключений и другие аспекты, обеспечивающие четкое выполнение тестов.

Рисунок 1 – Генерация автотеста с помощью LLM
Рисунок 1 – Генерация автотеста с помощью LLM

Также LLM способны генерировать тестовые данные, создавая валидные и невалидные входные значения для проверки различных граничных условий. Это позволяет автоматизировать этап подготовки тестирования.

Использование моделей естественного языкового преобразования (LLM) открывает новые возможности для усовершенствования процесса создания интеграционных тестов, в частности API-тестов. API (Application Programming Interface) представляет собой набор правил и протоколов для создания и взаимодействия с программным обеспечением[3].

Ключевые аспекты, где LLM могут быть использованы при создании API-тестов:

1. Генерация сценариев тестирования. LLM могут автоматизировать генерацию сценариев тестирования, исходя из документации API. Путем анализа спецификации API, такой как OpenAPI (Swagger), LLM могут сгенерировать всеобъемлющий набор тестов для проверки каждого ресурса, метода и ответа API (рис. 2).

2. Составление тестовых запросов. На основе заданных параметров и требований LLM могут помочь в автоматизированном создании запросов к API, включая разнообразные входные данные для тестирования граничных значений и проверки входных данных.

3. Документация и описание в тест-кейсах. LLM способны самостоятельно создавать описания тест-кейсов, делая их понятными для людей, которые не участвовали в создании этих тестов напрямую. Это снижает барьер для понимания при работе с другими командами.

Рисунок 2 – Генерация интеграционного теста с помощью LLM
Рисунок 2 – Генерация интеграционного теста с помощью LLM

Использование LLM при создании API-тестов демонстрирует перспективы более эффективного и инновационного подхода к тестированию. Однако успех в применении LLM зависит от интеграции их с экспертизой разработчиков и тестировщиков.

Список использованной литературы