Какая лучшая стратегия для тестирования BDD, основанного на данных

Какие существуют стратегии для написания тестов BDD, которые могут проверять поведение, основанное на определенных данных, находящихся в системе?

Например, скажем, я работал со следующим сценарием:

Feature: Search for friend
    In order to find a friend
    As a user
    I want to search my list of friends
    And filter by 'first name'

Как этот тест мог быть успешным, если / до тех пор, пока в систему не были введены какие-то «фиктивные» друзья?

Более конкретно, что за «пустышка» критерии, которые будет использовать тест?


Следует ли мне жестко закодировать имя друга, предполагая, что оно уже существует в базе данных?

Но что, если я перенесу свой код в новую среду с новой базой данных ?


Или мне следует написать код для ручной вставки фиктивных данных в систему перед выполнением каждого теста?

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


Или я бы создал другие сценарии / тесты, в которых данные создаются с использованием интерфейс программы?

Например, «Функция: Добавить нового друга в мой список». Затем я мог запустить этот тест, чтобы добавить пользователя по имени «Люси», а затем запустить «Поиск друга». тесты для поиска «Люси», которые теперь будут существовать в базе данных.

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


Какая из них лучшая стратегия? Или есть способ лучше?

5
задан Jonathan 12 May 2011 в 05:11
поделиться