4.6 KiB
4.6 KiB
QATesterAgent Mechanism - VoIdea
Дата: 2026-05-10 Статус: Backlog
Обзор
Механизм функционального тестирования с созданием временных аккаунтов и очисткой.
Архитектура
QATesterAgent responsibilities
-
Создание временных аккаунтов
- Уникальный префикс:
test_* - Автоматическая генерация данных
- Ограничение по времени жизни
- Уникальный префикс:
-
Выполнение тестов
- Функциональные тесты
- API тесты
- UI тесты (через UITestAgent)
-
Очистка
- Удаление временных данных
- Проверка целостности
- Логирование результатов
Процесс работы
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
Правила очистки
Безопасность
- Никогда не удалять пользователей без
test_префикса - Использовать soft delete перед hard delete
- Логировать все операции очистки
- Проверять foreign key constraints
- Тестировать очистку в 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
Триггеры
- pre-commit — автоматически перед merge
- Ежедневно — scheduled в cron
- Вручную — кнопка в админ-панели
- После 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