Как сделать тестирование Driven Development (TDD) в Drupal?

  • Какие инструменты используются TDD в Drupal (модули PHP, модули Drupal и т. д.)?
  • Как выглядит ваш документооборот commit /test /deploy? Используете ли вы Phing, PHPUnderControl, Hudson для управления этим документооборотом?
  • В каком случае модульное тестирование повышает надежность вашего кода?
  • Вам нужен отдельный дорогостоящий автономный тестовый сервер или вы можете сделать это с ноутбука?

Я знаю, что Роберт написал отличный технический пост здесь об модульном тестировании в Drupal с помощью SimpleTest; Я больше заинтересован в покрытии части рабочего процесса и конфигурации. В настоящее время у меня есть машина разработки, промежуточного и производственного сервера. Оба этапа производства и сцены работают на процессоре Dreamhost VPS объемом 300 МБ /300 МГц.

29 голосов | спросил amateur barista 27 MarpmSun, 27 Mar 2011 22:02:57 +04002011-03-27T22:02:57+04:0010 2011, 22:02:57

3 ответа


7

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

Я тоже был разочарован отсутствием инструментов TDD в Drupal. Моя самая большая проблема с ними - это количество времени, которое требуется для запуска одного теста. Циклы развития не могут быть замедлены индивидуальными тестами, принимающими 60-90 секунд на каждую итерацию. Полные комплекты тестов будут работать в многочасовых таймфреймах, если вы вообще не будете писать тесты.

Я подозреваю, что это связано с копированием полного db каждый раз при запуске теста, но это вряд ли изменится в ближайшем будущем из того, что я могу сказать, особенно если вам нужно использовать DrupalWebTestCase для этого.

Я взламываю решение, используя Phactory и phpunit, который загружает Drupal вручную. Очевидно, что он сталкивается с некоторыми проблемами и не закончил его, но он туда попал.

К счастью, большая часть моей работы находится на бэкэнд-слоте, поэтому я могу оставаться на уровне DRUPAL_BOOTSTRAP_DATABASE. Но я столкнулся с большим количеством ситуаций, когда мне понадобится полный стек.

В конце концов, TDD в Drupal недостаточно хорошо поддерживается, поэтому вы можете написать свой собственный, чтобы заставить его работать вне рамки тестирования drupal или выдержать плохую производительность.

- ОБНОВЛЕНИЕ -

Я успешно установил полную интеграцию Drupal с Phactory, и теперь я запускаю свои тесты через phpunit вместо Drupal Web Test Case. Так что это возможно.

Я надеюсь, дойду до того момента, когда я смогу его освободить, и он может быть включен в документ Phactory.

- ОБНОВЛЕНИЕ 2 -

Док о том, как настроить Phactory, находится на https://github.com/trimbletodd/phactory .

ответил trimbletodd 25 J0000006Europe/Moscow 2013, 22:03:42
12

Поскольку блог Марка находится в автономном режиме, я расскажу о некоторых инструментах, которые его команда внедрила:

Функциональное тестирование: Selenium
Единичное тестирование: Simpletest
Сервер сборки: Jenkins
Бенчмаркинг производительности: XDebug + Cachegrind

В течение двух лет с тех пор, как я задал этот вопрос, я видел, как некоторые дополнительные инструменты набирают популярность на сцене TDD. В настоящее время, когда вы говорите о Test Driven Development (в контексте Drupal, конечно), есть две стороны одной и той же монеты - тестирование переднего плана и фоновые тесты.

Вот две презентации, которые выделяются из последнего Drupalcon Portland 2013, представляющего этот вопрос:

Разработка по номерам , тестирование бэкэнд.
Автоматическое тестирование с помощью Jasmine и PhantomJS , тестирование интерфейса.

Первая презентация не связана с единичным или функциональным тестированием (строго говоря), это больше о инструментах для измерения качества кода. Тем не менее, я чувствую, что это несколько связано с темой.

ответил trimbletodd 25 J0000006Europe/Moscow 2013, 22:03:42
4

Единственное, что я знаю, это то, что для добавленных модулей вы можете включить автоматическое тестирование патчей commits и в очереди ошибок, см. http://drupal.org/node/689990 . Он по-прежнему несколько нестабилен, особенно если у вас есть зависимости.

Большинство проектов, вероятно, больше делают что-то в соответствии с разработкой, основанной на ошибках, которая в основном сводится к написанию теста сначала, когда обнаружена ошибка, а затем исправить ее. Если вообще:)

Из моего личного опыта TDD довольно сложно в Drupal, потому что вы часто не пишете (только) модульные тесты с помощью Simpletest, а тесты интеграции, где вы просматриваете страницы и отправляете формы. Поэтому довольно трудно написать хорошие тесты заранее. Но, возможно, я просто не привык к этому:)

ответил Berdir 27 MarpmSun, 27 Mar 2011 22:57:49 +04002011-03-27T22:57:49+04:0010 2011, 22:57:49

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132