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

简介: 验收测试驱动开发(ATDD)强调在开发前定义验收标准,并通过自动化测试确保用户价值得到满足。验收测试关注用户需求是否实现,而非代码细节。ATDD涉及用户、产品负责人、开发人员及测试人员,通过讨论、开发和交付三个阶段,确保产品符合预期。此方法有助于团队更好地理解和实现用户需求。

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

目录
相关文章
|
5天前
|
jenkins 测试技术 持续交付
提升软件测试效率的创新实践
在软件开发过程中,测试环节扮演着至关重要的角色。本文探讨了如何通过创新的方法和工具,提高软件测试的效率和质量。我们将从自动化测试、持续集成与持续部署(CI/CD)、测试驱动开发(TDD)三个方面,详细介绍这些技术如何改变传统的测试流程,帮助团队更快地发现和修复缺陷,最终实现更高质量的软件交付。
111 67
|
4天前
|
安全 测试技术
北大李戈团队提出大模型单测生成新方法,显著提升代码测试覆盖率
【10月更文挑战第1天】北京大学李戈教授团队提出了一种名为“统一生成测试”的创新方法,有效提升了大模型如GPT-2和GPT-3在单一测试中的代码生成覆盖率,分别从56%提升至72%和从61%提升至78%。这种方法结合了模糊测试、变异测试和生成对抗网络等多种技术,克服了传统测试方法的局限性,在大模型测试领域实现了重要突破,有助于提高系统的可靠性和安全性。然而,该方法的实现复杂度较高且实际应用效果仍需进一步验证。论文可从此链接下载:【https://drive.weixin.qq.com/s?k=ACAAewd0AA48Z2kXrJ】
19 1
|
1天前
|
测试技术 UED
软件测试中的探索性测试:一种高效且灵活的测试方法
本文将深入探讨探索性测试的核心概念、优势及其在实际项目中的应用。我们将从探索性测试的基本定义入手,逐步解析其在不同场景下的具体实施方法和最佳实践。通过详细的案例分析和方法对比,帮助读者全面了解这种既高效又灵活的软件测试技术。
|
2天前
|
弹性计算 安全 Linux
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
|
3天前
|
测试技术 持续交付 Python
软件测试中的自动化策略与实践
【10月更文挑战第2天】在软件开发的海洋中,自动化测试如同一座灯塔,为追求高效率和高质量的航程提供方向。本文将深入探讨自动化测试的策略与实践,从基础理论到实际应用,带领读者领略自动化测试的魅力和挑战。
|
3天前
|
敏捷开发 jenkins 测试技术
自动化测试框架的设计与实践
【10月更文挑战第2天】在软件开发周期中,测试阶段扮演着至关重要的角色。随着敏捷开发和持续集成的流行,自动化测试已成为确保软件质量和加快交付速度的关键工具。本文将深入探讨自动化测试框架的设计原则、组件选择、以及实现过程。通过实际案例分析,我们不仅展示了如何构建一个健壮的自动化测试框架,还讨论了如何克服常见问题,并提出了优化策略,以帮助读者更好地理解自动化测试的价值和实施细节。
|
4天前
|
SQL 关系型数据库 MySQL
SQL批量插入测试数据的几种方法?
SQL批量插入测试数据的几种方法?
13 1
|
4天前
|
敏捷开发 监控 测试技术
深入理解自动化测试:从理论到实践
自动化测试在软件开发中扮演着至关重要的角色,它不仅提高了测试效率,还确保了软件质量的一致性和可靠性。本文将引导你了解自动化测试的核心概念,探讨其在不同开发阶段的应用,并通过一个简单的代码示例,展示如何实现一个基本的自动化测试脚本。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技能。
|
5天前
|
敏捷开发 测试技术 持续交付
软件测试中的自动化策略与实践
在软件开发的海洋中,自动化测试是一艘能够带领团队高效航行的帆船。它不仅能提升测试效率,还能保证软件质量的稳定性。本文将通过深入浅出的方式,带你了解自动化测试的核心概念、工具选择、框架搭建,以及如何将自动化测试融入日常开发流程中,让你的开发团队乘风破浪,驶向成功的彼岸。
|
8天前
|
测试技术 开发者
软件测试的艺术:从理论到实践的探索之旅
【9月更文挑战第36天】在软件开发的广阔天地中,测试是确保质量的关键一环。本文将带你领略测试的多维面貌,从基础概念到高级策略,我们将一起探索如何通过测试来提升软件的可靠性和性能。你将学习到如何设计有效的测试用例,理解不同类型的测试,并掌握一些实用的测试工具和技术。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在软件测试的道路上更加从容不迫。
25 3