По моему ограниченному опыту работы с ними, исполняемые требования (то есть указание всех требований как сломанных автоматических тестов) оказались удивительно успешными. Я работал над одним проектом, в котором мы уделяли большое внимание созданию высокоуровневых автоматизированных тестов, которые проверяли все функции данного варианта использования / пользовательской истории. Для меня было действительно удивительно, насколько легче стало развиваться после того, как мы начали эту практику. Внедрение функций стало намного проще после написания теста, и мы смогли внести серьезные архитектурные изменения в систему со всей уверенностью в мире, что все по-прежнему работает так же, как и вчера.
Самая большая проблема, с которой мы столкнулись, заключалась в том, что инструменты для управления этими типами тестов не очень хороши. Мы довольно часто использовали Fitnesse, и в результате я ненавижу этот фреймворк.
Я хотел бы знать: 1) есть ли у кого-нибудь еще опыт разработки с использованием этого типа определения требований, основанного на тестировании, и 2) какие инструменты вы все использовали для этого.





Мой опыт ограничен личными проектами и обнаружил во многом те же преимущества, о которых вы упомянули. Я рекомендую http://metacpan.org/pod/Test::Simple::Tutorial, который был моим источником вдохновения для тестирования разработки на основе тестирования. Модули тестирования Perl кажутся довольно полезными и гибкими, хотя мне не с чем их сравнивать.
Я также считаю, что тесты жизненно важны в период сопровождения проекта. Если у вас есть хорошие тесты для начала, это сэкономит много времени и позже сделает ошибки. Мне жаль, что я не поработал над тестами моего текущего проекта.
Я обнаружил, что использование контракты - отличный подход. Контракты метапрограммирования, как правило, более низкоуровневые, чем типы интеграционных тестов, которые вы описываете, но они, конечно, не исключают друг друга. Я считаю, что контракты помогают синхронизировать документацию, реализацию и тестирование - это основная проблема TDD (не то чтобы это не проблема не-TDD).
Основным инструментом, который я также использовал, был FitNesse. Я использовал его в нескольких компаниях с очень хорошими результатами. У нас действительно были тестовые примеры, исчисляемые тысячами, и мы должны были быть очень дисциплинированными в том, как мы их организовываем и используем.
Я пробовал и другие инструменты, включая написание собственного DSL (предметно-ориентированного языка) и использование таких вещей, как RSpec. Мне очень нравится RSpec, но это, безусловно, больше инструмент для разработчиков, чем для бизнеса.
I know Rick Mugridge has been working on a tool called ZiBreve (http://www.zibreve.com/visit.php?page=index), который должен иметь более сильную поддержку рефакторинга. Я сам не использовал его, но я знаю Рика и разговаривал с ним несколько раз. Я знаю, что на Agile 2008 обсуждались различные способы работы с тестами Fitnesse в целом.
Кроме этого, я не видел много хороших инструментов. Даже такие инструменты, как WinRunner, подходят для типовых тестов QA, но для исследовательского тестирования требований со стороны бизнеса FitNesse или настраиваемый DSL, похоже, подходят прямо сейчас.
Я пробовал Fitnesse, и он действительно ужасен (особенно интеграция с SVN). И наша компания разрабатывает аналогичный инструмент с открытым исходным кодом с подходящим движком: FitPro
Еще один замечательный инструмент, который я использовал, - Concordion. Единственный минус - требования в формате html.
Возможно, вы захотите взглянуть на Robot Framework (http://robotframework.org). Он похож на FIT, но, надеюсь, его проще интегрировать с различными инструментами тестирования, контролем версий и непрерывной интеграцией. Различные уровни абстракции в тестовых данных также упрощают обслуживание данных, а когда отдельный редактор тестовых данных становится более зрелым, обслуживание становится еще проще. Краткое руководство пользователя представляет наиболее важные функции фреймворка и действует также как исполняемая демонстрация.
Мне пришлось использовать, тестировать и настраивать как фитнес-центр, так и одного из его конкурентов, Зеленый перец, для моей работы, и я могу сказать следующее:
GreenPepper - это подключаемый модуль confluence (confluence - это корпоративная вики-страница от atlassian), в нем есть много вещей, которые вам нужны в инструменте корпоративного уровня, практически не требуя дополнительной работы:
Большие недостатки GreenPepper: Конфигурация довольно жесткий, а документация - бедные (хотя они, похоже, работают над этим, и они довольно быстро отвечают на своем форуме), а также это не бесплатно, вы должны заплатить и за слияние, и за GreenPepper, что может складываются в довольно много.
На мой взгляд, Fitnesse очень прост, его очень легко настроить, он работает, но это все, вы можете использовать некоторые плагины fitnesse, разработанные сообществом с открытым исходным кодом, и даже некоторые плагины Fit, такие как плагин Eclipse (создайте скелетон приспособления из файла фитнес-теста, при условии, что он имеет расширение .fit, очень полезно). Интеграция не идеальна, аутентификация и управление правами доступа оставляет желать лучшего, но это СВОБОДНЫЙ, и если вам что-то нужно, вы можете это сделать, потому что это открытый исходный код.