PHP дайджест #2. Тестирование

Всем привет!

Если вы из тех, кто пишет код, который сразу правильно работает, — думаю, можете дальше не читать:)

Как писал Стив Макконел,  «Тестирование требует, чтобы вы рассчитывали найти ошибки в своем коде. В противном случае вы, вероятно, на самом деле их не найдете». Но так как PHP — не строго типизированный язык, наплодить багов гораздо легче, чем, к примеру, в Java.

— Если вы хотите знать подходы к тестированию, когда нужно писать тесты, или как оптимизировать процесс тестирования, я очень советую прочитать главу № 22 «Тестирование, выполняемое разработчиками» из книги «Совершенный код» Стива Макконнелла.

— PHPUnit — самый популярный и часто используемый фреймворк для юнит-тестирования, он относится к семейству xUnit тестовых библиотек. Позволяет протестировать почти всё, что пожелаете. Хотите Database Testing? Не вопрос,  DBUnit к вашим услугам. На данный момент поддерживает MySQL, PostgreSQL, Oracle and SQLite. Есть возможность параллельного тестирования с ParaTest и т.п.

— Atoum — на мой взгляд, очень интересный тестовый фреймворк, позволяет писать более читабельный код, нежели PHPUnit. Фреймворк предоставляет простой, и в то же время очень сильный mock engine, также встроена поддержка BDD-like синтаксиса написания тестов.

— Simpletest — аналог PHPUnit. Позволяет создавать моки, также позволяет симулировать переход по ссылкам и отправку форм. Но фреймворк давно не обновлялся.

Есть несколько интересных фреймворков для написания тестов в стиле BDD. Можно выделить 2 вида BDD: SpecBDD и StoryBDD. В PHP реализованы тестовые фреймворки для каждого типа.

— Behat — позволяет описывать фичи удобным способом, а именно с помощью человеко-читаемых сценариев, это и есть StoryBDD. Данный вид описания сценариев мне нравится, он понятен и интересен, пример использования можно посмотреть в проекте Sylius — это Symfony2 Ecommerce фреймворк. В PHPStorm есть поддержка Behat.

— Mink — используется для написания приемочных тестов, можно использовать в паре с Behat. Не буду вдаваться в подробности, так как сам нечасто пишу приемочные тесты, посмотреть пример использования можно тут.

— PhpSpec —используется для юнит-тестов, описания тестов в виде спецификаций. Отправной точкой в понимании работы будет официальная документация, также можно почитать туториал и посмотреть видео php-spec-is-so-good. Видео с laracasts поможет понять, когда использовать phpspec.

— Codeception — используется для написания приемочных, функциональных и юнит-тестов, код удобочитабелен и минималистичен. Весь тест описывается в виде сценария, повторяете действия юзера: клики, сабмиты, и прочее.

— Behat и Codeception в сравнении — автор объясняет, почему, на его взгляд, функциональные тесты лучше писать с Behat, а Codeception использовать для приемочных тестов (вместо Behat + Mink).

— Mockery — отличный фреймворк для работы с моками, его можно интегрировать вместе с PHPUnit либо PHPSpec.

— HTTPMock — название говорит само за себя, библиотека для моков http запросов в юнит-тестах.

— vfsStream —эта обертка для потоков файловой системы позволяет создавать моки файловой системы. Тестировать можно и без нее, но она дает несколько преимуществ, описанных здесь.

— TDD example — если написание тестов перед написанием кода для вас не знакомо — автор на своих примерах показывает, как это может быть полезно.

На самом деле на PHP написано много разных библиотек для тестирования. Если вам интересно, можно посмотреть тут.

Підписуйтеся на Telegram-канал редакції DOU, щоб не пропустити найважливіші статті.

👍НравитсяПонравилось0
В избранноеВ избранном0
Подписаться на автора
LinkedIn



Підписуйтесь: Soundcloud | Google Podcast | YouTube


9 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Хороша підбір технологій. Дякую.

я бы добавил бы еще вот такой проект php-vcr.github.io попытка реализовать ruby VCR

Ещё очень крутая библиотека, которой долго не хватало в РНР это FactoryMuffin. Сравнительно недавно я про неё статеечку писал: codeception.com/...​a-with-factorymuffin.html

Отличный дайджест. Но я бы еще добавил бы к нему phactory.org

Ой, я только заметил, вы тоже про генерацию тестовых данных написали )
FactoryMuffin чуть новее и работает с ORM слоем и потому имхо чуть удобнее. Как минимум, стоит обратить внимание )

Действительно, выглядит удобнее, спасибо!

Thank you! The first DOU article that I added to the Favorites.

How can I add to

Favorites
on DOU?

Подписаться на комментарии