敏捷
产生背景
移动互联网时代,信息传播速度很快,谁更快地与用户形成链接,谁就控制了流量
什么是敏捷
可能是一种思想(敏捷宣言),也可能是一种思想(快速交付),最后落地会成为一种实践(如Scrum)
1、敏捷宣言:敏捷反对一次性计划、一次性交付的模式,强调尽快交付用户价值
2、快速交付:需通过迭代规划、控制团队规模及整合业务与研发团队的方式来解决交付周期过长的问题,并配合持续集成体系,加快用户价值交付的速度
DevOps
产生背景
原文:
DevOps是软件开发流程与快速交付之间的冲突无法调解的结果。用户需求在快速变化,而研发团队无法在这样快速迭代下持续稳定工作。
但个人更加赞同这篇文章的说法:
敏捷开发大幅提升了软件开发的效率和版本更新的速度,但是它的效果仅限于开发环节。运维那边,依旧是铁板一块,成为了新的瓶颈。
什么是DevOps
相关文章:https://zhuanlan.zhihu.com/p/91371659
DevOps是一组过程、方法与系统的统称,用于促进开发、运维和质量保障(QA)部门之间的沟通、协作与整合。
从目标来看,DevOps就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠。
虚拟化、容器、微服务让开发环境和部署环境更好地隔离,为DevOps提供了很好的条件,这也是DevOps越来越火的原因。
DevOps和敏捷的关系
敏捷偏管理,DevOps偏技术;
敏捷打通了业务、开发和测试,而DevOps进一步整合了运维团队,让交付进一步加快
快速交付引发的测试问题
1、频繁的迭代导致测试愈发急迫,手工测试成为快付交付的瓶颈
2、自动化测试“只重其形不重其意”的问题,导致大量的实践效果并不理想
3、问题无法通过测试完全发现,那就将可能的主要情况模拟出来,学会控制风险。而为系统设置故障,同样也是对测试设计的巨大挑战;
测试与行业发展
有效自动化
有效自动化包含了1. 自动构建待测试代码、2. 自动发布代码到测试平台、3. 自动对测试平台进行测试、4. 自动提交测试报告这样一个完整的回馈链,并且确保整个回馈链的时间在合适的范围内(快速大约为5min,中速为3~5h)。这样的自动化能让开发部门快速得到反馈并获取该反馈中包含的相关信息(被测代码分支、测试环境、测试脚本内容、缺陷信息)
有效自动化需具备4个条件:
测试运维的兴起
承担了持续测试架构设计的重任,并作为测试开发的规划者。主要负责构建自动化测试环境流水线、隔离测试环境、构建测试数据及Mock
测试的三大阶段
被动性阶段
测试只是上线前的一个验证过程,由于当时的应用架构几乎是基于介质安装的,因此导致更新的代价非常大。在这个阶段,测试部门需要测试的内容越来越多,但是遗漏的问题并没有得到有效控制,成为了“鸡肋”部门,不做测试不行,但做了测试也不能解决所有问题。
技术型阶段
测试人员通过技术提升了测试效率和测试质量,但由于测试环境、版本、数据等的大量快速变化,导致大量的等待,影响测试本身更好的发挥。
赋能型阶段
测试人员将测试作为一种服务赋能给其他部门。赋能包括测试本身的设计和执行能力,测试人员根据需求制定对应的实例化需求、用户故事和验收标准及完成定义,将“怎么测”在一开始就公开并赋能给相关人员,而测试平台的构建可以让相关人员自行执行测试,从而改变测试人员本身的角色。
在赋能型阶段,敏捷测试和测试运维组成了工程质量效能团队,把测试团队从成本部门变为赋能团队,为第三方提供保证质量的服务。
敏捷测试
在敏捷实施中,交付有用的软件比交付不出错的软件更有意义,过分的测试所带来的时间拖延和成本上升会影响用户问题的解决。因此,测试人员的职责也发生着变化:从不要出错到错误可控。
敏捷测试过程中,测试人员参与的过程包括:
测试敏捷化
DevOps体系下的持续测试,导致传统瀑布模式下的测试已经很难满足研发、需求、运维的敏态需要。
测试敏捷化通过对组织、文化、流程、技术等要素进行优化与改进,使得测试能够贯穿于研发全过程并与上下游团队高效协作,能够在业务与技术水平上持续提升,达到自我驱动、灵活赋能、快速交付、高效稳定的最终目标。