Используется ли BDD в тесте интеграции?

Общая история

Story: User logging in
  As a user
  I want to login with my details
  So that I can get access to the site

Учитывая такой широкий охват, бесполезно, если я mock системные компоненты, такие как БД, чтобы выполнить тест, поэтому могу ли я сказать, что люди в основном используют BDD в тесте интеграции?

Ответ 1

Здесь моя терминология.

  • Сценарий: пример пользователя, использующего систему, со всеми соответствующими компонентами, а не издевательством. Может быть автоматизирован и использоваться в качестве приемочного теста, но разговоры между предпринимателями, тестировщиками и разработчиками являются наиболее важным аспектом BDD. Часто созданный с использованием шаблона Given/When/Then, иногда в инструментах, которые позволяют естественный захват языка, например Cucumber или JBehave.

  • Тест интеграции: Пересекает границу двух компонентов и обычно используется для проверки целостности интеграции этих компонентов. Например, может использоваться для отправки сообщений между клиентскими и серверными уровнями веб-интерфейса или для проверки привязки базы данных с помощью Hibernate и т.д. Не обязательно включать полный стек. Сценарий можно рассматривать как особый тип интеграционного теста. BDD действительно не применяется для большинства тестов, не связанных с сценарием, хотя вы все еще могли бы использовать шаблон Given/When/Then.

  • Unit test: Пример потребления класса с использованием другого класса, обычно с соавторами. Может также быть примером того, как делегаты класса потребления работают со своими сотрудниками. Так или иначе, мы говорим об этом в BDD (вы можете делать BDD на обоих уровнях). Can также использовать синтаксис Given/Then/Then.

  • История: Вырезать функцию, чтобы мы могли получить более быструю обратную связь. Поведение функции может быть проиллюстрировано несколькими сценариями, и они также могут использоваться, чтобы помочь отрезать эту функцию. Часто иллюстрируется с As... Я хочу... Так что... шаблон, или Для того, чтобы... как... Я хочу... шаблон Feature Injection.

  • Функция:. Функции представляют способ, которым пользователи будут использовать возможности, предоставляемые им. Это этап, на котором мы начинаем определять конкретную реализацию и пользовательский интерфейс. Особенностью может быть веб-страница, часть веб-страницы, модуль в пользовательском интерфейсе Windows, часть приложения и т.д.

  • Способность: То, что пользователь может достичь с помощью системы или чего может достичь система. Т.е.: пользователь может заказать сделку, система достаточно безопасна, чтобы противостоять хакерам. Сценарии фразирования на этом уровне помогают им быть независимыми от пользовательского интерфейса и удерживают их на языке бизнеса.

Надеюсь, что это поможет.

Ответ 2

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

Назад к BDD. Его можно использовать в приемочных испытаниях (функциональном уровне) и модульном тестировании (уровень кода). Существуют разные инструменты для разных уровней BDD:

  • SpecFlow (приемочные испытания)
  • NSpec, NBehave (модульное тестирование)

Ответ 3

Поведение, управляемое разработкой, думает о поведении продукта в данном сценарии. Он расширяет как тестовое развитие, так и разработку под управлением домена. Кроме того, BDD думает, кроме теста интеграции. BDD - это максимизация связи между пользователями, разработчиками, тестировщиками, менеджерами и аналитиками.

Интеграция Тестирование рассматривается как шаг BDD. Тестирование интеграции также может существовать вне контекста BDD. Поскольку интеграционное тестирование может использоваться для покрытия поведения вашего приложения на высоком уровне, не отрываясь от тестирования устройства.

Поведение касается взаимодействия между компонентами системы, поэтому использование насмешек является фундаментальным для продвинутого TDD. Экспертиза TDD начинает рассветаться в тот момент, когда разработчик понимает, что TDD - это определение поведения, а не тестирование.

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

Ответ 4

Тестирование интеграции - это то, что мы используем BDD в основном - тесты UI с Selenium. Хотя на самом деле мы не издеваемся над этими тестами, поскольку сценарии BDD используются для управления SpecFlow, в свою очередь, привод Selenium Webdriver для выполнения пользовательских путешествий, таких как вход в систему, клики по ссылкам меню, создание записей. На самом деле я стараюсь изо всех сил делать все с помощью интерфейса, где это возможно.

Я работаю над и с бизнес-аналитиками, чтобы писать свои истории пользователей в стиле BDD (на самом деле это сейчас в нашем контракте с клиентами), и было очень полезно и полезно найти, что во время написания историй в BDD-модуле мы обнаруживаем краевые случаи, которые иначе не могли быть рассмотрены, когда мы экстраполируем требования на атомарные шаги (Given, When, Then). Это действительно беспроигрышный сценарий как для бизнеса, так и для перспективы разработчиков, когда у нас есть более распространенный язык для выражения требований.