BDD/TDD против JAD?

Я предлагал, чтобы мое рабочее место внедрило Behavior-Driven-Development, написав высокоуровневые спецификации в формате сценария, и таким образом, чтобы можно было представить написание теста для него.

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

Однако трудно продемонстрировать ценность этого для бизнеса.

Это связано с тем, что у нас уже есть процесс совместной разработки приложений (JAD), в котором все разработчики, менеджмент, пользовательский интерфейс и тестировщики собираются вместе, чтобы согласовать общий набор требований.

Итак, они спрашивают, почему разработчики должны работать против тест-кейсов, созданных тестерами? Они предназначены для проверки и основаны на высокоуровневых спецификациях, созданных командой UX, над которыми разработчики в настоящее время работают.

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

Кажется, у них есть смысл.

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

4 ответа

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

Что происходит в вашей ситуации, что вы думаете, это улучшится?

Основное преимущество BDD заключается в улучшении коммуникации между заинтересованными сторонами и разработчиками.

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

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

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

http://codingcraft.wordpress.com/2011/11/12/bdd-get-your-tdd-right/

Это могло бы помочь думать о BDD в его самой легкой форме; как обсуждения вокруг конкретных сценариев.

У вас есть ваши варианты использования. У вас есть свои требования. Теперь вы хотите убедиться, что вы действительно хорошо понимаете их. Итак, кто-то - может быть, разработчик, может быть, тестер - говорит: "Хорошо. Просто чтобы убедиться, что я понимаю... учитывая, что мы начинаем с , когда пользователь делает , тогда должно произойти . право?"

И тестер скажет: "Да, все верно".

Тогда UX или аналитик говорит: "Ну, это правильно, если <этот другой контекст не существует>".

При обсуждении сценариев время, затрачиваемое на то, чтобы у всех было общее понимание, резко сокращается. Обычно мы скрываем очевидные сценарии и фокусируемся на крайних случаях; на новых предметных терминах, концепции, которые отличаются между отделами, сложные взаимодействия с унаследованными системами.

Разработчики на самом деле не отрабатывают тест-кейсы. Они работают исходя из требований и критериев приемлемости точно так же, как и всегда. Тестовые случаи просто становятся примером того, чего они могут ожидать; сценарии, в которых пользователи получают выгоду или передают ценность системы. Автоматизация этих тестов может быть полезна, потому что усилия по тестированию увеличиваются примерно пропорционально размеру базы кода.

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

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

Методология нарушается, только если вся команда чувствует, что она нарушена, и если конечный результат - провальный проект.

Если существующая система работает хорошо, тогда вам действительно нужно спросить себя: "Могу ли я так работать, даже если я предпочитаю BDD/TDD?". Если ваш ответ отрицательный, и вы чувствуете, что, возможно, недовольны работой с какой-либо другой системой, то, возможно, это указывает на то, что ваша карьера должна перейти в другое место. Если да, то обними систему.

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

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

:-)

Другие вопросы по тегам