《Cucumber:行为驱动开发指南》——6.5 我们学到了什么

简介: Cucumber特性对公司来说是一笔宝贵的财富。我们曾见过有团队将他们系统中大块大块的部分推倒重写,知道自己有一组准确的、可执行的规范来确保新的方案会运行得跟原来一样好,他们自不必担心什么。对这些团队来说,特性比产品代码本身更有价值。

本节书摘来自异步社区《Cucumber:行为驱动开发指南》一书中的第6章,第6.5节,作者:【英】Matt Wynne , 【挪】Aslak Hellesy著,更多章节内容可以访问云栖社区“异步社区”公众号查看

6.5 我们学到了什么

Cucumber特性对公司来说是一笔宝贵的财富。我们曾见过有团队将他们系统中大块大块的部分推倒重写,知道自己有一组准确的、可执行的规范来确保新的方案会运行得跟原来一样好,他们自不必担心什么。对这些团队来说,特性比产品代码本身更有价值。如果你打算在编写Cucumber特性上面做些投入,那就要照管好这些特性,让他们为整个团队带来尽可能多的益处,从而保护好这笔投入。不要迁就于缓慢的特性、间歇失败的特性或者团队中只有一部分人阅读的特性:问题一旦出现立该将其消除,让每个问题成为一个理由,基于这些理由把测试做得比以前更好。

Cucumber看上去似乎只是一种测试工具,但本质上它是一种协作工具。如果你真正努力去编写特性,使它们可作为文档提供给团队中的非技术利益相关人,你会发现自己不得不与利益相关人讨论一些原本你不会花时间讨论的细节。这些讨论揭示了他们对问题的深刻见解,这些见解将帮助你构建一套更好的方案。这才是Cucumber的真正奥秘:测试和文档都只是令人愉快的副作用而已,真正的价值在于交谈过程中对于知识的发掘。
尝试一下

下面是一些你可以自行尝试的练习。

在团队中实施缺陷预防

想出使团队生产线速度变慢的三件事情。每件事情的根源是什么?你可以做些什么来使它们向着好的方向变化?

关于偶然细节的练习

下面的场景是以丑陋的命令式风格编写的,穿插着各种偶然细节。

Scenario: Create an invoice
 Given I am a signed in user with role: admin
 And a client "Test Client" exists with name: "Test Client"
 And a project "Test Project" exists with:
  | name  | "Test Project"    |
  | client | client "Test Client" |
 And an issue "Test Issue" exists with:
  | project | project "Test Project" |
  | name   | "Test Issue"     |
 And a work_unit "Test Work Unit" exists with:
  | issue     | issue "Test Issue" |
  | completed_on | "2011-08-24"    |
  | hours     | "7.5"      |
 And I am on the admin invoices page
 Then I should see "Test Client"
 And I follow "Test Client"
 And I fill in "invoice_id" with "abc"
 And I press "Submit"
 Then I am on the admin invoices page
 And I should not see "Test Client"

首先弄清楚来龙去脉:你认为这个系统是做什么的?场景的用途是什么?它在测试怎样的行为?注意那些像蔓生杂草一般的偶然细节是如何妨碍你理清测试的实际目标的。

理解了场景的实质目标之后,基于自己的词汇把它重写一遍。需要的步骤应该可以少很多,但你可能会考虑使用多个场景。

用更加声明式的风格重写场景之后,你能找到原先场景中遗漏的一个关键的Then步骤吗?

相关文章
|
敏捷开发 自然语言处理 Java
Cucumber -基于 behave 自动化测试指南 (一)
基于 behave 自动化测试系列教程
|
测试技术 持续交付 数据库
|
测试技术 Ruby
《Cucumber:行为驱动开发指南》——导读
从一个失败的Cucumber测试开始,然后通过这种失败来驱动应用代码的开发工作,作为一种由外向内的开发方法的一部分,我们已经用Cucumber取得了极大的成功。作为开发人员,这种工作方式能让我们实事求是,一步一个脚印,避免我们想当然地开发将来也许有需求但当前没有需求的功能。
2528 0
|
存储 测试技术 Ruby
《Cucumber:行为驱动开发指南》——1.5 我们学到了什么
只有开发人员和利益相关人一起清晰地交流的时候,软件团队才能工作得最好。要做到这一点有一种非常好的方法,就是让开发人员和业务人员基于自动化验收测试,协作描述需要完成的工作。
1414 0
|
存储 Ruby
《Cucumber:行为驱动开发指南》——2.9 我们学到了什么
关于使用Cucumber由外向内开发这种方式,有一点我们非常喜爱,就是它能帮助我们保持注意力集中,我们可以让 Cucumber 指导自己一步步向前,直到完成工作,让我们把精力集中在如何创建一个优雅的解决方案上。
1377 0
|
前端开发 程序员 数据安全/隐私保护
《Cucumber:行为驱动开发指南》——6.2 同心协力
这个场景中有很多细节:有主要角色Dave的用户名和密码,还有另一个用户Sue的用户名和密码。用户名非常有用,因为它们有助于场景故事的描述,而密码就是噪音了:用户密码与被测内容毫无关系,事实上却让测试更难读懂。比如,Sue的密码跟Dave不同。
1844 0
|
Ruby
《Cucumber:行为驱动开发指南》——1.4 Cucumber如何工作
Cucumber是一个命令行工具。运行时它会从普通语言编写的称为特性(feature)的文本文件中读取你的规格说明,解析需要测试的场景(scenario),然后针对你的系统运行这些场景以达到测试的目的。
2110 0

热门文章

最新文章