Вопрос

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

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

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

Это было полезно?

Решение

Я использовал как PHPUnit, так и Простой тест и я нашел Простой тест чтобы было проще использовать.

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

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

Другие советы

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

PHPUnit — это стандарт, но иногда он слишком сложен, поэтому, если он кажется вам слишком сложным, проверьте PHPT чтобы вы начали.В нем очень и очень легко писать тесты.Это несложная задача для любого программиста.

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

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

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

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

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

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

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

Вам следует изучить PHPUnit, он очень похож на nUnit.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top