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