Кто-нибудь использует исполняемые требования?

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

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

Я хотел бы знать: 1) есть ли у кого-нибудь еще опыт разработки с использованием этого типа определения требований, основанного на тестировании, и 2) какие инструменты вы все использовали для этого.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
13
0
2 183
6

Ответы 6

Мой опыт ограничен личными проектами и обнаружил во многом те же преимущества, о которых вы упомянули. Я рекомендую 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), в нем есть много вещей, которые вам нужны в инструменте корпоративного уровня, практически не требуя дополнительной работы:

  • Лучшее удобство для пользователя -обогатый текст- вики синтаксис (упрощает работу с для нетехнических людей)
  • Он очень хорошо интегрируется со многими инструменты разработки: Eclipse, VB, maven2 и плагин Nant, я тестировал больше всего и остался очень доволен.
  • Пользователь и права доступа регулируются слияние, то есть это хорошо и использовать базу данных вашего likin (что может быть обязательным в зависимости от того, где вы работаете)
  • Многие другие функции, которые могут или может не потребоваться: поддержка ssl, удаленное выполнение (установите wiki в unix, выполните в Windows, если вы работаете над проектом C#, или наоборот)
  • Выглядит лучше: D

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

На мой взгляд, Fitnesse очень прост, его очень легко настроить, он работает, но это все, вы можете использовать некоторые плагины fitnesse, разработанные сообществом с открытым исходным кодом, и даже некоторые плагины Fit, такие как плагин Eclipse (создайте скелетон приспособления из файла фитнес-теста, при условии, что он имеет расширение .fit, очень полезно). Интеграция не идеальна, аутентификация и управление правами доступа оставляет желать лучшего, но это СВОБОДНЫЙ, и если вам что-то нужно, вы можете это сделать, потому что это открытый исходный код.

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

Как убить все процессы Linux старше определенного возраста?
Родительский процесс завершается раньше дочернего, но все равно распечатывает данные из канала
Как записать сообщения Log.d из другого процесса того же приложения?
Когда пользовательский процесс заменяет страницу, находится ли виртуальный адрес страницы в пространстве пользователя или пространстве ядра?
Откройте видимое окно Cmd в Java
Ошибка при чтении файла, используемого двумя отдельными процессами Java
Elispprocess-send-string выдает неожиданную ошибку «процесс не запущен: прослушайте»
Мой код работает только с одним файлом изображения, остальные файлы изображений считываются и сохраняются, но мой код не затрагивает их. Мне нужно, чтобы мой код работал со всеми файлами изображений
Процесс FFmpeg завершает запись файла только после закрытия программы
ProcessBuilder не может запустить программу, найденную в PATH