🧪

Process Testing

Test matrix, smoke tests и quality gates

Test Matrix (Mandatory)

Каждый process template должен пройти через 4 типа тестов перед релизом:

Happy Path

Нормальное выполнение процесса от start до succeeded.

Given:

Валидный input, все сервисы доступны

When:

Запуск процесса через /run или n8n

Then:
  • • status = succeeded
  • • output соответствует schema
  • • latency в пределах SLA
  • • user получил ответ в Telegram
⚠️

Degraded Path

Выполнение с fallback (timeout, memory, model).

Scenarios:
  • • Ollama timeout → lighter model
  • • Memory error → reduced num_predict
  • • Model not found → fallback model
Then:
  • • status = succeeded OR degraded
  • • degraded = true в ответе
  • • fallback trace в automation_events
  • • user получил честный degraded ответ

Failure Path

Обработка критических ошибок.

Scenarios:
  • • Ollama недоступен
  • • All fallback models exhausted
  • • Invalid input schema
  • • Safety policy violation
Then:
  • • status = failed
  • • error_text заполнен
  • • incident ticket создан
  • • user получил информативное сообщение
👥

Group/Thread Path

Тестирование в групповых чатах (если процесс групповой).

Scenarios:
  • • Команда без @mention → hint или игнор
  • • Команда с @bot → адресный ответ
  • • Thread reply → ответ в thread
Then:
  • • Нет fan-out (один бот отвечает)
  • • Chat_id корректно определён
  • • Thread_id сохранён

Done Criteria

Тест считается пройденным, если:

Есть row в process_runsprocess_runs
Есть step historyprocess_run_steps
Есть user-facing output в Telegrammessages
Есть trace в automation_eventsautomation_events
LLM calls залогированыllm_calls
Latency в пределах SLAprocess_runs.latency_ms

Smoke Test Commands

/swarm_test status

Проверить статус swarm тестов

/swarm_test start [scenario]

Запустить bot-to-bot chain scenario

/swarm_test processes [all|n8n|local] [limit]

Прогнать все активные процессы через smoke matrix

Test-related DB Tables

process_template_tests

Результаты smoke тестов для каждого template

- template_key
- test_type (happy|degraded|failure|group)
- status (passed|failed)
- latency_ms
- error_text
- ran_at
mart.vw_process_test_gate

View для quality gate проверки

SELECT * FROM mart.vw_process_test_gate
WHERE template_key = 'web_search';

-- Возвращает:
-- all_tests_passed: true/false
-- missing_tests: [...]
-- last_run_at

Quality Gate

Процесс готов к прод-запуску если:

✅ Must Have

  • • Happy path passed
  • • Degraded path passed
  • • Failure path passed
  • • Contract в БД
  • • n8n workflow (если применимо)

⚠️ Should Have

  • • Group path passed (если групповой)
  • • Swarm test scenario
  • • Run panel template
  • • Documentation в wiki

Example: Test Run Trace

-- 1. Запуск теста
INSERT INTO process_runs (process_id, status, input_payload)
VALUES (123, 'running', '{"query": "test query"}')
RETURNING id; -- run_id = 456

-- 2. Step events
INSERT INTO process_run_steps (run_id, step_name, status)
VALUES (456, 'decompose', 'succeeded');
INSERT INTO process_run_steps (run_id, step_name, status)
VALUES (456, 'search', 'succeeded');
INSERT INTO process_run_steps (run_id, step_name, status)
VALUES (456, 'synthesize', 'succeeded');

-- 3. LLM calls
INSERT INTO llm_calls (scope, model, latency_ms, process_id)
VALUES ('process:web_search', 'phi4-mini', 3500, 123);

-- 4. Automation events
INSERT INTO automation_events (event_type, payload)
VALUES ('process.run.succeeded', '{"run_id": 456}');

-- 5. Telegram output
INSERT INTO messages (chat_id, role, text)
VALUES (789, 'assistant', 'Вот результаты поиска...');

-- 6. Test result
INSERT INTO process_template_tests (template_key, test_type, status, latency_ms)
VALUES ('web_search', 'happy', 'passed', 3500);
← Process Rulesn8n Integration