测试开发工程师成长日记001 - 敏捷测试、CI/CD/CT、DecOps的一些介绍
始终都没有很坚定想去做一份职业,大概就是缺少对互联网的热爱与坚持,对于我个人而言,大概需要的是简单而明确的方向,比如考研:选中一个学校并开始各个科目的学习和延伸。但是,找工作完全不一样,研究生两年已经脱离了我原本的想法和期待,现在的我已然变成了一个理想主义的清醒废物。但是,我还是想着要改变,在实习结束之际,在重新回到学校压抑科研生活之际,我决心记录些什么,好让自己残留一些对工作的向往和希冀。当只有一个选择的时候,人势必就只能去坚持做好,所以我决定放弃plan b的公务员啦,好好做码农,这是我当下的抉择!
一、敏捷测试
Wikipedia对敏捷测试的定义:
Agile testing is a software testing practice that follows the principles of agile software development.1
译文:敏捷测试是一种遵循敏捷软件开发原则的软件测试实践。
这是通过一种敏捷的做事方法,可以让团队协作更紧密、工作效率更高,确保以可持续的速度频繁地交付客户所期望的业务价值。
1、敏捷测试与传统测试的区别:
- 传统模式是把软件开发分为“软件需求”、“软件开发(设计&编码)”、“软件测试”、“软件发布”四个阶段,一般利用里程碑的方式对各阶段进行明确定义。
1.软件测试是研发过程中的一个阶段,而且一般都属于项目的最后阶段;测试团队都是立场比较明确,与团队之间的沟通以正式为主
2.测试以需求为依据,要求有需求规格,自动化测试不作为要求
3.测试计划做得比较详细,对测试活动都会做好周密的安排
4.需求方确定需求后,中间环节参与较少。
- 在敏捷模式里,相对传统模式,软件测试不再是一个独立的阶段,测试是融入在软件开发过程中的一个组成部分,发生在每一次迭代中,也包含所有类型的测试,如单元测试、集成测试、系统测试、验收测试等。
1.测试人员与开发人员工作更紧密,非正式的直接沟通成为了一种常态
2.测试以最终用户为准,辅以用户场景或用户故事作为测试的依据
3.测试追求快速高效,自动化测试在测试中扮演了及其重要的角色,敏捷测试人员辅以探索性测试跟踪核心业务场景
4.敏捷测试拥抱变化,测试计划比较灵活,按业务价值交付顺序执行
5.需求方需求定义后,参与每一次产品演示,确认每一次迭代产物,全程参与项目
2.典型的敏捷软件开发过程
3.为什么需要敏捷测试?
1.缩短价值交付周期
开发团队通过提供最小化可用产品获取用户反馈,并在这个最小化可行产品上持续快速迭代,直到一个相对稳定的阶段产品。在此过程中,敏捷测试人员快速验证团队的目标,快速试错
2.降低软件质量风险
a.敏捷测试要求测试人员尽早进入测试,与开发人员形成统一战线,尽早发现系统缺陷及其它问题,避免大量问题在项目后期才发现,形成质量风险不可控的结果。
b.启用日构建,通过BVT进行持续测试,让每天的迭代代码都能得到验证。
3.提高团队质量意识
敏捷测试人员以专业的能力,引导项目全体成员开展测试,编写自动化测试用例,关注自动化测试执行结果,以稳定的每次编译及测试均未发现缺陷为目标
4.节省项目研发成本
敏捷开发偏向项目型的组织架构,测试人员与产品经理、程序经理、需求人员、开发人员等构成一个团队,采用扁平化的方式进行管理,构建一种和谐的工作氛围,共同为交付价值而努力
5.加速个人能力提升
在一个敏捷迭代周期里,一般团队规模78人,敏捷测试人员至少23人,测试工作不在是一个萝卜一个坑,每个人承担的事情种类较多,要求的知识面更广泛,个人技术栈会越来越丰满,独挡一面的能力更强
二、CI/CD/CT
1、概念介绍
CI(continus integration)持续集成
是在源代码变更后,自动检测、拉取、构建、进行单元测试的过程。
持续集成的目标是快速确保开发人员提交的代码变更是好的,并且适合在代码库中进一步使用
CD(continus delivery)持续交付
指的是整个流程,他自动检测代码变更,并通过构建、测试、打包。
在持续交付中,每个阶段(从代码更改的合并,到生产就绪型构建版本的交付)都涉及测试自动化和代码发布自动化。在流程结束时,运维团队可以快速、轻松地将应用部署到生产环境中
谈到CD,其中是包含了两层内容:持续交付和持续部署。
有时候很多人会把持续交付误认为成持续部署,然而两者是两个不同层次的能力。
持续交付:
持续交付是持续集成的延伸或者看作持续集成的下一步,它将集成后的代码部署到类生产环境,确保可以以可持续的方式快速向客户发布新的更改。如果代码没有问题,可以继续手工部署到生产环境中。它强调的是,不管怎么更新,软件是随时随地可以交付的。
持续部署:
持续部署是持续交付的下一步,在持续交付的基础上,由开发人员或运维人员自助式的定期向生产环境部署稳定的构建版本,持续部署的目标是代码在任何时刻都是可部署的,并可自动进入到生产环境。
总结:
1.持续交付是指团队确保每个变更可以部署至生产环境,但也许并不需要实际部署,这通常可能是出于业务方面的原因。
2.持续部署是指每个变更可以自动部署到生产环境。只有成功实现持续交付的前提下,才能进行持续部署。
CT(continus testing)持续测试
完成 CI 中构建及单元测试和集成测试的自动化流程后,持续交付可自动将已验证的代码发布到存储库。为了实现高效的持续交付流程,务必要确保 CI已内置于开发管道。持续交付的目标是拥有一个可随时部署到生产环境的代码库。
2、相互联系
敏捷测试要取得好的效果,CI、CD及CT3是必不可少,缺少任何一项,整个流程就会不顺畅,效果也就大打折扣。
但要做好这CI、CD和CT,除了需要合适的工具提供支撑,还需要项目整体团队紧密协作。测试团队还需要具备一定的技术能力,在过程中提供驱动力,推动整个过程有序进行。
a.持续集成
敏捷研发过程中,测试的版本更换比较频繁,要求代码集成要快,整个构建一般需要控制在15分钟,构建的项目较多,我们采取并行及分布式执行。编译构建产物存放介质仓库,支持通过Web方式下载,供项目组成员取用。在我们的敏捷研发过程中,主要基于普元的DevOps平台实现持续构建。
b.自动化部署
配置与介质分离,按不同环境进行组合,使用普元DevOps平台标准化的部署流程,快速部署程序包并启动,定时进行健康检查。
使用DevOps进行测试环境的部署,可以解决一些关键问题,如部署目录的规范化、部署行为的规范化、部署过程的透明化、对部署结果进行初步检查以及支持部署异常的快速回滚。
通过DevOps平台的支持,可以避免无关人员获得敏感配置值,避免无关人员操作无关进程,通过页面交互方式,可以方便快捷搭建好所需环境,也大大减少了手动部署带来的压力。
c.自动化测试
自动化测试是敏捷测试非常重要的组成部分。
在敏捷开发这种极短的交付周期内,如果仅仅靠手工测试,则非常难以满足快速发布要求的。所以自动化测试是必不可少的一种手段。
另外这里谈到的自动化测试不仅仅只是指功能的自动化测试,还包括单元测试、静态质量扫描、性能测试、安全扫描等,也涉及自动化测试如何集成在整个交付管道中,缩减整个交付时间,最终给项目带来价值。
在普元产品的敏捷测试中,我们主要是基于普元统一测试平台UTP完成自动化测试,它不仅支持微服务接口的自动化测试、Web
UI的功能测试、移动App的兼容性测试等。
3、DecOps
3.1 介绍
单纯从字面上来理解,DevOps 是Dev(开发人员)+Ops(运维人员)【Open Pluggable Specification(OPS)】,虽然名字来源于开发和运维的缩写,但DevOps并不是简单的就是开发加运维。
DevOps 所涵盖的角色范围会更广:除了开发、测试、运维还会涉及到项目经理、产品经理,甚至和销售、市场等各个部门,跨职能部门互相合作,完成某一项目或任务。
3.2 一些误解
误解一:DevOps不是一种工具,有人可能会说我在用Docker又或Jenkins等工具,是不是就表明在做DevOps了?然而这些并不意味着就在做DevOps的事情。
误解二:DevOps不是一个新角色或者说是一个新的职位, 虽然说国内确实有些公司有单独的职位是DevOps工程师,但并不代表,DevOps是一个职位,严格来说它是一类工程师的统称。
误解三:还有人说,DevOps出来之后,是不是由一个独立的团队去做所有事情,从开发到运维,一个部门就都干掉。
总结:DevOps从需求到设计到开发、到测试到运维,甚至是线上的运营反馈整个全生命周期的,所以它应该是一个打通多个部门协调,协作的这样的一个平台。至于工具和自动化实际上只是DevOps实现的一种手段。或者说DevOps是通过工具,自动化,来达到这种通过工具链与持续集成、交付、反馈、优化进行端到端整合,完成无缝的跨团队、跨系统协作。
3.3 DevOps包含一系列工具链、平台
DevOps融合了一系列基本原则和实践的方法论,并从这些实践中派生出了各种工具,这些工具体现在软件开发和交付过程的不同阶段:
编码:代码开发和审阅,版本控制工具、代码合并工具
构建:持续集成工具、构建状态统计工具
测试:通过测试和结果确定绩效的工具
打包:成品仓库、应用程序部署前暂存
发布:变更管理、发布审批、发布自动化
配置:基础架构配置和部署,基础架构即代码工具
监控:应用程序性能监视、最终用户体验
3.4 国内主流的三大DevOps管理平台
除了上面说的这些工具链以外,也有一些DevOps管理平台服务,国内比较出名的就三个:
云效
TAPD
灵雀云
其中云效和TAPD属于SaaS类平台,灵雀云是基于容器技术,以DevOps为理念,面向微服务应用的新一代PaaS平台。
Tip:Software as a Service(软件即服务),Platform-as-a-Service:平台即服务
3.5 DevOps提倡的原则
从瓶颈点着手
Start Small,从小做起
痛苦的事情优先解决
工具也是一种文化
自动化别人,先自动化自己
价值拉动,而非事务驱动
构建指标,驱动DevOps落地。
创建从开发过程下游至上游的反馈环。
强调全局优化,避免局部优化。
持续做试验和学习的文化,通过反复实践来达到精通。
三、软件开发 CI/CD/CT的简要思维导图,以及常用的软件
参考文献
1.我对敏捷软件测试的理解与实践:https://blog.csdn.net/weixin_45443931/article/details/100148923?ops_request_misc=&request_id=&biz_id=102&utm_term=CICDCT&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-5-100148923.142v31control,185v2control&spm=1018.2226.3001.41872.企业DevOps研发模式下CI/CD实践详解指南 :https://www.cnblogs.com/jinjiangongzuoshi/p/12001708.html
3.软件开发 CI、CD的简要思维导图,以及常用的软件:cnblogs.com/lin-kid/p/11345308.html
附:博客园狂师【测试开发技术】
https://www.cnblogs.com/jinjiangongzuoshi/
测试开发工程师成长日记001 - 敏捷测试、CI/CD/CT、DecOps的一些介绍相关推荐
- 测试开发工程师成长日记018 - 测试面试必备题记录(持续更新)
技术模块 一.在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试? 建立测试计划,确定测试标准和测试范围 设计典型场景的测试用例,覆盖常用业务流程和不常用的业务流程等 ...
- 测试开发工程师成长日记010 - Jenkins中的CI/CD/CT(持续集成构建/持续交付/持续测试)
CI(Continuous integration,持续集成) CI(Continuous integration,中文意思是持续集成)是一种软件开发时间.持续集成强调开发人员提交了新代码之后,立刻进 ...
- 测试开发工程师成长日记009 - 环境排排站:开发环境、测试环境、生产环境、UAT环境、仿真环境
一.五种环境 项目部署环境一般可分为三种:开发环境,测试环境.生产环境,对应过程为:开发->测试->上线: 细分生成环境又分为生产环境和仿真环境,具体概念如下: 而UAT环境指的是用户接受 ...
- 测试开发工程师成长日记016 - 关于提测的那些事
1.提测预演 背景:前期存在提测质量低,提测后bug量较多,需求遗漏等情况,现增加并规范落实,提测预演环节,增加预演是否通过的相关标准. 目标:提高项目/迭代提测质量. 预演流程: 提测标准: 完成并 ...
- 测试开发工程师成长日记014 - linux常用命令day06
一.其他命令 1.tar 作用:tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户. tar [主选项+辅选项] 文件或目录 主要参数 使用该命 ...
- 测试开发工程师成长日记011 - linux常用命令day03
一.系统管理命令 对于Linux系统来说,无论是中央处理器.内存.磁盘驱动器.键盘.鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心.熟悉了Linux常用的文件处理命令以后,这一讲 ...
- 测试开发工程师成长日记004 - linux常用命令day01
Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想真正理解Linux系统, ...
- 测试开发工程师成长心路
入行测开,马上就要4年了.创业公司待过,大公司也待过,工作这一路走来,一些心得,转变,职场体会,早就想写出来分享一下.这个历程包含了技术的提升,工程师的素养和对这个行业的点滴感悟. 自动化测试vs测试 ...
- 测试自动化平台 | 测试开发工程师的进阶之路
https://mp.weixin.qq.com/s/WU5h8FW6BT5YZtlsSuCIcw 「摘要」随着近几年国内IT行业高速发展,对测试工程师的要求也越来越高,其作用也越来越重要,但很多测试 ...
- 测试开发工程师到底是做什么的?你真的知道吗
目录 一二三线互联网公司对测试开发工程师的要求: 测试开发工程师的具体职责: 不要迷失方向 总结: 测试开发工程师必看视频教程: 一二三线互联网公司对测试开发工程师的要求: 现在很多测试的同事对测试开 ...
最新文章
- 驰骋工作流引擎是如何实现自动更新的?
- Spring的单元测试
- Dubbo实现原理之基于SPI思想实现Dubbo内核
- 20120621第一天_复习与测试
- 美团脱颖而出的经验_使数据科学项目脱颖而出的6种方法
- memcached 如果进程占用cpu很高
- Spring 4.3 的新功能和增强
- 一个德国设计奖,怎么就成了中国品牌的财富密码
- Python_60之迭代器模块
- 微信小程序Axure元件库(2021最新版)
- php的敏感词过滤类库,敏感词过滤的php类库
- 微软说:麻将AI系统终获突破,人工智能商学院来啦!
- JAVAWeb物流快递管理系统
- Arango db 快速入门
- 程序员做技术管理需要懂哪些方面?
- 猫和老鼠服务器维修有问题,猫和老鼠手游:被救救我困扰了一整局 大佬:这是天使的副作用!...
- SQLite System.DllNotFoundException for SQLite.Interop.dll
- 虚拟机共享计算机的网络连接,Parallels Desktop如何共享网络 Mac与虚拟机共享网络设置教程...
- uoj#209【UER #6】票数统计
- AMD授权X86技术给中国,养虎为患还是另有所谋?
热门文章
- windows下namp的基本操作命令
- Windows server 2008 R2和Windows server 2003系统有什么区别?开服用什么系统的更好?
- MIUI ROM for Milestone 刷机教程
- 使用wav2sbc.exe无法转换WAV文件问题
- MATLAB求前N个数的阶乘和(通俗易懂)
- lockdir 密码破解
- 破解 找回 lockdir 加密的文件
- Zabbix结合Mojo-Webqq实现告警
- 体外诊断(IVD)行业系列四:快速崛起的独立医学实验室
- msdtc.exe是微软分布式传输协调程序。该进程调用系统Microsoft Personal Web Server和Microsoft SQL Server。该服务用于管理多个服务