Подтвердить что ты не робот

Какие инструменты/рамки для разработки поведения (BDD) доступны для Microsoft Stack?

Меня интересует Разработка с учетом поведения (BDD)

Существуют ли какие-либо хорошие рамки и/или инструменты для платформы .NET(предпочтительно С# и ASP.Net)?

И когда BDD оказался наиболее подходящим для использования в реальных сценариях? (вспомогательный вопрос)

4b9b3361

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