Quantcast
Channel: Найцікавіше на DOU
Viewing all articles
Browse latest Browse all 8115

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

$
0
0

Всем привет!

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

Как писал Стив Макконел,  «Тестирование требует, чтобы вы рассчитывали найти ошибки в своем коде. В противном случае вы, вероятно, на самом деле их не найдете». Но так как 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 написано много разных библиотек для тестирования. Если вам интересно, можно посмотреть тут.


Viewing all articles
Browse latest Browse all 8115

Trending Articles