Я немного вокальный сторонник методологии Behavior Driven Development (также известной как BDD). Я применяю BDD уже пару лет, и выбрал StoryQ в качестве своего предпочтительного фреймворка при разработке приложений DotNet. Несмотря на то, что я проходил модульное тестирование в течение многих лет и ранее перешел на подход, основанный на тестировании, я обнаружил, что я получаю гораздо больше пользы от использования инфраструктуры BDD, потому что мои тесты отражают цели требований в относительно ясный английский в моем коде, и потому что мои тесты могут выполнять несколько утверждений, не заканчивая тест на полпути - это означает, что я могу сразу увидеть, какие конкретные утверждения пройдут / не пройдены без отладки, чтобы доказать это.
Это действительно был для меня вершина айсберга, так как я также заметил, что могу отлаживать как тестовый, так и программный код более целенаправленно, в результате чего моя производительность значительно выросла, и я могу больше легко определить, где происходит сбой в случае возникновения проблемы, чтобы пройти весь путь до сборки интеграции из-за выходных данных, попадающих в журналы сборки. Кроме того, API StoryQ имеет прекрасный свободный синтаксис, который легко выучить и который можно применять необычайным количеством способов, не требуя внешних зависимостей для его использования.
Поэтому, учитывая все эти преимущества, вы можете легко представить эту концепцию остальной части команды. К сожалению, другие члены команды неохотно даже смотрят на StoryQ, чтобы оценить его должным образом (не говоря уже о том, чтобы развить идею применения BDD), и убедили друг друга попытаться удалить ряд элементов StoryQ из нашей собственной инфраструктуры тестирования ядра, даже хотя изначально они поддерживали использование StoryQ, и хотя код, который они хотят удалить, не влияет ни на какую другую часть нашей системы тестирования. Это в конечном итоге значительно увеличило бы мою рабочую нагрузку и действительно пошло бы на спад, так как из практического опыта я убедился в том, что это лучший способ работать в тестовом режиме в нашей конкретной рабочей среде и может привести только к большей улучшение качества нашего программного обеспечения, учитывая, что я мне показалось, что проще придерживаться теста, используя BDD. Чтобы уточнить, большинство из наших модульных тестов, как правило, довольно хрупкие и трудные в обслуживании, пережиток многих лет плохо примененного тестирования, когда нежелание придерживаться процесса, управляемого тестами, заставило разработчиков отступить от старых привычек и сделайте все их тестирование в конце проекта (эти же люди утверждают, что они Agile!).
Таким образом, вопрос действительно сводится к следующему:
- Какие аргументы я могу использовать, чтобы действительно понять, что для этой команды было бы лучше использовать StoryQ или, по крайней мере, принять методологию BDD?
- Можете ли вы указать мне какие-либо неподтвержденные доказательства, которые я могу использовать для обоснования своего аргумента о принятии BDD в качестве нашего стандартного метода выбора?
- Какие контраргументы, о которых вы можете подумать, могут предположить, что мое желание побудить команду принять BDD может быть ошибочным? Да, я счастлив, что оказался неправ, если аргумент является обоснованным.
ПРИМЕЧАНИЕ . Я не защищаю то, что мы полностью переписываем наши тесты, а скорее просто начинаю работать по-другому для всей будущей работы по тестированию, и, предпочтительно, так, как мы привлекаем наших клиентов.
А для тех, кто хочет больше узнать о BDD, могут быть полезны следующие ссылки:
- http://dannorth.net/introducing-bdd/
- http://en.wikipedia.org/wiki/Behaviour_driven_development
- http://behaviour-driven.org/Introduction
Для тех, кто интересуется более подробной информацией, мы - небольшая команда из 4 человек, которая работает над 5 крупными проектами. «Пилотное испытание» для BDD первоначально длилось около 2 месяцев, а еще через 4 месяца. Команда согласилась, чтобы я продолжал работать таким образом, и должен был провести свои собственные испытания. После окончания судебного процесса я занимаюсь BDD около 2 лет, в то время как другие стали очень хорошо справляться с этой проблемой. Вместо того, чтобы навязывать «конфронтацию» по этому вопросу, я ищу способы мягко убедить команду избавиться от коллективных споров и выделить время, чтобы внести свой вклад.