Путаница в функциональном тестировании, BDD и TDD - PullRequest
1 голос
/ 25 апреля 2011

У меня есть форма, в которой необходимо заполнить несколько полей. Однако, только одно поле является обязательным. Итак, я придумал следующую спецификацию:

 [Subject(typeof(CompanyHomeController))]
public class when_the_save_button_is_clicked
{
    private It should_verify_that_the_company_name_has_been_filled;

    private It should_show_some_text_next_to_the_company_field_if_it_has_not_been_filled;

    private It should_submit_all_the_details_on_the_form_if_there_are_no_errors;

    private It should_take_the_user_back_to_the_list_of_companies;
}

Теперь я хотел бы реализовать это, но я запутался, потому что это звучит очень похоже на функциональное тестирование, где я должен использовать что-то вроде dll mvccontrib.watin. Я прав, что это действительно функциональное тестирование? Я сформулировал спецификации "неправильно" для BDD?

Ответы [ 3 ]

2 голосов
/ 26 апреля 2011

Я бы пока не слишком беспокоился об определениях - в любом случае, между различными формами тестирования и BDD существует множество размытых границ.

WRT Ватин, я полагаю, вы говорите о тестированиичерез браузер?Вы можете проверить через браузер или «подкожно» непосредственно на своих контроллерах, оба являются допустимыми способами выполнения BDD.Этот выбор в большей степени зависит от того, что вы пытаетесь протестировать, насколько быстро вы хотите, чтобы ваши тесты выполнялись, и т. Д.

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

[Subject(typeof(CompanyHomeController))]
public class company_form_submitted_with_fields_completed
{
    It should_save_all_the_details_to_the_main_list;

    It should_take_the_user_back_to_the_company_list_page;
}

[Subject(typeof(CompanyHomeController))]
public class company_form_submitted_with_some_fields_missing
{
    It should_remain_on_the_company_edit_page;

    It should_warn_that_the_company_field_is_required;
}

(обратите внимание, что вам не нужны модификаторы 'private', которые немного его очищают).

1 голос
/ 22 мая 2015

Думайте о BDD как о «спецификации по примеру», а не «функциональном тесте».

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

BDD - это не метод проверки систем, а методика спецификации системы. Это полезно, но может быть недостаточно само по себе в случае интересных алгоритмов.

Поскольку это «примером», вы заявляете, что бы вы сделали, и как это отреагирует. Может быть, вы заполните форму, а затем заполните поле Компания. Как это должно реагировать? Теперь, может быть, вы заполните это, но пустое другое Как это должно реагировать по-другому?

Поскольку это «спецификация на примере», вам действительно нужно рассказать серию маленьких историй.

Это полезно?

0 голосов
/ 26 апреля 2011

После некоторого исследования

Это прояснило многие недоразумения, которые у меня были, http://www.msteched.com/2010/NorthAmerica/DPR302. Надеюсь, это поможет кому-то там. Более того, ответ Амира Какой самый зрелый BDD Framework для .NET? помог мне понять все более четко.

...