Какие инструменты/рамки для разработки поведения (BDD) доступны для Microsoft Stack?
Меня интересует Разработка с учетом поведения (BDD)
Существуют ли какие-либо хорошие рамки и/или инструменты для платформы .NET(предпочтительно С# и ASP.Net)?
И когда BDD оказался наиболее подходящим для использования в реальных сценариях? (вспомогательный вопрос)
Ответы
Ответ 1
В googling я нашел Управление поведением (BDD) с помощью SpecFlow и ASP.NET MVC. Вы можете найти это полезным, взгляните. Также пройдите Поведенческая разработка с помощью SpecFlow и WatiN
Хорошая презентация на Плюсы и минусы BDD
Видео канала 9 Поведенческая разработка в реальном мире
и последняя, но не менее важная статья InfoQ Разработка, управляемая поведением в .NET
Ответ 2
+1 для людей, рекомендующих SpecFlow для сценариев; никогда не использовал его, но слышал много хороших вещей об этом. Я использовал простой старый NUnit с небольшим DSL, например this. MSTest будет работать аналогичным образом.
Вы также можете делать BDD в единичном пространстве, что и предназначено для MSpec. Я лично ненавижу MSpec, но остальная часть команды здесь любит его. Им нравится писать примеры того, как работает код. Мне нравится показывать, почему поведение ценно. Это тонкое различие, и если вы не беспокоитесь о том, чтобы делать это на уровне единицы, это не ударит вас.
Другие рамки для просмотра включают Concordion, Fitnesse.NET(пожалуйста, поместите FitSharp за ним!) и TickSpec.
В реальном мире самым ценным битом BDD на долгий путь являются разговоры, а не автоматизированные тесты. Вот несколько быстрых советов и советов для его работы:
-
Не пишите автоматические тесты над вещами, которые находятся в потоке. Это просто заставляет вас навязывать вам свои ошибки. Подождите, пока пользовательский интерфейс немного изменится, тогда сделайте это.
-
Если вам не очень нравится ваш пользовательский интерфейс, но заботитесь об целостности данных, напишите сценарии на уровне контроллера/презентатора (например, для экранов администратора).
-
Не начинайте с входа в систему. Начните с описания ценной части приложения, для которого вы можете войти. Сделайте это сначала (предположим, что у вас есть только один пользователь). Вы получите более быструю обратную связь с рискованными битами.
-
Ищите быстрые отзывы о рискованных битах, которые обычно будут битами, которые вы никогда не делали раньше. Используйте сценарии для общения вокруг них. Напишите что-нибудь интересное, что вы обнаружите, но забудьте о сценариях, которые очевидны - они очевидны! Не беспокойтесь о том, чтобы автоматизировать их для начала. Разговоры важнее, чем запись разговоров важнее автоматизации цепочек.
Удачи! Если вы хотите узнать больше о BDD, я собрал страницу соответствующих ссылок здесь.
Ответ 3
Также MSpec - хорошая структура.
Я использую его в стеке Microsoft, о котором вы упоминаете (С#, ASP.Net и MVC), и мне нравится его синтаксис.
BDD помогает вам думать о бизнесе или функции, а не только кодовым способом.
Таким образом, вы больше всего ориентируетесь на ценность бизнеса.
Это также помогает в приемочном тесте пользователя создать доверие между вами и клиентом.
Ответ 4
LightBDD - это среда с открытым исходным кодом, позволяющая писать тесты BDD, которые легко читать, но также легко поддерживать и расширять, когда проект растет больше.
Основные функции, которые он предлагает:
- легко читаемые сценарии,
- простое обслуживание тестов,
- интеграция с хорошо известными платформами тестирования (NUnit/MbUnit/MsTest/xUnit),
- Выполнение сценариев выполнения шагов и измерение времени выполнения,
- генерация отчета об итогах выполнения теста в HTML (пример отчета), формат XML и обычного текста.
Он основывается на тестах, которые написаны исключительно в коде, что означает встроенную поддержку для рефакторинга, анализа кода, тестирования и всех других функций, которые предлагает Visual Studio/Intellisense/Resharper.
Пример теста, написанного в этой структуре, выглядит следующим образом:
[TestFixture]
[FeatureDescription(
@"In order to access personal data
As an user
I want to login into system")] //feature description
[Label("Story-1")]
public partial class Login_feature //feature name
{
[Test]
[Label("Ticket-1")]
public void Successful_login() //scenario name
{
Runner.RunScenario(
Given_user_is_about_to_login, //steps
Given_user_entered_valid_login,
Given_user_entered_valid_password,
When_user_clicked_login_button,
Then_login_is_successful,
Then_welcome_message_is_returned_containing_user_name);
}
}
Более подробную информацию о структуре можно найти на странице проекта wiki и главная страница проекта.
Ответ 5
Существует отличный инструмент, называемый SpecFlow.
SpecFlow вдохновлен Cucumber - хорошо известной базой BDD для Ruby on Rails. И имеет огромное количество преимуществ.
Вы обязательно должны это проверить.
Ответ 6
Одна интересная структура BDD - Concordion.NET. Это основа BDD с открытым исходным кодом для стека Microsoft, которая использует NUnit для выполнения тестов Concordion.NET: https://github.com/concordion/concordion-net
Поскольку спецификации Concordion написаны в простом HTML, это обеспечивает хорошую основу для живой системы документации. Вы можете использовать редактор what-you-see-is-you-get (WYSIWYG), такой как BlueGriffon, для описания вашего предполагаемого поведения вашего программного обеспечения в простых документах HTML и приведения их в порядок для проверки вашей тестируемой системы.
В соответствии с отличная классификация инструментов BDD, Concordion.NET фокусируется на бизнес-читабельном вводе (и также выводит бизнес-читаемость). Он перемещается даже за пределы BDD и поддерживает ATDD: http://assertselenium.com/2012/11/05/difference-between-tdd-bdd-atdd/
Ответ 7
Spec4Net (https://bitbucket.org/fthomsen/spec4net/) - тоже хорошая структура. Мы широко используем его на работе. Кривая обучения почти не существует, и естественный поток кажется интуитивным.