Представляем разработку через тестирование в PHP - PullRequest
5 голосов
/ 16 мая 2009

Мое рабочее место состоит из множества ковбойских кодеров. Многие из них младшие. Что, по совпадению, приводит к большому количеству проблем с качеством кода.

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

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

Я надеюсь, что есть несколько практических советов о том, как представить TDD команде. В частности, какие инструменты лучше всего выбрать в стеке LAMP (php).

Извините, если этот вопрос слишком открытый.

Ответы [ 5 ]

4 голосов
/ 06 июня 2009

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

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

Я обнаружил, что CI-сервер является основным краеугольным камнем в любой среде TDD. Если разработчики не знают, что что-то плохое случится, если они не напишут тесты, у вас всегда будут ковбои, которые чувствуют, что это под ними.

2 голосов
/ 16 мая 2009

Сделать письменные тесты легко и результаты видимы .

  • Используйте TestFramework с хорошей документацией. как SimpleTest
  • Если проверка зависит от содержимого базы данных, создайте справочную базу данных, которая будет удалена и создана в начале сценария.
  • Создайте сценарий, который запускает все тесты и отображает результаты на отдельном мониторе или что-то такое, что сделает тест видимым / легко доступным. (Запуск командной строки не вариант)

Лично я не пишу тест для каждого куска кода в приложении.
Фокус на доменных объектах в приложении. В моем случае это «расчет цены» и «изменение запасов»

Напомните им, что они, вероятно, уже пишут тесты, но что они удаляют свою работу сразу после создания. Пример: во время разработки функции у вас будет страница / тестовый скрипт с echo или var_dump () результатом. После проверки результата вручную вы измените параметры функции и снова проверите.

С некоторыми дополнительными усилиями эти тесты могут быть автоматизированы в UnitTest. А какой программист не любит автоматизировать вещи?

0 голосов
/ 16 мая 2009

SimpleTest - отличная документация и объяснения тестирования для php

0 голосов
/ 16 мая 2009

Еще один способ запустить TDD - попытаться использовать PHP-фреймворк. Без фреймворка сложно эффективно реализовать модульное тестирование.

0 голосов
/ 16 мая 2009

Что касается вопроса команды, а также универсальных идей о разработке и тестировании программного обеспечения, я бы предложил сайт и книги Джоэла Спольски: http://joelonsoftware.com/ Я получил от него много идей.

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