《验收测试驱动开发:ATDD实例详解》—第2章2.3节表格化测试

2.3 表格化测试
验收测试驱动开发:ATDD实例详解
现在,随着第一个实例的自动化,Tony可以简单地重用第一个测试的步骤对剩下的经讨论会确定的实例进行自动化。作为第一步,他需要将Valet.feature里的场景转换为一个表格化的实例场景框架。为了完成这个目标,他把30分钟的时长用一个占位符< parking duration >代替,并且把期望的价格用占位符< parking costs >代替,并把这个场景标记为场景框架。Tony把实际数值放在场景框架下记录所有实例数据的表格里。Tony用占位符的名字作为表格项的名称。结果见程序清单2-23。

程序清单2-23 第一个测试转换为表格形式

1 Feature: Valet Parking feature
 2  The parking lot calculator can calculate costs for Valet
    Parking.
 3
 4  Scenario Outline: Calculate Valet Parking Cost
 5   When I park my car in the Valet Parking Lot for <parking
    duration>
 6   Then I will have to pay <parking costs>
 7
 8  Examples:
 9  | parking duration | parking costs |
10  | 30 minutes    | $ 12.00    |

现在,Tony可以开始将讨论会上确定的实例逐一输入表格中了。Tony首先运行了测试,确保他仍能正常工作。他得到的输出如程序清单2-24所示。

程序清单2-24 第一个测试改为表格形式后的命令行输出

1 Feature: Valet Parking feature
 2  The parking lot calculator can calculate costs for Valet
    Parking.
 3
 4  Scenario Outline: Calculate Valet Parking Cost
        # Valet.feature:4
 5   When I park my car in the Valet Parking Lot for <parking
    duration> # step_definitions/Valet_steps.rb:1
 6   Then I will have to pay <parking costs>
         # step_definitions/Valet_steps.rb:6
 7
 8   Examples:
 9    | parking duration | parking costs |
10    | 30 minutes    | $ 12.00    |
11
12 1 scenario (1 passed)
13 2 steps (2 passed)
14 0m0.316s

现在他开始填入剩下的实例。最后Tony把讨论会上所有的实例都做成了表格化的测试(见程序清单2-25)。

程序清单2-25 讨论会中所有的实例都被填入表格

1 Feature: Valet Parking feature
 2  The parking lot calculator can calculate costs for Valet
    Parking.
 3
 4  Scenario Outline: Calculate Valet Parking Cost
 5   When I park my car in the Valet Parking Lot for <parking
   duration>
 6   Then I will have to pay <parking costs>
 7
 8  Examples:
 9  | parking duration | parking costs |
10  | 30 minutes    | $ 12.00   |
11  | 3 hours     | $ 12.00   |
12  | 5 hours     | $ 12.00   |
13  | 5 hours 1 minute | $ 18.00   |
14  | 12 hours     | $ 18.00   |
15  | 24 hours     | $ 18.00   |
16  | 1 day 1 minute  | $ 36.00   |
17  | 3 days      | $ 54.00   |
18  | 1 week      | $ 126.00   |

为了执行这些测试,他需要用合适的值扩展ParkCalcPage类中的durationMap(见程序清单2-26)。

程序清单2-26 为全部代客泊车测试扩展了durationMap后的ParkCalcPage类

1 class ParkCalcPage
 2
 3 ...
 4
 5  @@durationMap = {
 6   '30 minutes' => ['05/04/2010', '12:00', 'AM', '05/04/2010'
      ,'12:30', 'AM'],
 7   '3 hours' => ['05/04/2010', '12:00', 'AM', '05/04/2010',
      '03:00', 'AM'],
 8   '5 hours' => ['05/04/2010', '12:00', 'AM', '05/04/2010',
      '05:00', 'AM'],
 9   '5 hours 1 minute' => ['05/04/2010', '12:00', 'AM',
      '05/04/2010', '05:01', 'AM'],
10   '12 hours' => ['05/04/2010', '12:00', 'AM', '05/04/2010',
      '12:00', 'PM'],
11   '24 hours' => ['05/04/2010', '12:00', 'AM', '05/05/2010',
      '12:00', 'AM'],
12   '1 day 1 minute' => ['05/04/2010', '12:00', 'AM',
      '05/05/2010', '12:01', 'AM'],
13   '3 days' => ['05/04/2010', '12:00', 'AM', '05/07/2010',
      '12:00', 'AM'],
14   '1 week' => ['05/04/2010', '12:00', 'AM', '05/11/2010',
      '12:00', 'AM']
15  }
16
17 ...

Tony执行了所有的测试并看到它们全部通过了。似乎Alex已经实现了代客泊车的所有功能。故事卡背面的验收条件为Alex提供了实现功能所需的信息。作为最后一步,Tony将他修改过的所有文件提交到源代码库中,并且在团队的任务看板上将代客泊车的故事卡标记为已自动化且通过测试。这天下班前,Alex和Tony击掌庆祝了他们的成功。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-07-28 21:28:19

《验收测试驱动开发:ATDD实例详解》—第2章2.3节表格化测试的相关文章

《验收测试驱动开发:ATDD实例详解》—第1章1.4节基本实例

1.4 基本实例 验收测试驱动开发:ATDD实例详解 Tony: 现在,我们已经接近尾声了.对所有的实例,我们还有最后一步要做.我认为我已经理解了业务需求,但是我现在想减少实例的数量以便能反应出业务规则的本质.让我们最后一次重温这些表格,看看哪些实例可以而且应该被删除. Bill: 好的,让我们回头看一下.我想删除地面长期停车的一些实例. Bill删去了一些地面长期停车的实例,详见表1-6. Phyllis:这个3天的实例怎么样?我们已经覆盖了1天和6天的情况.我们可以把这个也删掉吗? Tony

《验收测试驱动开发:ATDD实例详解》—第1章1.5节总结

1.5 总结 验收测试驱动开发:ATDD实例详解 在这一章里,我们看到了业务专家.开发人员和测试人员是如何协作,在会议中挖掘出软件需求并对其达成共识的.虽然开始时Tony并没有贡献太多新的想法,但是他通过把实例可视化帮助大家达成了共识.凭借Tony独特的测试领域知识,他的贡献主要集中在使用表格来抽象描述各种停车方案的实例. 在Tony拿出第一个实例表格后,大家对需求的讨论变得更有意义了.开发人员Phyllis在他们已识别出的经济停车场的实例中发现了一个bug.她还要求对6小时零1分钟的实例进行了

《验收测试驱动开发:ATDD实例详解》—第1章1.3节经济停车和长期停车

1.3 经济停车和长期停车验收测试驱动开发:ATDD实例详解Phyllis: 那现在我们需要计算的第三种停车费用是什么? Bill: 还有就是经济停车.这个车场离机场比较远,所以价格比较便宜.我们有摆渡车可以把旅客带到候机楼. Phyllis: 好,那有多便宜呢? Bill:这个规则相对更复杂些.首先,停车费是每小时2美元. Tony:每天都是吗?还是说周末的费用是不一样的? Bill:不,是周几都无所谓. Tony:那么,在经济停车场停30分钟或者60分钟都是2美元,对吗? Bill:没错.

《验收测试驱动开发:ATDD实例详解》—第2章2.4节总结

2.4 总结验收测试驱动开发:ATDD实例详解代客泊车实例的自动化工作结束了.我们看到Tony从Cucumber开始.他在一个文本文件里用自然语言写下了第一个实例.然后他开始根据自己掌握的专业技能和信息来对他的第一个实例进行自动化.当Tony发现他的自动化代码无法继续写下去的时候,他开始与测试自动化开发人员Alex结对. Alex和Tony完成了ParkCalcPage驱动,它会在网页表单中填入停车场.开始和离开的日期和时间.在点击Calculate按钮之后,停车费的值将由一个函数返回.这样测试

《验收测试驱动开发:ATDD实例详解》—第2章2.1节第一个测试用例

第2章 代客泊车的测试自动化验收测试驱动开发:ATDD实例详解团队决定从表1-11所示的停车场故事的代客泊车的实例开始做.大家决定使用Cucumber1来实现测试自动化.Cucumber使用Ruby语言将实例的数据表示和被测试系统粘合在一起.在Cucumber中,每个测试集合被称为一个特性(feature),每个特性由一个单独的文本文件来描述. 为了使用Cucumber来实现测试自动化,我们需要一组特性来记录测试数据,一些用来描述与被测应用交互的测试步骤定义,以及一套环境设置信息. Tony脑海

《验收测试驱动开发:ATDD实例详解》—第1章1.2节临时停车

1.2 临时停车验收测试驱动开发:ATDD实例详解Phyllis: 好的,那其他还有什么收费类型?你说过有3种不同的类型. Bill: 我们也为接送旅客的车辆提供临时停车位. Phyllis: 那是如何收费的? Bill: 第一小时收2美元,之后每半小时收1美元. Phyllis: 有任何边界吗?比如最长停车时间. Bill: 不,没有停车时长限制.不过我们每天最多收24美元. Phyllis: 就是说每天收费的上限是24美元? Bill: 对. Phyllis: 那第一天之后再一个小时是收2美

《验收测试驱动开发:ATDD实例详解》目录—导读

版权声明验收测试驱动开发:ATDD实例详解Authorized translation from the English language edition, entitled: ATDD by Example: A Practical Guide to Acceptance Test-Driven Development, 9780321784155 by Markus Gärtner, published by Pearson Education, Inc., publishing as Ad

《验收测试驱动开发:ATDD实例详解》—第1章1.1节代客泊车

第一部分 机场停车场验收测试驱动开发:ATDD实例详解在这一部分,我们来看一个在线应用.通过GUI(图形用户界面)对网页进行自动化测试是当前比较成熟的技术之一,不过这种方法也有缺点.然而无论怎样,大多数从事在线应用开发的团队都能从这本书中找到一些如何驱动其测试的线索. 我们要做的是一个国际机场的停车费计算器.这个国际机场中有几种不同的停车场,而且停车费用随停车时长的不同也有所不同. 停车费计算器的业务规则太复杂,以至于无论团队怎样努力,最终可能也无法完成这个在线应用.团队成员觉得他们以前得到的需

Linux驱动开发必看详解神秘内核(完全转载)

Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html   IT168 技术文档]在开始步入Linux设备驱动程序的神秘世界之前,让我们从驱动程序开发人员的角度看几个内核构成要素,熟悉一些基本的内核概念.我们将学习内核定时器.同步机制以及内存分配方法.不过,我们还是得从头开始这次探索之旅.因此,本章要先浏览一下内核发出的启动信息,然后再逐个讲解一些有意思的点. 2.1 启动过程 图2-1显示