Разработка через тестирование в PHP - PullRequest
43 голосов
/ 05 сентября 2008

Я веб-разработчик, работающий на PHP. У меня ограниченный опыт использования Test Driven Development в настольных приложениях на C #. В этом случае мы использовали nUnit для платформы модульного тестирования.

Я бы хотел начать использовать TDD в новых проектах, но я действительно не уверен, с чего начать.

Какие рекомендации вы предлагаете для основанного на PHP фреймворка модульного тестирования и какие полезные ресурсы для того, кто довольно новичок в концепции TDD?

Ответы [ 8 ]

40 голосов
/ 05 сентября 2008

Я использовал оба PHPUnit & SimpleTest , и я обнаружил, что SimpleTest проще в использовании.

Что касается TDD, мне не очень повезло с этим в чистом смысле. Я думаю, что это в основном вопрос времени / дисциплины с моей стороны.

Добавление тестов после того, как факт был несколько полезен, но мое любимое занятие - использовать тесты SimpleTest, которые проверяют конкретные ошибки, которые я должен исправить. Это позволяет очень легко проверить, что вещи действительно исправлены и остаются исправленными.

11 голосов
/ 09 сентября 2008

Я настоятельно рекомендую Разработка через тестирование Кентом Беком (ISBN-10: 0321146530) . Он не был написан специально для PHP, но концепции существуют и должны быть легко переведены на PHP.

9 голосов
/ 05 сентября 2008

PHPUnit является стандартом, но иногда он также перегружен, поэтому, если вы находите его слишком сложным, проверьте phpt , чтобы начать работу. В нем очень легко писать тесты. Нет ничего проще для любого программиста.

И чтобы ответить на ваш вопрос TDD - я не уверен, используется ли TDD в пространстве PHP. Я вижу, что быстрая разработка приложений и TDD несколько конфликтуют (строго ИМХО). TDD требует, чтобы у вас была полная картина того, что вы строите, и вы пишете свои тесты заранее, а затем внедряете код для прохождения теста.

Так, например, вместо этого мы пишем много тестов, когда закончим. Это не всегда лучший подход, потому что вы иногда заканчиваете фиктивными тестами, которые проходят, но не очень полезны, но по крайней мере это то, что вы можете расширить. Внутренне мы продолжаем тестирование и в основном пишем тест для каждой найденной ошибки. Так оно становится более твердым.

4 голосов
/ 06 сентября 2008

Я лично предпочитаю SimpleTest. Есть тестер командной строки и веб-тестер, и даже есть плагин Eclipse , позволяющий запускать модульные тесты из самой IDE. Я обнаружил, что установить соединение Zend с PHPUnit гораздо сложнее, особенно с отладчиком.

То, как мы используем SimpleTest внутри компании, - это сценарий с непрерывной интеграцией , который мы написали сами. Каждый раз, когда мы включаем функцию в SVN, мы включаем модульные тесты. Каждый час или около того скрипт CI запускается и вызывает скрипт PHP командной строки, который запускает все наши модульные тесты. Если перерыв, я получаю электронное письмо. Это был отличный способ уменьшить количество ошибок в наших системах.

Тем не менее, вы можете так же легко использовать что-то вроде Phing для автоматического запуска ваших тестов, либо на задании cron, либо с проверкой регистрации SVN.

На самом деле, если вы хотите связаться со мной напрямую для получения дополнительной помощи, вы можете связаться со мной через информацию моего профиля на SO. Я хотел бы помочь вам.

2 голосов
/ 05 сентября 2008

SimpleTest - отличная система. Я начал с него около 5 месяцев назад, никогда не слышал о TDD, и SimpleTest прост в освоении, но все же эффективен. Что касается ресурсов, я сейчас читаю TDD By Example от Кента Бека, и это хорошо.

1 голос
/ 28 февраля 2012

Еще один современный инструмент, который вы должны посмотреть, это Codeception . Это намного проще, чем PHPUnit, и включает в себя подход, основанный на сценариях, что весьма полезно для генерации документации из тестов.

1 голос
/ 05 сентября 2008

Вы должны заглянуть в PHPUnit , это похоже на nUnit.

0 голосов
/ 26 июня 2018

Разработка через тестирование - это подход, при котором тесты всегда пишутся перед кодом. Сначала вы должны научиться PHPUNIT , чтобы начать разработку TDD. Затем, создавая свою функцию, вы всегда должны думать о том, как она может завершиться неудачей, и писать тестовый пример в phpunit, и в конце вы должны написать код, чтобы пройти тест. Это будет новый подход, так что вначале он будет немного сложным, но как только вы к нему привыкнете, вы найдете его очень полезным, особенно после ошибок разработки и стиля кодирования. Вы можете просмотреть это пошаговое руководство для понимания этой концепции.

Всегда помните, что если тест написан после разработки, он бесполезен. Так что TDD является обязательным, если вы думаете, чтобы написать юнит тест

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...