Обзор автоматизированного тестирования

Тестирование — это неотъемлемая часть современной разработки, которая обеспечивает надежность, предсказуемость и качество кода. В этом руководстве мы рассмотрим три основных уровня тестирования, используемых нашим модулем. Мы используем PHPUnit для модульного и интеграционного тестирования и Selenium для функционального (end-to-end) тестирования.

Пирамида тестирования

Пирамида тестирования — это концепция, которая иллюстрирует идеальное соотношение усилий между разными типами тестов.

testing_pyramid

Чем выше уровень, тем тесты медленнее, дороже в разработке и поддержке, но ближе к поведению системы с точки зрения пользователя.

Юнит-тесты

Юнит-тесты проверяют работу самых маленьких и изолированных частей приложения — отдельных функций, методов или классов. Их главная цель — проверить, что каждая "единица" кода работает корректно сама по себе.

Интеграционные тесты

Интеграционные тесты проверяют взаимодействие между несколькими компонентами системы. В контексте веб-приложения это часто означает тестирование с реальной базой данных, внешними API (через моки) или файловой системой.

Функциональные тесты

Функциональные тесты имитируют поведение реального пользователя в браузере. Они проверяют весь поток приложения от начала до конца, включая фронтенд и бэкенд.