SmartBDD
Описание
Интерактивное приложение, которое позволяет пользователю генерировать BDD-сценарии в формате Gherkin в виде диалога с языковой моделью (GigaChat).
Языки
- Python100%
SmartBDD
Интерактивное приложение, которое позволяет пользователю генерировать BDD-сценарии в формате Gherkin в виде диалога с языковой моделью (GigaChat).
📝 Оцените приложение
Помогите нам стать лучше! Пожалуйста, заполните короткий опрос (3-5 минут):
🏗️ Новая архитектура с MCP сервером
Приложение теперь состоит из двух компонентов:
- Streamlit клиент (
) - веб-интерфейс для взаимодействия с пользователемSmartBDD.py - MCP сервер (
) - серверная часть для управления контекстом, историей и RAG-поискомmcp_server.py
Установка и запуск
Требования:
- Установлен VSCode (можно использовать любую другую IDE)
- Установлен Python версии >=3.10.0,<3.13.0
- Создано и активировано виртуальное окружение (venv):
- python -m venv ./.venv
(для *nix, MacOS);source ./.venv/bin/activate(для Win).\.venv\Scripts\activate
Шаги:
- Склонировать проект (
)git clone <...> - Настроить виртуальное окружение и установить необходимые зависимости (в корне проекта ввести:
)pip3 install -r requirements.txt
Запуск приложения
1. Запуск MCP сервера
Откройте новый терминал и выполните:
Сервер запустится на http://localhost:8000
2. Запуск Streamlit клиента
Откройте другой терминал и выполните:
Приложение откроется в браузере по адресу http://localhost:8501
Интерфейс
После запуска команды в терминале в браузере откроется окно приложения. В поле ввода необходимо ввести GigaChat API ключ. Инструкция по тому, как получить GigaChat API ключ находится в документации.

После успешной авторизации откроется чат-приложение. В сайд-баре можно менять версию модели GigaChat, температуру генерации и также прикреплять файл с шагами для Gherkin сценариев. Пример файла 
Инструкция по формированию файла zapp_steps_functions.json
Файл содержит описание шагов для автоматизированного тестирования, включая их параметры, документацию и связанные функции. Вот как формируется этот файл:
1. Структура каждого шага
Каждый шаг представлен в виде JSON-объекта со следующими полями:
: Шаблон строки шага с параметрами (например,pattern)."Я авторизовался под пользователем \"{user_name}\"": Документация шага, описывающая его назначение, параметры и действия.docstring: Тип шага (step_type,given,when,then), определяющий его роль в сценарии.step: Имя функции, которая реализует логику шага.function_name: Файл, в котором находится функция.file
2. Источники данных
Файл формируется на основе:
- Кода тестовых функций: Извлекаются имена функций, их параметры и docstring.
- Шаблонов шагов: Шаблоны шагов (например, для авторизации или создания кейса) определяются вручную или автоматически на основе кода.
- Метаданных: Тип шага (
,given,when) и связанные файлы указываются явно.then
3. Процесс формирования
-
Сбор функций:
- Анализируются файлы (например,
,swtr.py), извлекаются функции, предназначенные для тестовых шагов.spaces.py - Для каждой функции извлекаются docstring и параметры.
- Анализируются файлы (например,
-
Создание шаблонов:
- На основе параметров функций формируются шаблоны шагов (например,
для параметра"{user_name}").user_name
- На основе параметров функций формируются шаблоны шагов (например,
-
Добавление метаданных:
- Каждому шагу присваивается тип (
,given,whenилиthen).step - Указывается файл, в котором находится функция.
- Каждому шагу присваивается тип (
-
Сохранение в JSON:
- Все шаги сохраняются в массив JSON-объектов, как показано в файле.
4. Пример для нового шага
Допустим, есть функция в :
Соответствующий шаг в :
5. Поддержка актуальности
- При добавлении новых функций или изменении существующих файл
должен обновляться автоматически (с помощью скриптов) или вручную.zapp_steps_functions.json - Важно проверять уникальность шаблонов, чтобы избежать дублирования.
6. Использование
Файл используется:
- Для генерации документации по шагам.
- Для валидации тестовых сценариев.
- Как справочник для написания новых тестов.
Рекомендации по написанию запросов
Обозначать элементы интерфейса в кавычках
Все элементы интерфейса (кнопки, поля, вкладки и прочее), которые являются локаторами обязательно указывать в двойных кавычках:
❌ Нажал на сохранить.
✅ Нажал на кнопку "Сохранить"
Писать подробно и последовательно
Вместо кратких или абстрактных формулировок каждый шаг должен точно отражать действие пользователя:
❌ Пользователь нашел в поиске методы тестирования.
✅ Пользователь ввел в "Поле Поиска" значение "методы тестирования" и нажал на кнопку "Найти"
Прописывать все ожидаемые действия и результаты
Избегать обобщений. Нужно подробно описывать поведение пользователя и что он проверяет:
❌ Клонировать тест кейс с параметрами
✅ Пользователь переходит в раздел "Кейсы" в созданном пространстве, нажимает кнопку "Клонировать" и подтверждает клонирование. Он убеждается, что появляется новый кейс с названием "Summary (Клон)", переходит в него (по номеру 2), снова открывает вкладку "Шаги" и проверяет, что отображаются шаг "шаг 1" и параметр "key1", а также что значение ключа параметра — "key1", а значение параметра — "value1".
API MCP сервера
MCP сервер предоставляет следующие endpoints:
- Добавление сообщения в сессию,
- Получение истории сессии,
- Загрузка JSON файла с шагами,
- Список JSON файлов,
- Получение контекста для генерации,
- Сохранение сгенерированного сценария,
- Проверка здоровья сервера,
Примечания
В зависимости от того, какой API ключ GigaChat используется, нужно в коде поменять соответствующую строку