Skip to content

Тестирование

Тестировал backend-приложения и выстраивал проверки качества в рамках полного delivery-процесса: от локальных unit/feature тестов до CI pipeline и нагрузочных прогонов.

Основной фокус:

  • PHPUnit для Unit и Feature тестов;
  • тестирование HTTP endpoint-ов и пользовательских сценариев;
  • интеграционные проверки с PostgreSQL и Redis;
  • quality gates в CI: форматирование, линтеры, typecheck, автотесты;
  • нагрузочное тестирование API/web-сценариев;
  • проверка устойчивости инфраструктурных сценариев: очереди, кэш, идемпотентность, rate limiting.

PHPUnit и Laravel tests

Использовал PHPUnit для написания тестов в Laravel-проектах.

Что использовал на практике:

  • Feature тесты для контроллеров, маршрутов и пользовательских сценариев;
  • Unit тесты для сервисов и изолированной бизнес-логики;
  • тестирование успешных сценариев и ошибок валидации/доступа;
  • Laravel testing helpers и assertions;
  • fake-инфраструктуру для событий, очередей, storage/mail.

Тесты разделял на Feature и Unit suites, окружение задавал через phpunit.xml.

Тестовое окружение

Есть опыт настройки отдельного тестового окружения, чтобы тесты не зависели от production/dev state.

В практике это включает:

  • отдельную тестовую БД;
  • APP_ENV=testing;
  • упрощённые drivers для cache, session и queue там, где не требуется внешний сервис;
  • отключение лишней observability-инфраструктуры в тестах;
  • фиксированные настройки, которые ускоряют тестовый прогон.

Такой подход делает тесты воспроизводимыми и снижает риск случайного влияния локального или production-состояния на результат.

Интеграционные проверки

Есть опыт интеграционных проверок, где тест должен подтвердить не только отдельный метод, но и взаимодействие нескольких слоёв.

Типовые сценарии:

  • HTTP request -> controller -> service -> database;
  • проверка маршрутов и middleware;
  • работа с PostgreSQL в тестовом окружении;
  • сценарии, где важны cache/session/queue настройки;
  • проверка edge cases вокруг авторизации, email verification, password reset и account lifecycle.

CI quality gates

Есть опыт включения тестов в CI/CD pipeline.

Обычно разделяю проверки на несколько независимых gate-ов:

  • PHP formatting/linting;
  • JavaScript lint;
  • JSDoc/TypeScript typecheck;
  • backend test suite;
  • сборка production-артефактов только после успешных проверок.

В CI поднимал сервисы для интеграционных тестов, включая PostgreSQL и Redis, ждал готовности БД и запускал PHP-тесты перед сборкой production-образов.

Нагрузочное тестирование

Проводил базовое нагрузочное тестирование через k6.

Что проверял:

  • throughput;
  • p95 / p99 latency;
  • error rate;
  • dropped iterations;
  • различия между публичными и авторизованными сценариями;
  • поведение системы на границе целевых SLA.

См. также

Сайт обновлен и проверен: