# QATesterAgent Mechanism - VoIdea **Дата:** 2026-05-10 **Статус:** Backlog --- ## Обзор Механизм функционального тестирования с созданием временных аккаунтов и очисткой. --- ## Архитектура ### QATesterAgent responsibilities 1. **Создание временных аккаунтов** - Уникальный префикс: `test_*` - Автоматическая генерация данных - Ограничение по времени жизни 2. **Выполнение тестов** - Функциональные тесты - API тесты - UI тесты (через UITestAgent) 3. **Очистка** - Удаление временных данных - Проверка целостности - Логирование результатов --- ## Процесс работы ```python async def run_tests(test_config: TestConfig) -> TestResult: # 1. Создание временных аккаунтов temp_users = await create_temp_users(count=test_config.count) try: # 2. Выполнение тестов results = [] for user in temp_users: result = await execute_test_suite(user, test_config) results.append(result) # 3. Сохранение результатов await save_test_results(results) # 4. Очистка await cleanup_temp_users(temp_users) return aggregate_results(results) except Exception as e: # При ошибке - очистка обязательна await cleanup_temp_users(temp_users) raise ``` --- ## Правила очистки ### Безопасность 1. **Никогда не удалять пользователей без `test_` префикса** 2. **Использовать soft delete перед hard delete** 3. **Логировать все операции очистки** 4. **Проверять foreign key constraints** 5. **Тестировать очистку в staging** ### Механизм очистки ```python async def cleanup_temp_users(users: list[TempUser]): for user in users: # 1. Soft delete await user.soft_delete() # 2. Проверка связанных данных related = await check_related_entities(user.id) if related: await cleanup_related(related) # 3. Hard delete (через время) await schedule_hard_delete(user.id, delay_minutes=5) ``` --- ## Конфигурация ```yaml qa_tester: max_temp_users: 10 # Максимум одновременно user_ttl_minutes: 30 # Время жизни auto_cleanup: true # Автоматическая очистка cleanup_delay_minutes: 5 # Задержка перед hard delete tests: functional: enabled: true timeout_seconds: 300 api: enabled: true timeout_seconds: 60 ui: enabled: true # Через UITestAgent timeout_seconds: 120 ``` --- ## Триггеры 1. **pre-commit** — автоматически перед merge 2. **Ежедневно** — scheduled в cron 3. **Вручную** — кнопка в админ-панели 4. **После failed тестов** — FixAgent запускает повторно --- ## Статусы Агент может находиться в состояниях: - `idle` — готов к работе - `creating_users` — создаёт temp аккаунты - `running_tests` — выполняет тесты - `cleaning` — очищает данные - `error` — требует внимание - `offline` — отключён --- ## Отчёты После каждого теста создаётся отчёт: ```json { "test_id": "uuid", "timestamp": "2026-05-10T12:00:00Z", "status": "passed|failed", "users_created": 3, "users_cleaned": 3, "tests_run": [ { "name": "test_create_idea", "status": "passed", "duration_ms": 150 } ], "bugs_found": [], "logs": "..." } ``` --- ## TODO - [ ] Реализовать QATesterAgent - [ ] Создать механизм создания temp users - [ ] Реализовать безопасную очистку - [ ] Добавить отчёты в админ-панель - [ ] Настроить триггеры - [ ] Интегрировать с FixAgent - [ ] Написать тесты механизма --- *Создано: 2026-05-10* *Управляется QATesterAgent*