【问题标题】:Confusion about functional testing, BDD and TDD关于功能测试、BDD 和 TDD 的困惑
【发布时间】:2011-04-25 13:42:04
【问题描述】:

我有一个表格,需要填写几个字段。但是,只有一个字段是必填的。所以,我想出了以下规范:

 [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;
}

现在我想实现它,但我感到困惑,因为它听起来很像功能测试,我必须使用 mvccontrib.watin dll 之类的东西。我对它确实是功能测试吗?我是否为 BDD 制定了“错误”的规范?

【问题讨论】:

    标签: bdd mspec


    【解决方案1】:

    我现在还不会太担心这些定义 - 无论如何,各种形式的测试和 BDD 之间存在很多模糊的界限。

    WRT Watin,我猜你是在谈论通过浏览器进行测试?您可以通过浏览器或直接在控制器上“皮下”进行测试,这两种方法都是进行 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' 修饰符,这会稍微清理一下)。

    【讨论】:

    • 感谢您的回答。我想这是存在灰色区域的领域之一,它更像是一门艺术而不是一门科学。以您拥有的方式更改规格会更好,并且更容易“实施”。
    【解决方案2】:

    将 BDD 视为“示例规范”而不是“功能测试”。

    但请记住,BDD 的目标是就应该做什么达成一致,并以示例的形式记录下来,这些示例也可以作为测试运行以指导开发人员。

    BDD 不是一种系统验证技术,而是一种系统规范技术。它很有用,但在有趣的算法的情况下,它本身可能是不够的。

    因为它是“通过示例”,所以你说明你会做什么,以及它会如何反应。也许您填写了一张表格,然后将公司字段留空。它应该如何反应?现在也许你填写那个,但空白另一个。它应该如何做出不同的反应?

    因为它是“举例说明”,所以它确实需要您讲述一系列小故事。

    这有帮助吗?

    【讨论】:

      【解决方案3】:

      经过一番研究,

      这澄清了我的很多误解,http://www.msteched.com/2010/NorthAmerica/DPR302。希望它可以帮助那里的人。此外,Amir What is the most mature BDD Framework for .NET? 的回答让我看得更清楚。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-25
        • 2012-09-28
        • 2015-04-25
        相关资源
        最近更新 更多