通过一张图来了解一下敏捷测试和DevOps测试

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 通过一张图来了解一下敏捷测试和DevOps测试

image.png

现在DevOps已经成了一个非常热门话题,但是又有谁真正理解了DevOps,可能少之又少。上周聆听了茹炳晟老师的在线课程,通过一张图我才发现真正理解了DevOps


对本图的理解


这张图很好地使我们理解了敏捷、CI/CDDevOps之间的关系。下面我先来讲解一下我对这张图的理解。


对于精益(Lean)就是对我们以前所说的产品开发周期进行不断地快速迭代更新,它包括了产品开发周期的所有阶段:前期调研->立项->获取需求->需求分析->概要设计->详细设计->代码开发->测试->运维的所有阶段。而敏捷(Agile)可以认为从“需求分析”后期到“测试”全部结束对需求的迭代开发过程。持续集成(CI)仅仅发生在敏捷阶段,而CD可以理解为持续部署(Continuous Deployment),在这里可以把持续部署理解为把构建部署到测试环境、准生产环境或生产环境,也可以把CD理解为持续交付(ContinuousDeliver),即把经过测试后的构建交付给最终用户,往往CI/CD中的CD指的是持续交付(Continuous Deliver),而持续部署(Continuous Deployment)往往认为是持续集成(CI)的后续阶段。而DevOpsCI/CD的基础上再加上后期在客户环境运行期间的监控。


下面我们来谈谈在AgileDevOps下如何进行测试。谈起AgileDevOps下的测试,现在比较火的两个词叫做测试的左移和测试的右移。


测试的左移


先来谈一下测试的左移,其实测试的左移可以左到Business阶段,我在2002年从事测试工作,由于我毕业那个年代基本没有软件测试这个工种的,从大学里出来从事软件技术行业,除了开发就是运维(那个时候叫网管),立项->获取需求->需求分析->概要设计->详细设计->代码开发->测试,全部由软件工程师来完成,后来测试独立开发之后,发现许多缺陷,测试人员如果在测试时候介入,发现一些问题牵扯到架构,数据库设计等问题,修改起来就太晚了,所以公司CTO要求在需求和设计阶段,必须有12名资深人员参与评审,效果是非常好的。这也许就是现在所说的测试左移。


敏捷研发中的测试


接下来说一下敏捷研发中的测试。现在考虑的是一个比较大型的WEB产品,这个WEB产品下的组织架构是这样的:它有多个Feature,采用敏捷研发模式,由多个Feature Team 一个Release Team组成。1nFeature分配到1Feature Team中,最后在Release之前由Release Team进行统一的测试,测试通过部署到准发布环境进行验收测试,验收测试完成,正式发布。团队每3-4天会发布一个Beta版本,每1个月发布一个正式产品。Release Team仅对正式产品和准生产环境下的测试负责,Beta版本不经过Release Team的内部测试。


Feature Team的每一个Sprint阶段会把1-2个(最多2个)Feature拆分成数个User Story,然后在Sprint计划会议的时候,把这些UserStory拆分成数个TaskFeature Team中的开发人员每天领1-数个Task进行开发,开发完毕进行单元测试静态分析,Pass后可以把代码check inGitHub


Feature Team中的测试人员在Sprint前期进行测试计划、分析和设计。会在开发人员写产品代码和单元测试的时候设计。测试计划非常简单,通常为一页纸的测试计划由team内的TOTest Owner)负责。分析和设计同时进行,对User Story中关键场景的接口测试和冒烟测试书写GUI测试代码。在正式书写这些代码之前,先书写TOLTest Object List,可以理解为通常测试用例中的标题一栏),TOL书写完毕必须通过TOL Review。团队人员,MTOMaster Test Owner,负责整个团队的测试活动高层人员)必须参加,相关干系人选择参加,评审结果会产生以下情形。


  • 添加。
  • 对于遗漏的TOL需要添加。

  • 修改。
  • 对于描述的错误的测试用例进行修改。
  • 对于不应该在接口测试中进行而应该在GUI测试中进行的用例进行调整。
  • 对于不应该在GUI测试中进行而应该在接口测试中进行的用例进行调整。

  • 删除。
  • 对于彻底错误的测试用例进行删除。
  • 对于没必要进行自动化测试的用例先记录,在探索式测试阶段进行手工测试。

所有这些TOLFeature Team内的每个开发人员必须知晓。


评审完毕,书写这些测试代码。书写完毕必须进行Code Review,通过Code Review后会把这些代码check inGitHub,然后与开发协商可以启动哪些TestCase,并且这些Test Case分为VIP优先级和普通优先级。VIP优先级的Test Case在开发人员每次check in之前必须运行,VIP优先级和普通优先级的会在每天晚上统一由CI负责。这些产品代码和测试代码可以建立在不同的分支上,也可以在一个分支上。如果建立在不同分支上,每天下班之前必须Merage到主分支上,在放到主分支上之前,也要运行其他小组的所有VIP优先级的Test Case,如果没有通过不允许Merage。另外测试人员每天会从GitHub上获取前一天打包好的CI版本,在本地安装后进行1-2个小时的探索式测试。在Sprint中后期,当开发人员完成所有的开发与单元测试工作,测试人员的接口测试与GUI测试代码也基本书写完成,测试人员应该对产品的性能、安全性进行Early Test和对整个系统中进行探索式测试。在这些测试中特别关注本次Sprint和属于本Feature Team的历史模块,当然也可以测试其他Feature Team的模块。Early Test主要对产品的性能和安全进行初步的测试和验证,执行最小性能和安全测试用例集(这个用例集由团队Test Club起草审核后生效,Test Club由每个团队的TOMTO参加,MTOClub的负责人)。目的为了提前发现非功能性问题和为Beta版本奠定基础。


团队初期的CI仅提供单元测试、接口测试和GUI测试的测试集。后来先后加入了性能测试与安全扫描测试集。并且随着测试集的增加,测试机器由最初的一台变成了分布式架构。VIP测试用例集会在开发人员每次把代码Check inGitHub中触发,如果测试未通过自动产生回滚,不允许提交,这样的测试一般在5-10分钟内完成,测试报告通过Email形式发给提交代码的开发人员以及书写测试代码的测试人员。每天晚上CI系统在20:00启动,通常在第二天上午5:00结束所有测试任务,并且把测试结果发送到所有人的Email系统中。


Release Team会在产品的正式发布之前对整个产品进行全面的非功能性的测试(比如安全性、性能、可靠性、可维护性、可移植性、安装、卸载、在先升级)和对整个系统进行探索式测试。


Feature发现小组内能够立刻修改的缺陷通过自研发的缺陷管理工具进行管理,这些缺陷往往可以及时修复。Feature TeamSprint结束前确定修复不了的缺陷以及在日常工作中发现其他team的负责模块的缺陷,应该及时发布在整个团队层面的JIRA中。Release Team发现的缺陷也记录到JIRA中。团队采用缺陷管理委员会(由公司的若干个技术大咖组成),缺陷管理委员会会根据情况,每一到两天集中处理新的和复测退回缺陷,确定是否修复?何时修复以及谁来修复?


测试右移


最后说下测试右移,这可真正是个新东西,产品到了客户处,帮助运维人员搭建好环境,冒烟测试PASS,后期如果有问题,一般也是由客户在使用过程发现。现在测试右移可以包括以下几个方面:

  • 生产环境的全链路压测;
  • 配合灰色发布下的测试;
  • 通过监控运行环境的监控日志分析问题;
  • 抓取微服务各个服务之间的调用,建立契约测试;

这里来探讨一下灰色发布。“天下武功,唯快不破”,是现在移动互联网时代对软件提出的新的任务,随之对于对用户质量要求不太高的产品提出了灰色发布。灰色发布通常可以分为金丝雀发布与功能开关发布两种情形。现在的网络架构均为分布式架构,采用灰色发布,可以把需要发布并且测试不太充分的模块部署到分布式架构的一台机器上。假设现在这个分布式架构上有10台机器,采用负载均衡的体系,这样就有10%的用户使用的是新版本的产品,在使用过程中如果产生问题会及时通过问题反馈系统反馈给研发人员,假设问题不严重可以在用户使用的情况上,及时调整补丁;但是问题一旦非常严重,立即复原到以前功能(金丝雀发布采用把以前的版本替换新版本;功能开关采用关闭功能开关,由此可见功能开关的策略要比金丝雀发布策略要先进,但是对研发人员的技能也高)。这些问题在本地的进行修改且测试通过后重新进行灰色发布。经过一段时间的运行没有发现问题,可以逐步部署到多台机器上,在这里特别注意,当部署的机器为全部机器的30%60%90%的时候,请多留一点时间,因为这个情形下可能会产生一些关于性能方面的问题,一旦发现问题立刻进行修复处理,特别情况下考虑版本的回滚。当所有机器都部署新版本后,系统的升级也就完成。


总结


总结一下:在DevOps情形下的软件测试包括测试的左移、敏捷开发中的测试以及测试的右移。测试的左移主要考虑对需求设计的评审以及本文未涉及到的TDDUTDD)、BDDATDD。测试的右移主要考虑在生产环境中的测试,敏捷开发中的测试主要考虑在Sprint期间探索式测试和脚本测试相结合的方式和正式版本Release之前的全面的测试。


软件安全测试

https://study.163.com/course/courseMain.htm?courseId=1209779852&share=2&shareId=480000002205486

接口自动化测试

https://study.163.com/course/courseMain.htm?courseId=1209794815&share=2&shareId=480000002205486

DevOps 和Jenkins之DevOps

https://study.163.com/course/courseMain.htm?courseId=1209817844&share=2&shareId=480000002205486

DevOps与Jenkins 2.0之Jenkins

https://study.163.com/course/courseMain.htm?courseId=1209819843&share=2&shareId=480000002205486

Selenium自动化测试

https://study.163.com/course/courseMain.htm?courseId=1209835807&share=2&shareId=480000002205486

性能测试第1季:性能测试基础知识

https://study.163.com/course/courseMain.htm?courseId=1209852815&share=2&shareId=480000002205486

性能测试第2季:LoadRunner12使用

https://study.163.com/course/courseMain.htm?courseId=1209980013&share=2&shareId=480000002205486

性能测试第3季:JMeter工具使用

https://study.163.com/course/courseMain.htm?courseId=1209903814&share=2&shareId=480000002205486

性能测试第4季:监控与调优

https://study.163.com/course/courseMain.htm?courseId=1209959801&share=2&shareId=480000002205486

Django入门

https://study.163.com/course/courseMain.htm?courseId=1210020806&share=2&shareId=480000002205486

啄木鸟顾老师漫谈软件测试

https://study.163.com/course/courseMain.htm?courseId=1209958326&share=2&shareId=480000002205486

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
6月前
|
Devops Java 测试技术
软件测试/测试开发|常见软件测试框架类型:TDD、BDD、DDD、ATDD、DevOps介绍
软件测试/测试开发|常见软件测试框架类型:TDD、BDD、DDD、ATDD、DevOps介绍
|
3月前
|
弹性计算 测试技术 持续交付
阿里云云效产品使用合集之如何进行自动化测试
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
Devops jenkins 测试技术
DevOps实践:持续集成与自动化测试的融合之道
【9月更文挑战第29天】在软件开发的快节奏竞赛中,DevOps如同一位智慧的舵手,引领着船只驶向效率与质量的彼岸。本文将揭开DevOps的神秘面纱,探索其核心理念如何通过持续集成(CI)和自动化测试的实践,实现软件开发流程的优化与加速。我们将一同见证代码从构思到部署的旅程,以及这一过程中的关键技术和工具如何协同工作,确保软件质量和交付速度的双重提升。
|
3月前
|
运维 Java Devops
阿里云云效操作报错合集之在流水线增加单元测试报错,是什么导致的
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
4月前
|
运维 Devops jenkins
DevOps文化下的自动化测试实践
【7月更文挑战第17天】随着DevOps文化的兴起,自动化测试成为软件开发过程中不可或缺的一环。本文将深入探讨自动化测试在DevOps环境中的实施策略、工具选择和最佳实践,旨在帮助读者理解如何通过自动化测试提高软件交付的速度与质量。
|
5月前
|
敏捷开发 测试技术 API
阿里云云效产品使用问题之API中包含有获取测试计划的接口吗
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
Kubernetes jenkins 测试技术
【Kubernetes的DevOps自动化,Jenkins上的Pipeline实现自动化构建、测试、部署、发布以及Bookinginfo实例的部署灰度发布故障注入流量】
【Kubernetes的DevOps自动化,Jenkins上的Pipeline实现自动化构建、测试、部署、发布以及Bookinginfo实例的部署灰度发布故障注入流量】
260 1
|
运维 Kubernetes jenkins
【Kubernetes测试生产环境整体部署及全链路测试、自动化运维平台Jenkins与Devops环境搭建】
【Kubernetes测试生产环境整体部署及全链路测试、自动化运维平台Jenkins与Devops环境搭建】
311 0
|
7天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
36 3
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
58 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)