Skip to content

Latest commit

 

History

History
158 lines (105 loc) · 6.06 KB

File metadata and controls

158 lines (105 loc) · 6.06 KB

Testing Strategy — Accellens

Версия: 1.0 Дата: 10 ноября 2025


1. Принципы

  • Shift-left: тесты запускаются локально и в CI на каждом PR.
  • Треугольник тестирования: unit > integration > e2e.
  • Автоматическая проверка доступности UI после каждого изменения.
  • Данные тестов анонимизированы (без PII).

2. Уровни тестирования

2.1 Unit Tests

  • Backend: pytest, pytest-asyncio, pytest-celery. Проверка API схем, in-memory repositories, Celery tasks (unit-level).
  • Frontend: vitest + Testing Library, @testing-library/react. Проверка UI атомов и хуков, Storybook stories содержат автоматические тесты через @storybook/test-runner.
  • AI: unit tests на промпты (snapshot), deterministic fixtures, проверка fallback логики.
  • Покрытие: ≥80% backend, ≥75% frontend, ≥70% scanners. Метрика фиксируется Quality Gate в CI (coverage.xml), build блокируется при падении ниже порогов.

2.2 Integration Tests

  • Docker Compose (PostgreSQL, Redis, RabbitMQ, MinIO, backend, scanner web).
  • Проверяем ingest → Celery pipeline → db persistence.
  • Mobile integration: Appium с mock APK, сиркулирует по CI device farm.
  • Минимум один smoke тест на успешный и один на провалившийся скан.

2.3 End-to-End Tests

  • Web UI: Playwright (desktop + mobile viewport).
  • Mobile pipeline: Appium (smoke tests) — nightly.
  • CI workflows: GitHub Action dry-run.

2.4 Accessibility Regression

  • axe-core + pa11y на UI.
  • Сравнение accessibility tree snapshots (jsondiff).
  • Аудио сравнение (spectral/semantic similarity) — nightly.

E2E a11y checks (Playwright + axe-core):

  • docs/testing/a11y-e2e-playwright-axe.md

2.5 Performance & Load

  • k6 scripts для параллельных сканов (10/50/100 concurrent).
  • Цели: очередь < 5 минут, API p95 < 500ms.

Load testing guide:

  • docs/testing/load-testing-k6.md

Parallel test execution:

  • docs/testing/parallel-test-execution.md

Test performance monitoring:

  • docs/testing/test-performance-monitoring.md

2.6 Security

  • SAST: bandit, semgrep, npm audit.
  • DAST: OWASP ZAP (стейджинг) — еженедельно.
  • Dependency scanning: trivy (containers), snyk (optional).

3. Test Data

  • Fixture проекты: demo-web, demo-mobile.
  • Синтетические страницы в tests/fixtures/web (WCAG violations intentionally).
  • Mobile APK/IPA mock builds в защищённом облаке (access via VPN).

4. CI Pipeline

  1. lint (Python/TS, Playwright).
  2. test:unit (parallel matrix).
  3. test:integration (docker compose).
  4. test:e2e (conditionally, nightly full run, PR smoke subset).
  5. scan:security (daily schedule).

Artifacts: coverage reports, junit xml, accessibility snapshots.

4.1 Критерии блокировки

  • Любой lint, unit, integration, e2e smoke failing → блок merge.
  • Nightly full e2e: failure → создаётся type:bug issue, release freeze до фикса.
  • Security scan (bandit, trivy) → high severity блокирует релиз.

5. Flaky Test Management

  • Retries: unit tests --maxfail=1 --reruns 2 (pytest-rerunfailures).
  • Playwright: retries: 2, trace on failure.
  • Track flaky список в tests/flaky.yaml (auto-generated).

6. Release Validation

  • Staging regression suite (full e2e + accessibility + performance baseline).
  • Production smoke post-deploy (healthcheck, sample scan).

7. Tooling

  • make test — агрегированный запуск.
  • Nx targets: nx run backend:test, nx run frontend:test и т.д.
  • Reports: Allure (optional), HTML coverage, PDF accessibility summary.

8. Ownership & Reporting

  • QA Lead: управляет тестовым календарём, подписывает релизы.
  • Dev Leads: отвечают за покрытие в своих областях (backend/frontend/AI/scanners).
  • DevOps: поддержка CI сред, k6/perf пайплайны, хранение артефактов.
  • Accessibility Specialist: еженедельный review Assistive Simulation output, ручной чек критичных findings.
  • Еженедельный отчёт: состояние тестов, flaky список, открытые баги P0/P1.

9. Документационные примеры и smoke-тесты

  • docs/scripts/verify-api-examples.py (см. docs-smoke-tests.md) выполняет curl-запросы из api-reference.md на локальном dev окружении, проверяя статус 2xx/4xx и структуру ответа.
  • nx run cli:smoke запускает CLI примеры из cli-reference.md в режиме dry-run (--dry-run), сверяет exit codes и форматы вывода.
  • Проверки запускаются в CI job docs:smoke (по cron и перед релизами). Failure блокирует merge и требует обновления примеров или кода.
  • Документация обновляется вместе с кодом: PR должен включать обновление smoke тестов при изменении примеров.

10. Roadmap Testing Improvements

  • Automated comparison между версиями (delta report).
  • Chaos testing для scan runners (node failures).
  • Synthetic monitoring для API/SSE.
  • Полная автоматизация проверки документации (подстановка версий, автогенерация примеров).
  • Интеграция с BrowserStack Live для ручных accessibility сессий.