实战 | 基于敏捷模式的分层自动化测试体系建设与应用

在这里插入图片描述
随着敏捷开发模式在IT领域有越来越广泛和深入的应用,测试团队也被要求能适应快速迭代、快速响应的敏捷开发模式,实现研发全过程和上下游团队的高效协作。为适应敏捷开发模式,德邦证券于2018年开始构建DevOps体系,并配套研发了DevOps智能云平台。信息技术部测试团队也随之开始从传统测试流程向稳态和敏态并存的测试模式转型。首先,测试团队对测试服务平台做了整体规划(如图1),通过测试管理平台、自动化测试、质量管理和技术赋能四大部分,输出测试团队可提供的测试服务,推动IT团队的敏捷化,最终实现IT团队的整体业务目标;其次,通过引入测试敏捷化概念,辅以敏捷化的开发测试流水线,强调以业务价值为核心,实现从代码管理、质量检测、自动化构建、接口自动化测试、UI自动化测试的一体化流程的建立,以及相应的实现测试需求管理、测试版本管理、测试环境管理、测试数据管理、测试用例和执行结果管理、测试报告自动化生成的全链自动化测试流程。

其中,基于敏捷模式的分层自动化测试体系是整个服务平台规划的重点和亮点。测试团队分别对敏捷测试流程、持续集成、分层自动化测试以及相关工具进行研究和探索,在DevOps智能云平台实现测试流水线,并结合德邦证券现有IT团队的状况和研发流程进行实践。

实战 | 基于敏捷模式的分层自动化测试体系建设与应用_第1张图片

图1 德邦证券测试服务平台整体规划

建设过程

德邦证券信息技术团队主要的项目类型包括外购研发类项目和自主研发类项目。外购研发类项目一般有明确的验收需求,适合稳态研发模式。测试团队以明确的测试需求为验收依据,按照传统的测试体系,出具测试计划、验收测试用例、执行、给出测试结论和缺陷清单。自主研发类项目一般需求按迭代规划,循序渐进的方式完成,但每个版本的迭代要求响应时间短、版本迭代快速,适合敏捷开发流程。目前,外购研发类项目和自主研发类项目并存,且在公司“成为全球领先的科技投行”的战略愿景引领下,德邦证券科技条线上下正积极推动数字科技创新,打造自主知识产权产品序列,故而自主可控产品的研发需求日益增多。这就要求测试团队既能适用原有开发模式的测试需求,又能适应快速迭代、快速响应的敏捷开发模式,基于敏捷模式的分层自动化测试体系建设势在必行。

引入测试敏捷化价值观

引入《双态IT联盟-测试敏捷化白皮书》中对测试敏捷化的定义,是指在与软件生命周期所有交付品质相关的活动中,通过对组织、文化、流程、技术等要素进行优化与改进,使得测试能够贯穿于研发全过程,并与上下游团队高效协作;能够在业务与技术水平上持续提升,达到自我驱动、灵活赋能、快速交付、高效稳定的最终目标。

测试团队积极创新,打破组织壁垒,引入测试敏捷化价值观,研发团队融合协作,协同交付,软件测试全线贯通三个阶段,通过测试左移、右移,实现测试在软件工程全生命周期的参与。

上线敏捷测试流程

整体研发基本业务流程图如图2所示,蓝色部分对应了敏捷管理部分,红色部分对应了开发流水线部分,绿色部分对应了部署流水线部分,黄色对应了测试流水线部分。

实战 | 基于敏捷模式的分层自动化测试体系建设与应用_第2张图片

图2 敏捷模式下研发基本业务流程

在目前已有的敏捷开发模式下的项目中,测试团队通过参与每个迭代的需求讨论和评审以及冲刺会议,进行测试需求的分解、测试设计的分层设计,实现接口自动化测试、UI自动化测试的分层自动化测试,实现测试职能左移来支持软件产品的快速交付。

搭建分层自动化测试体系

1.匹配有效的管理机制。引入分层自动化测试,除了自动化测试工具建设还需建立有效的管理机制,建立自动化测试用例库,通过标准的自动化测试流程,对软件系统业务逻辑进行自动化的基础功能验证,确保在系统升级或变更后能快速全面地进行冒烟和回归测试,持续快速地提供质量反馈,目前已在信息技术部研发类项目中普遍使用。

2.保证持续快速的质量反馈。根据测试团队的实际情况,通过测试设计的分层,将手工测试、接口自动化测试、UI自动化测试分层,每一层按照不同的测试对象对应了不同的测试需求、测试方法和策略执行。分层和实施的具体策略:接口自动化测试在自动化测试分层中所占比例最高,投入最大,主要覆盖所有稳定接口以及接口功能用例;UI自动化测试相对接口来说,稳定性低,投入成本高,主要运用于冒烟测试,回归测试两个阶段,在自动化测试分层策略中所占比例较小,投入较小,主要覆盖稳定功能的主流程以及重要功能用例的实现;而在实施上会考虑项目、模块、用例的优先级,以及实施的难易程度,以功能覆盖广度优先,兼顾功能深度,并采用分期实施、持续迭代的方式,将调试完成的脚本纳入版本库,保证自动化测试用例在持续集成流水线中实时可运行,以此实现小步快跑,快速质量反馈。

实际应用

在目前已实现的DevOps智能云平台中实现测试流水线,实现测试用例、测试计划、测试执行和自动化测试的管理。制定自动化测试流程的实施流程和规范,在德邦已有平台和流程的基础上,实现敏捷管理、开发流水线、测试流水线和部署流水线的打通,需求、开发、测试全流程的统一管理平台。

敏捷管理。引入敏捷开发流程,通过敏捷管理模块,展示项目基本信息,整体排期,通过项目需求、任务、冲刺、看板、人员分配、问题管理、燃尽图等管理项目的开发、测试进度情况,通过需求池、迭代规划,版本发布情况等规划整个项目管理过程,实时了解项目排期和运作情况。敏捷管理模块,前端功能页面定制开发,后端调用Jira接口的方式实现。

开发流水线。通过开发流水线模块,实现代码仓库管理,包括创建代码仓库、拉分支、打标记、合并等。开发流水线模块,前端功能页面定制开发,后端直接调用GitLab接口的方式实现。

部署流水线。通过部署流水线模块,实现持续集成,包括部署环境管理、静态代码检测任务管理,应用部署管理,流水线作业管理等。部署流水线模块,前端功能页面定制开发,后端通过调用Jenkins接口,实现持续部署任务的调度。部署方式包括主机部署、容器部署。

测试流水线建设。引入测试敏捷化概念,实现从代码管理、质量检测、代码覆盖率统计、自动化构建、接口自动化测试、UI自动化测试的一体化流水线的建立,以及相应的实现测试需求、测试版本、测试环境、测试数据、测试用例、执行结果、缺陷和测试报告的管理和数据统计。

通过测试流水线模块,实现测试管理,支持手工测试管理和自动化测试管理,能够建立一种“流水线”作业模式。手工测试支持“需求管理-测试需求分析-测试用例设计-测试计划制定-测试执行管理-缺陷管理-测试报告管理”完整的测试流水线。自动化测试能够支持“需求跟踪-自动化测试用例管理-自动化用例设计-执行-监控-缺陷管理-执行报告管理”等完整的自动化测试流水线。

测试流水线模块,前端功能页面定制开发,后端对接Jenkins和自动化测试工具,通过Jenkins直接调用Katalon、Jmeter、Python命令行来执行自动化测试,并对接各自动化测试工具获取自动化测试结果的方式实现。

通过DevOps智能云平台实现研发测试流程的一体化。将测试流水线和原来的敏捷管理和开发流水线、部署流水线打通,实现统一平台的管理,使过程数据实时统计成为可能;通过测试管理的规范化和自动化测试流水线,提高产品过程质量,降低产品风险,并节省流水线中人工干预的时间。

价值突破

自2018年起,德邦证券测试团队跟随敏捷开发模式的推广,开启了转型之路,即从传统测试流程向稳敏双态并存的测试模式转型。转型过程中,测试人员坚持以快速交付高质量并且符合业务预期的软件为首要目标,强调跨团队协同,强调测试无处不在,通过对整个持续集成&分层自动化测试的工具链的研究,实现从代码管理、质量检测、自动化构建、接口自动化测试、UI自动化测试的一体化流程的建立,以及相应的实现测试需求管理、测试版本管理、测试环境管理、测试数据管理、测试用例和执行结果管理、测试报告自动化生成的全链自动化测试流程。随着整个流程的不断发展和完善,敏捷测试已逐渐让系统的可用性在频繁代码提交下也可以得到充分验证;同时,软件的集成周期和交付速度也在不断进化,越来越靠近速度和质量“双赢”的局面。

后续在平台中,2021年德邦证券技术团队正在持续充分挖掘各类测试数据的价值,建设分类评价的指标体系,结合能效提供相关量化指标,为分析和改进研发流程和测试流程提供度量标准,从而促进研发资源的合理分配和监控,整个研发效能和产品质量的双提升,业务价值持续输出。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
在这里插入图片描述

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

你可能感兴趣的:(软件测试,程序员,IT,自动化,devops,运维,程序人生)