2010-10-06 2 views
1

В Java или Ruby есть много разговоров о тестировании/TDD/BDD. и есть много тестов в проектах Java/Ruby.Почему phper не волнует тест?

Но я замечаю, что в PHP-проекте меньше тестов, и, похоже, PHPer не любит писать тесты, я просто хочу знать причину. спасибо

+3

Это грубая чрезмерная сумма, которая справедлива только для армии разработчиков хобби. TDD, UnitTesting и Continuous Integration [известные и установленные темы в ** профессиональном развитии PHP] (http://qualityassuranceinphpprojects.com/pages/tools.html). – Gordon

ответ

0

ИМО Есть несколько факторов, способствующими:

  • Это довольно новая концепция для PHPERS. Я не использую его сам. Большинство приложений написаны без контрактного дизайна API, поэтому тесты на основе кода предшествуют (на практике).
  • Тестовые рамки (PHPUnit и SimpleTest) не являются естественными.
  • PHP работает в иной среде, чем Ruby/Java. Кроме того, части приложения разбиты на включенные сценарии, которые имеют разные семантики из пакетов; иногда местоположения меняются.
  • PHP не так объектно ориентирован на ядро, как на других языках. Большинство кодов являются процедурными/смешанными или гибридными.

Я бы так далеко и спросить о достоинствах единицы -тестирование для среды выполнения ПГПС. Селен может быть лучшим выбором. Но лично я ищу более простой подход: simple (non-unit) test framework, similar to .phpt, should evaluate output/headers/errors/results

+3

Зависит от архитектуры приложения. Твердое объектно-ориентированное PHP-приложение очень легко тестируется с помощью PHPUnit. Процессуальный код с компонентами, разделенными на включенные скрипты, как вы говорите, может плохо тестироваться. Это недостаток разработчика/архитектора, а не PHP или рамки тестирования. –

+0

Даже процедурный код может быть проверен обоснованно, например. SnapTest. Просто необычно, что кто-то пишет процедурный код, но затем хочет кодировать тестовые классы. Вот почему phpunit & co избегают. И, как вы сказали, включить скрипты и непроцедурный код спагетти не поддаются многому тестированию. Однако упомянутые сценарии являются широко распространенным архитектурным шаблоном PHP (думаю, взгляды и шаблоны). – mario

+1

IMHO, бизнес-логика и логика вида/шаблона - это те вещи, которые могут/должны быть протестированы независимо. Бизнес-логика с модульными и интеграционными тестами, а также представления/шаблоны с помощью Selenium и аналогичных инструментов. Я думаю, что отсутствие тестирования связано в основном с незнанием разработчика или дезинформацией, но это, конечно же, не изолировано от PHP. PHP-разработчики просто мало доступны для обучения, особенно для этих тем. –

3

Я использовал несколько приложений или библиотек на разных языках, которые не включали модульные тесты. Это не что-то изолированное от сообщества PHP.

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

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

Смежные вопросы