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

简介: 本文介绍了敏捷测试的延伸实践,重点讨论了持续集成(CI)和持续部署(CD)的概念与实践方法。持续集成强调频繁提交代码至主干并自动化构建测试,确保快速反馈和高质量代码。持续部署则进一步实现自动化部署,通过蓝绿部署、金丝雀发布等方式提升软件交付效率。此外,文章还探讨了持续反馈机制,如A/B测试和混沌工程,以及DevOps文化下的测试策略,强调测试在整个开发流程中的重要性。

第8章敏捷测试延伸实践

8.1 持续集成(Continuous Integration,CI)

持续集成定义

Grady Booch在1991年首次提出了术语"持续集成"

11条实践:

  1. 维护单一代码库
  2. 自动化构建
  3. 让自动化构建可以自测试
  4. 每天提交代码到主干
  5. 每个主干上的代码提交都要在持续集成服务器上构建
  6. 快速修复失败的构建
  7. 保持快速的构建过程
  8. 在生产环境的克隆环境上进行测试
  9. 让每个人都能很容易地得到最新的可执行产物
  10. 让每个人都可以看到整个过程发生了什么
  11. 自动化部署

4条原则。

  1. 保证软件构建单一可信源
  2. 减少环境之间的差异
  3. 自动化所有步骤
  4. 让团队的工作快速得到反馈    

持续集成与测试

只有在确定代码没有质量问题后,才会将其提交到主干进行合并,一旦代码合并,就进入了提交阶段。

在提交阶段,开发人员将代码合并到主干后会触发的相关活动,包括代码合并、服务器端编译构建、服务器端单元测试、静态代码扫描和动态覆盖率分析等。

提交阶段执行时长不超过 10分钟

提交阶段的活动完成并生成二进制包后,进入自动化验收阶段,此阶段包含自动部署、冒烟测试以及自动化测试等活动

与测试相关的持续集成实践

  1. 提交前在本地运行所有的提交测试
  2. 提交测试通过后再继续工作:保持部署流水线常绿是持续集成的基础
  3. 不要轻易将测试失败的用例注释掉
  4. 若测试运行变慢,则让构建失败
  5. 若存在编译警告或代码风格问题,则让测试失败    

基于Jenkins和Docker的微服务持续集成案例

运行Jenkins最理想方式是使用独立的服务器

8.2 持续部署(Continuous Deployment,CD)

持续部署实践

持续部署是一种软件工程方法,通过自动化部署频繁地交付软件功能

  1. 自动化部署
  2. 各环境的部署脚本尽量一致
  3. 把部署流程集成在 CI/CD 中

基于环境的部署

  1. 蓝绿部署
  2. 金丝雀发布

基于应用的部署

  • 特性开关
  • 暗启动

8.3 持续反馈

1.A/B 测试

AB测试(A/B Testing)最早的应用应该是在2000年,Google 工程师用来测试搜索结果页面上每页应显示多少条搜索记录。

  1. 做测试时不局限于2个方案:可以是多个
  2. 不能使用新版本和上个时间段的老版本进行比较
  3. A/B 测试只能有1个变量    
  4. 避免使用用户标识奇偶法分组

混沌工程

21世纪初,亚马逊的“灾难大师”(Disaster Master)杰西·罗宾斯(Jesse Robbins)以自身的消防员培训经历为灵感创建了一个名为“游戏日”(GameDay)的练习项目,旨在测试、培训和应对亚马逊可能发生的系统灾难。

Netflix从200年8月开始就将自己的数据转移到AWS云服务上,原因是当时一个主要的数据库出现崩溃,影响了3天的DVD发货。Netflix将Chaos Monkey(捣乱猴子)部署在AWS云服务上。

混沌工程的实施步骤

(1)稳定状态

(2)假设。一旦确定系统处于稳定状态,接下来就可以开始进行故障假设,例如:    

  • 如果这个推荐引擎停止运行了呢?
  • 如果这个负载均衡器坏了怎么办?
  • 如果缓存失败了怎么办?
  • 如果延迟增加了300ms会如何?
  • 如果主数据库停止运行了怎么办?

请牢记一点,不要进行已知会让系统失败的假设!只对系统中你认为有弹性的部分进行假设,这才是实验的重点。

(3)设计运行试验

  • 有多少客户会受到影响?
  • 哪些功能受损?
  • 哪些地点受到影响?

(4)学习和验证。

包括:

  • 检测时间
  • 通知时间
  • 升级时间    
  • 发布时间。
  • 优雅降级时间
  • 自我修复时间
  • 恢复时间(部分和全部)
  • 解除警报并恢复稳定时间

错误纠正(Correction-of-Eeeor)文档,简称 COE 文档。

COE 文档组成

  • 发生了什么事(时间轴)?
  • 对我们的客户有什么影响?
  • 为什么会出现错误(5个Why原则)?
  • 你学到了什么?
  • 你将如何防止它在未来再次发生?

(5)改进和修正。

混沌工程的价值

(1)混沌工程能够帮助发现系统中的未知因素,并且能让我们在正常工作时间对其进行修复,避免牺牲休息时间。

(2)一个成功的混沌工程实践总会产生比预期多得多的变化,在这些变化中最重要的免责文化从“你为什么那样做”自然演变成“我们如何避免在未来这样做”,这会让团队快乐、更高效,也是其黄金价值所在。

生产环境中测试

1,上线后测试:测试环境与生产环境不一致

2、线上巡验

(1)避免“脏数据”

(2)尽量使用自动化测试。

(3)测试范围主要考虑核心业务

8.4 DevOps

DevOps 是 Development(开发)和 Operations(运维)的缩写的组合,DevOps一词来源于 2009 年在比利时根特市举办的首届 DevopsDays。  

DevOps 三步工作法

  • 流动
  • 反馈
  • 持续学习和实践

DevOps与测试

Katrina Clokie 在APractical Guide to Testingin DevOps 一书中提到,在DevOps 中,很少提到测试,是因为这些社区的组织者并不是测试背景出身,但这并不意味着测试就被弱化了,相反,测试应该作为重要的活动融入整个开发过程。

敏捷专家 Dan Ashby 在个人文章Continuous Testing in DevOps 中表示:你可以看到为什么人们很难理解在这样一个根本没有提到测试的模型中,测试处于这样的位置。对我来说,测试适用于 DevOps 模型的每一个环节。

目录
相关文章
|
17天前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
33 4
|
19天前
|
人工智能 JavaScript 前端开发
自动化测试框架的演进与实践###
本文深入探讨了自动化测试框架从诞生至今的发展历程,重点分析了当前主流框架的优势与局限性,并结合实际案例,阐述了如何根据项目需求选择合适的自动化测试策略。文章还展望了未来自动化测试领域的技术趋势,为读者提供了宝贵的实践经验和前瞻性思考。 ###
|
17天前
|
测试技术 Python
探索软件测试的深度与广度:从理论到实践
在数字化时代,软件已成为我们生活中不可或缺的一部分。随着技术的不断进步和用户需求的多样化,确保软件质量变得尤为重要。本文将深入浅出地介绍软件测试的核心概念、类型及其在软件开发生命周期中的重要性。我们将通过实际案例,展示如何实施有效的测试策略,并探讨自动化测试的未来趋势,旨在为读者提供一套完整的软件测试知识体系,帮助提升软件质量和开发效率。
|
18天前
|
测试技术 Python
探索软件测试的奥秘:从理论到实践
在软件开发的宇宙中,软件测试犹如一颗璀璨的星辰,指引着质量的方向。本文将带你穿梭于软件测试的理论与实践之间,揭示其内在的逻辑和魅力。从测试的重要性出发,我们将探讨不同类型的测试方法,并通过实际案例分析,深入理解测试用例的设计和应用。最后,我们将通过一个代码示例,展示如何将理论知识转化为实际操作,确保软件质量的同时,也提升你的测试技能。让我们一起踏上这段探索之旅,发现软件测试的无限可能。
|
21天前
|
jenkins 测试技术 持续交付
自动化测试框架的搭建与实践
在软件开发领域,自动化测试是提升开发效率、确保软件质量的关键手段。本文将引导读者理解自动化测试的重要性,并介绍如何搭建一个基本的自动化测试框架。通过具体示例和步骤,我们将探索如何有效实施自动化测试策略,以实现软件开发流程的优化。
43 7
|
20天前
|
测试技术
探索软件测试的奥秘:从理论到实践
本文深入探讨了软件测试的基本概念、重要性、主要类型以及实施策略。通过分析不同测试阶段和相应的测试方法,文章旨在为读者提供一套完整的软件测试知识体系,帮助他们更好地理解和应用测试技术,确保软件产品的质量和可靠性。
36 4
|
23天前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
37 2
|
15天前
|
监控 搜索推荐 测试技术
电商API的测试与用途:深度解析与实践
在电子商务蓬勃发展的今天,电商API成为连接电商平台、商家、消费者和第三方开发者的重要桥梁。本文深入探讨了电商API的核心功能,包括订单管理、商品管理、用户管理、支付管理和物流管理,并介绍了有效的测试技巧,如理解API文档、设计测试用例、搭建测试环境、自动化测试、压力测试、安全性测试等。文章还详细阐述了电商API的多样化用途,如商品信息获取、订单管理自动化、用户数据管理、库存同步、物流跟踪、支付处理、促销活动管理、评价管理、数据报告和分析、扩展平台功能及跨境电商等,旨在为开发者和电商平台提供有益的参考。
23 0
|
22天前
|
人工智能 数据管理 jenkins
探索软件测试中的自动化框架:从基础到高级实践
在当今快速发展的软件行业中,自动化测试已成为提高开发效率和保障产品质量的关键手段。本文将深入探讨软件测试自动化的各个方面,包括其重要性、主流的自动化测试框架、以及如何有效地实施自动化测试策略。我们还将通过案例分析,展示自动化测试在实际项目中的应用效果,以及面临的挑战和解决方案。无论是软件开发者还是测试工程师,了解并掌握自动化测试技术都将极大提升工作效率和产品质量。
42 0
|
4天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
30 11
下一篇
DataWorks