Когда и в какой степени я должен тестировать интеграцию стороннего кода при практической разработке, ориентированной на поведение (BDD)? - PullRequest
6 голосов
/ 18 июня 2011

Контекст: Я пытаюсь попрактиковаться в BDD в среде Ruby on Rails, используя Capybara / Steak для интеграционных тестов, так что это будет пример, который я использую, но этот вопрос является общим вопросом о BDD лучше всего. практика.

Скажем, у меня есть (по общему признанию) широкая пользовательская история, например, так:

Feature:

As an administrator

I should be able to manage my products

Я изучал гем ActiveAdmin для Rails 3, который позволяет создавать сложные интерфейсы администратора с использованием простого DSL. Хотя потенциал экономии времени огромен, он также пугает меня, чтобы выгрузить так много функций в сторонний код без всякого тестирования.

Однако меня учили, что вам, как правило, нужно тестировать только тот код, который вы пишете сами. Итак, по этой логике мне просто нужно проверить, что ActiveAdmin правильно интегрирован, так как это единственный код, который я на самом деле пишу. Базовый сценарий для проверки этого может быть:

Scenario:

Given I have 20 products

When I visit the product index page

Then I should see 20 products.

Это функция, предлагаемая ActiveAdmin из коробки. Таким образом, я могу выполнить базовую установку и создать страницу администрирования продуктов, используя документацию ActiveAdmin, и сценарий пройдет.

Конечно, тогда я также включил огромное количество других сценариев, таких как:

Given I have 20 products

And my products include Apples, Bananas, and Berries

When I sort my products by name

Then Apples, Bananas and Berries should be on the first page in that order.

Given I have 20 products

And my products include Apples, Bananas, and Berries

When I type 'ap' into the Filter by Name field

Then I should see "Apples"

And I should not see "Bananas"

и т.д.. и т.д.

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

TL; DR : Мой основной вопрос: Должен ли я писать сценарии для критически важных функций, таких как сортировка и фильтрация, даже если они уже предоставлены внешней библиотекой, и я протестировал приложение интеграция с этой библиотекой?

1 Ответ

5 голосов
/ 20 июня 2011

Основным преимуществом BDD и сценариев является то, что они позволяют вам обмениваться общим пониманием посредством разговора о сценариях.

Поскольку похоже, что вы - единственный человек в команде, ценность, которую вы получите от сценариев, будет заключаться в их продумывании, захвате их для будущего "вас", которое будет использовать их в качестве напоминания о том, что уже есть. были разработаны и автоматизированы для использования в качестве регрессионных тестов.

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

Это потому, что основное внимание BDD уделяется не тестированию. BDD предоставляет словарный запас и диалоговую среду, чтобы помочь нам поделиться пониманием - и, в частности, обнаружить недоразумения - облегчая изменение и обслуживание программного обеспечения. Мы можем автоматизировать как хороший побочный продукт.

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

Как примечание, вы путаете шаблоны истории и сценария, которые не помогут. Истории, как правило, представляют собой небольшие фрагменты функций, которые были разбиты для ускорения обратной связи.

As admin
I want to sort my products
So that I can find things easily by name.

Сценарий является конкретным примером поведения функции и обычно использует синтаксис «задано, когда, потом»:

Given I have a 120 products
And my products include Apples, Bananas and Berries
When I sort my products by name
Then Apples, Bananas and Berries should be on the first page in that order
And the products should be paginated.

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

...