Каждый уровень отвечает на свой вопрос
Unit-тест проверяет чистое правило без базы. Integration-тест доказывает mapping, SQL и транзакцию на целевой СУБД. HTTP-тест проверяет маршрут, валидацию и статус. Browser smoke подтверждает критичный пользовательский поток.
Не переносите всё в E2E: такие тесты медленнее и хуже указывают причину. Но mock PDO не доказывает, что запрос работает. Выберите минимальный дорогой тест для каждого инфраструктурного риска.
Поток доказательств
Отрицательный сценарий важнее копии реализации
Для публикации проверьте отсутствие подходов, чужого владельца, конфликт version, отказ history insert и повтор idempotency key. Тест, который повторяет те же if в ожидаемом значении, почти ничего не доказывает.
Fixtures называют смысл: workoutDraftOwnedBy, conflictingPublishedWorkout. Огромный общий seed делает тесты связанными и скрывает, какой факт нужен сценарию.
Статический анализ видит форму потока
Анализатор уточняет shape массива, nullable-ветви, недостижимый код и несовместимые вызовы. Он не доказывает право доступа или верность SQL, но сокращает класс ошибок до запуска.
Уровень усиливают постепенно: сначала новый код и критичные каталоги, затем baseline сокращается отдельными изменениями. Бесконечный baseline превращает инструмент в декоративный отчёт.
Обновление PHP 8.5
Перед сменой ветки включите все deprecation-сообщения в CI, прочитайте migration guide, обновите зависимости и запустите полный набор на целевом интерпретаторе. PHP 8.5 устаревшим объявляет ряд неканонических cast-имён и некоторые старые magic serialization методы.
Новые возможности вводятся после обновления production-runtime, а не до него. Pipe operator и clone with остаются за feature branch, пока минимальная платформа проекта допускает 8.4.
Лабораторная работа
Составьте матрицу тестов публикации тренировки и план обновления 8.4→8.5. Для каждого риска укажите самый дешёвый уровень, который действительно его обнаруживает.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Перелинковка со справочником
Проверка актуальности
- php.nethttps://www.php.net/releases/8.5/en.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- php.nethttps://www.php.net/manual/en/migration85.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- getcomposer.orghttps://getcomposer.org/doc/03-cli.mdПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
Текст и схемы созданы для этого самоучителя без воспроизведения страниц, иллюстраций и листингов приложенной книги. Проверено: .