敏捷测试价值观、方法和实践读书笔记(6)

2024-09-10 13:33:30 浏览数 (2)

6.2 ATDD

一定的自动化测试和“实现未动,测试先行”的策略

验收测试驱动开发(Acceptance Test Driven Development ,ATDD)

什么是验收测试

验收标准(Acceptance Criteria)验收标准->验收测试(Acceptance Tests)

与单元测试相似,验收测试通常具有两种结果,即测试通过或测试失败。

例子:

  • 作为一名信用卡持有人
  • 我想要能够从手机查询当月信用卡账单
  • 以便了解我的还款日期和还款数额

验收标准:

  • 信用卡持有人可以通过 App 查询账单
  • 信用卡持有人可以通过手机短信查询账单
  • 查询账单需要验证用户身份
  • 查询账单要看到还款日期
  • 查询账单要看到还款数额

用户故事 1:

  • 作为一名信用卡持有人
  • 我想要通过手机APP 查询当月信用卡账单
  • 以便了解我的还款日期和还款数额

用户故事 2:

  • 作为一名信用卡持有人
  • 我想要通过手机短信查询当月信用卡账单
  • 以便了解我的还款日期和还款数额

(1)短信发送场景。

① 用户使用绑定的手机号码查询。

用户(用户名为A)已在2020年2月20日有200元信用卡账单。

用户使用绑定的号码18588888888发送短信“bill”给账单中心号码(85555)。

回复的短信内容为“尊敬的信用卡用户A:您好,您本月(2020年2月)账单总额为 200.00 元,最后还款日期为3月15日。谢谢”。

② 用户使用未绑定的手机号码查询。

用户(用户名为A)已在2020年2月20日有200 元信用卡账单。

用户使用绑定的号码19588888888发送短信“bill”给账单中心号码(85555)。

回复的短信内容为“尊敬的信用卡用户 A:您好,您发送的短信号码并未绑定。谢谢”。

(2)APP 发送场景。

① 用户使用绑定的手机号码查询。

用户(用户名为A)已在2020年2月20 日有 200 元信用卡账单。

用户使用绑定的号码18588888888在App注册账户。

回复的短信内容为“尊敬的信用卡用户A:您好,您本月(2020年2月)账单总额为 200.00 元,最后还款日期为3月15日。谢谢”

② 用户使用未绑定的手机号码查询。

用户(用户名为A)已在2020年2月20日有200元信用卡账单。

用户使用绑定的号码19588888888发送短信“bill”给账单中心号码(85555)。

回复的短信内容为“尊敬的信用卡用户A:您好,您发送的短信号码并未绑定。谢谢”。

验收测试和单元测试的关系

单元测试->开发人员的角度

验收测试->用户价值是否被满足

验收测试“三个伙伴”(Three Amigos):分别代表了

  • 用户(我们要解决什么问题?)
  • 开发人员(我们如何解决这个问题?)
  • 测试人员(关于解决这问题会发生什么?)

3种不同的角度。

包含验收测试的用户故事可被看作系统功能描述的唯一文档,这是一份编写给所有人的文档,新成员加入时,就可以通过用户故事很快理解项目的建构背景。

ATDD的实践

scrum开发团队为每条验收标准编写可以进行自司测试的测试用例

首先,ATDD不是一种测试方法论,而是一种开发方法论。

其次,验收测试关注的是用户价值是否被满足,而单元测试关注的是代码的实现是否正确。所以,

  • 基于单元测试的 TDD只涉及开发人员,偶尔需要用户的支持
  • ATDD涉及用户、产品负责人、开发人员、测试人员

ATDD侧重测试业务用户功能,而TDD在传统上用于运行或自动化单元测试。

TDD是 ATDD 为了完成功能测试而模仿的先锋。

编写“刚好够用”的代码

ATDD的三个阶段

(1)讨论阶段。

  • 团队针对需求和实现方案进行讨论。
  • 大家对需求和实现方案达成理解上的共识。
  • 通过明确验收测试的方式确认实现方案。
  • 验收测试方式将被自动化。

(2)开发阶段。

  • 以明确具体的验收测试方式指导开发工作,进一步把验收测试细化为单元测试,并且采用 TDD 的方式进行开发。
  • 验收测试自动化和特性的开发可以并行开展。
  • 团队成员均对验收测试的自动化负责,而不只是测试人员。
  • 最终,我们的产品实现能让所有的自动化测试通过。

(3)交付阶段。

  • 要保证之前迭代的所有自动化验收测试能在新交付上通过。
  • 为所有利益相关方演示新特性。
  • 收集反馈,讨论改进。

在代码库中存放自动化验收测试

验收代码设计一个代码库

与代码放在一起

专门建立一个文件夹

自动化验收测试的重构

自动化测试用例需要重构

采用Robot Framework实现自动化验收测试

本人不建议使用Robot Framework非编程工具实现自动化,建议使用selenium Cypress或playwright

0 人点赞