Files
voidea/docs/backlog/qa-tester-agent-note.md
T

4.6 KiB

QATesterAgent Mechanism - VoIdea

Дата: 2026-05-10 Статус: Backlog


Обзор

Механизм функционального тестирования с созданием временных аккаунтов и очисткой.


Архитектура

QATesterAgent responsibilities

  1. Создание временных аккаунтов

    • Уникальный префикс: test_*
    • Автоматическая генерация данных
    • Ограничение по времени жизни
  2. Выполнение тестов

    • Функциональные тесты
    • API тесты
    • UI тесты (через UITestAgent)
  3. Очистка

    • Удаление временных данных
    • Проверка целостности
    • Логирование результатов

Процесс работы

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

Механизм очистки

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)

Конфигурация

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 — отключён

Отчёты

После каждого теста создаётся отчёт:

{
  "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