假设我有一堆用户故事(由于计划会议的结果,我和我的团队一起完成了)。我在应用程序中还没有任何代码,我将从我的'A‘或最高优先级的故事/史诗开始
比方说
作为一个用户,我应该能够搜索更多的用户,这样我就可以在网站上添加更多的朋友
那么,团队应该如何在执行TDD时对应用程序进行编码。
实际上,我很困惑集成测试如何适合in.if所有的集成测试工作(即所有的功能,单元测试无论如何都应该通过)。
因此,如果应用程序刚刚开始(还没有编写代码)。当人们从零开始执行应用程序时,人们通常对TDD/BDD采取什么过程?
发布于 2009-05-27 15:00:37
“实际上,我很困惑集成测试如何适合in.if所有的集成测试工作(即所有的功能测试,单元测试无论如何都应该通过)。”
那得看情况。当然,可以编写集成测试,使所有单元和功能测试都能通过。只是更难。
假设您有3个模型、3个控制器和3个视图。假设所有的方法都非常简单,没有任何条件或循环,每个都有一个方法。
您现在(单元)可以测试其中的每一个,总共有9个断言,并且具有完整的覆盖范围。您可以提交一个集成测试,以确保所有这些都能很好地结合在一起。
如果您跳过单元/函数式,并且需要有完整的覆盖范围,那么您将需要27个断言(3x3x3)。
当然,在实践中,事情更复杂。您需要大量的集成测试才能达到相同的覆盖率。
而且,如果您实践了TDD/BDD,那么通常情况下,最终会有大量的单元测试。集成测试是为了确保所有这些部件都能很好地结合在一起,并做客户想做的事情。部件本身已经通过单元测试进行了单独测试。
发布于 2009-05-26 17:03:07
很好的问题!TDD/BDD方法将建议您使用用户故事并编写验证点(阅读高级测试)。他们使用GWT (给定/何时/然后),如下所示。
作为一个用户,我应该能够搜索更多的用户,这样我就可以在网站上添加更多的朋友
given the website URL
when the site loads
then a search field should be visible/accessible.这是您的第一个反馈,也是与产品所有者迭代的第一个时机。问一些问题,比如搜索栏应该去哪里?应该自动完成吗?等。接下来,为UI对象分配“行为”,这些对象也有验证点。
这将定义搜索按钮的行为:
given a go button next to the search field
when then button is clicked
then a search should be performed这将描述搜索的逻辑:
given a search term "John" and a user set including "John, Joan, Jim, Steve"
when a search is performed
then the results should contain "John" an "Joan"第一个验证点将描述将控制器搜索按钮链接到实现搜索算法的任意模型的行为。第二个验证点描述了搜索算法本身。优点是这些部分是独立定义的,可以并行设计。它还为您提供了一个很好的API,并且易于规划迭代特性。它还使您能够在不影响饼的其余部分的情况下对任何拼图块进行迭代/细化。
我还想提到的是,我所指的验证点可以松散地与UAT或用户验收测试相关联。不要因为这些条款不相关而被挂在心上。专注于他们背后的想法。您需要获取用户故事并将其分解为规范。(可以在一次或多次通过UAT或验证点,或者两者都可以完成,或者使用魔术bean,只需确保将它们分解。)如果您将用户故事分解成的内容可以用FitNesse、JUnit或RSpec这样的工具编写,那么可以使用这些工具之一,其他明智的方法是您需要进一步的对话(您的用户故事是否太模糊了?)或者再过一遍您需要进一步分解的内容(UATs到验证点)。不要沉迷于工具,觉得你需要从一开始就自动化所有的东西。在手动处理结束之前,不要使用Selenium。最终,您需要可以以类似于编程测试的形式编写的规范,此时您应该能够使用像JUnit这样简单的工具开始编码。当你变得更好/更喜欢的时候,你可以选择EasyB或RSpec的故事跑步者和其他东西。
发布于 2009-05-26 16:52:03
这是我们通常从Sprint 0开始的地方,而在今年春天,我们将使用XP称为Spike会话(或抛出代码会话)。在本节中,您可以在这里开始原型设计。
在您的会话中,编写一些用户验收测试(最好采用BDD格式),然后开始编写测试,以匹配您的UAT之一。
例如:
给定用户名称为"testUser“的搜索请求,应返回1结果。
这样,您现在就有了第一个测试的目标,然后开始编写代码以通过测试。当你前进的时候,你应该开始看到如何将应用程序放在一起来完成这个故事。
然后,我将在下一个sprint中开始构建故事/任务,根据您在sprint 0中发现的内容,根据需要完成这个特性。
https://stackoverflow.com/questions/911619
复制相似问题