Интересно, что этот блог о классификации инструментов BDD рассказывает о TDD и ATDD.Как отмечает Лиз Кеог: BDD - это разговор и исследование .Чем проще для всех вовлеченных парней внести свой вклад, поделиться намерением, поделиться идеями, понять других и т. Д., Тем быстрее мы найдем адекватное решение и создадим лучшее программное обеспечение.Когда мы, наконец, пойдем по пути инструмента, какие инструменты будут лучше всего поддерживать сотрудничество между заинтересованными сторонами программных проектов?
Основываясь на этом блоге о различиях между TDD, BDD и ATDD Iсказал бы, что существует, по крайней мере, три различных варианта инструмента BDD :
- Структуры модульного тестирования
JUnit изменил нашвзгляд на разработку и тестирование.Одна из его сильных сторон заключается в том, что тесты могут быть написаны на том же языке программирования, что и само приложение.Таким образом, мы можем опираться на знания, которые у нас уже есть в команде доставки.Когда тесты используются даже для управления разработкой, мы достигаем небес TDD.
Языки программирования были оптимизированы для уменьшения избыточности, что, по мнению Рона Джеффриса, является одним из худших грехов разработчиков.Поэтому мы часто полагаемся на эти инструменты, когда проводим техническое тестирование, чтобы правильно построить продукт , поскольку они помогают нам быть максимально эффективными.
Несколько парней пытались сделать автоматизированные тесты более понятными, так как модульные тесты на самом деле не читаются .Одной из первых попыток было проанализировать модульные тесты и предоставить краткое резюме, которое также может быть прочитано не разработчиками.Например, TestDox / AgileDox создает простую документацию из имен методов тестовых классов JUnit или Pickels создает документацию на основе файлов объектов, написанных в Gherkin.
Каркасы, такие как MSpec помогает писать тесты, которые лучше читаются и дополнительно обеспечивают читабельный вывод.Эта разновидность инструментов BDD фокусируется на удобочитаемом выводе, что позволяет привлекать не разработчиков после того, как разработчики выполнили свою работу.
Рамки тестирования сценариев К вовлекайте заинтересованные стороны ранее в цикле разработки , были созданы новые инструменты, которые больше фокусируются на удобочитаемом вводе. Cucumber использует простые текстовые файлы для обеспечения удобочитаемого ввода для автоматизированных тестов.Текстовые файлы содержат сценарии, написанные на специально структурированном языке, основанном на структуре «когда тогда».Эти структуры являются отличными инструментами, которые поддерживают совместное определение критериев приемлемости.
Основы приемочного тестирования Параллельно с идеей BDD был разработан другой вариант инструментов, где FIT был ранним представителем.Эта Framework для интегрированного теста позволяет указывать примеры в таблицах, которые встроены в документацию, связанную с примерами.Для написания этих документов не требуются навыки разработки, и они могут быть легко прочитаны и просмотрены не техническими специалистами, поскольку они основаны исключительно на тексте.Кроме того, текст можно структурировать, поскольку документы представляют собой не простые текстовые файлы, а вывод расширенных редакторов.
FitNesse позволяет совместно определять ожидаемое поведение на основе вики.Поскольку вики просты в доступе и использовании, у них низкая кривая входа и обучения, что продвигает общую работу всей команды.Многие проворные сторонники подчеркивают, что лучший способ сотрудничества - это общение лицом к лицу.Но если вы запишите, что вы думали и обсуждали, это должно быть как можно более богатым и хорошо структурированным.
Concordion обеспечивает большую гибкость, поскольку вы можете описать свои требования на обычном языке, используя абзацы, таблицы и соответствующие знаки препинания.Любая часть вашего описания может использоваться в качестве входных данных для ваших автоматических тестов и для проверки выходных данных вашей тестируемой системы.Поскольку он основан на HTML, вы можете структурировать свои документы и интегрировать изображения.Просто у вас есть выразительность Интернета для описания ожидаемого поведения.
BDD должен помочь в создании правильного продукта
Вы можете реализовать BDD со всеми тремя разновидностями инструментов, но у каждого есть своисильные и слабые стороны.Фреймворки модульного тестирования и xSpec-подобные инструменты прекрасно используют сильные стороны программирования.Поскольку они являются инструментами от разработчиков для разработчиков , они являются идеальным выбором, если вы попытаетесь получить правильную техническую часть.
Когда вы хотите сообщить о намерениях приложения, вы, вероятно, лучшес инструментом, который тесно связан с инструментами, которые редакторы используют для своей работы.Если спецификация содержит только входы и ожидаемые результаты, любой, кто ее читает, должен будет реконструировать ваши идеи из соотношения входов и ожидаемых результатов.Краткое описание, объясняющее цель спецификации в заголовке, помогает читателю понять структуру спецификации.Документы, основанные на конкретных примерах, могут выглядеть следующим образом:
Да, SpecFlow это круто, NSpec это круто ...
FitNesse и Concordion тоже крутые