云原生架构下如何建设有效的质量保障体系

当前,随着证券行业数字化转型的推进,作为金融科技研发团队为更好的赋能业务部门也在不断转型,一方面是研发资源从瀑布模式到敏捷迭代的转型,高效推进研发工作的快速交付,另一方面是系统架构从传统单体架构向云原生架构转型,围绕微服务、容器、devops和持续交付构建整个研发体系的云原生能力。在转型过程中,中泰证券科技研发部在devops思想的指导下完成devops效能平台的自主研发和成熟运行,具备持续集成持续交付(ci/cd)能力,而持续测试(ct)在devops流水线中是不可或缺的一环,如何高效保障产品质量,建设有效的质量保障体系是测试团队面临的一个挑战。
通过对质量体系建设的深入探索和研究,从流程规范建立与质量保障执行方面做了落地实践。流程规范上建立质量门禁提升产品准入准出标准,质量保障执行上根据测试金字塔模型分层开展自动化测试。ui层实现基于appium的自动化测试;接口层基于drf(django rest framework)框架和对httprunner、jmeter等开源工具的集成,实现接口的功能测试自动化与性能测试自动化;单元层集成静态代码扫描与安全测试。实践结果表明,质量保障体系的建设规范了研发过程,提升了交付效率,节省了研发成本,改善了交付质量。
背景及意义
2021年10月在北京金融街论坛上证监会科技监管局组织相关单位编制的《证券期货业科技发展“十四五”规划》正式发布,内容中重点强调了紧扣“推进行业数字化转型发展”与“数据让监管更加智慧”两大主题。当前无论是证券企业内部的需要还是监管的要求,证券行业的数字化转型的要求已经被提到了前所未有的高度。中泰证券也不例外,2015年中泰证券成立网金及金融科技研发团队围绕齐富通app进行自主研发,通过金融科技的能力为经纪业务发展提供核心竞争力,到目前为止除了服务客户的齐富通app,还有面向客户的融易汇pc、赋能员工展业的掌易通app、综金零售crm、机构crm以及集中运营平台等。然而,随着通道业务佣金不断下滑以及互联红利的减退,传统的经纪业务遇到了瓶颈并开始向财富管理业务转型,各家券商聚焦财富管理业务为客户提供线上和线下相关的服务。   作为金融科技团队为助力财富管理数字化转型并形成护城河构建核心业务竞争力,同样需要进行金融科技团队内部的转型。首先是改变资源的组织形式,利用精益敏捷的思想去推动金融科技团队的转型,通过敏捷小组的方式高效推进各项业务研发工作的快速交付,使用北极星指标和okr工具去对齐目标的达成。然后是调整系统的技术架构,从传统的架构逐步向云原生架构的转型升级,围绕微服务、容器、devops和持续交付构建整个研发体系的云原生能力。
云原生架构
然而,当研发资源的调整从瀑布模式到敏捷迭代,将传统的单体架构逐步升级和改造为云原生架构的过程中,产品的质量保障方面出现了一些挑战和危机:
(1)迭代周期加快,测试时间不足;
(2)线上故障增多,交付质量下降;
(3)测试环境管理维护成本高,且无法满足需要;
(4)测试人员压力较大,测试团队不稳定。
因此,面对云原生转型过程中的挑战,构建一套完善的质量保障体系变得至关重要。
质量保障从体系规划到能力建设
质量保障体系结合证券行业安全、合规等需求特性,打破大家对质量保障是测试团队事情的错误认知,建立起全员质量文化意识,推动开发、测试、运维等不同角色人员共同对质量保障负责。通过规范测试流程、定义质量标准、线下质量与线上质量相结合的方式,全方位来保障产品的质量。
质量保障体系规划
01
流程规范
依托devops指导思想,建立devops全流程能力体系跟踪产品的需求、开发、测试、发布全生命周期流程状态,实现持续集成与持续交付能力提升交付效率,具体如下图所示。
devops全流程能力规划
基于devops全流程建立开发提测门禁机制,产品发布上线前制定常规功能发布和紧急功能发布流程,如下图,不同发布流程会经过不同角色人员的审批确认,如产品经理、技术合规风控人员、安全人员、运维执行与复核人员、业务验收人员等,产品发布层层把关,所有流程线上留痕。
功能发布
02
线下质量
线下测试环境基于k8s实现容器化应用程序的编排管理,支持一键部署。测试策略上依据测试金字塔模型分层开展功能测试或自动化测试工作来构建测试滤网。
测试金字塔
测试金字塔中的界面层测试除了进行常规的业务功能测试、兼容性测试外,重点推进app端的ui自动化测试,通过ui自动化平台,快速实现自动化脚本的录制管理、多机执行任务调度、执行过程监控与测试报告生成分析等功能。接口层测试基于接口的设计-研发-管理-测试-发布-监控-下线全生命周期管理的思想建立接口自动化平台,支持接口对应的项目管理、环境管理、用例与套件管理、报告管理等功能,且接口自动化已无缝衔接到ci/cd流水线中具备持续测试的能力。接口的性能测试在接口自动化测试平台基础上做了功能扩展,集成开源的jmeter工具,支持集群式发压,具备性能测试场景管理、定时任务设置、压力机状态管理、性能监控及报告分析和管理等功能。单元测试主要由开发人员执行,测试人员主要根据gitlab diff做版本之间的差异化测试。
03
线下质量
建立线上质量保障机制,通过线上质量实时监控、风险分析、盘前巡检、线上问题定位、跟踪、复盘等方式推进测试右移。
线上服务质量监控
04
质量度量
质量保障需要研发、测试和运维共同来保障,对于不同角色人员设定不同的质量度量指标。研发指标:提测bug率;测试指标:生产bug逃逸率;运维指标:各类型故障数量、比例、时长。
质量度量指标
质量保障体系中关键技术介绍
01
ui自动化平台
ui自动化平台架构
ui层自动化测试平台,面向金融行业高安全性、高性能和高可靠性的要求,支持私有云模式的落地实施。平台整体架构采用微服务集群框架,底层对appium开源测试工具进行封装,服务端主要分为交互平台、执行引擎、接入平台三部分,各个部分均可以横向扩展,整体架构高效稳定可靠;例如测试人员和开发人员使用人数多的话可以将交互平台服务增加,若测试手机数量大的话可以增加部署接入平台的tools服务,若系统调度运行慢的话可以增加执行引擎服务器数量。
02
接口自动化平台
接口自动化测试平台整体架构采用python+drf+httprunner+vue实现,测试平台的主要实现架构见下图。
接口自动化平台架构
前端ui层:提供便捷可视化的平台操作环境。nginx代理转发动态请求到uwsgi服务器,再通过wsgi协议与django进行通信。django+uwsgi解决了django原生启动方式runserver无法支持高并发的问题。执行层:为接口自动化提供多种调用方式,如jenkins、devops蜂鸟效能平台、日常回归、业务监控调用等。 测试用例与配置层:提供接口测试用例的定义、配置及用例的执行功能,集成hr测试框架。公共函数层:实现了接口自动化测试平台一整套的核心功能,如数据库读写、平台认证授权、发送邮件和调用测试执行器等。该层依靠django rest framework及django的orm操作,通过编写相应的视图类、路由匹配规则产生出api,实现了上述前后端的交互及后端各个组件之间的调用。数据管理层:使用mysql数据库主要负责自动化平台的执行日志、用例数据、测试报告、统计报表的存取。
03
性能自动化平台
性能测试平台架构设计与接口自动化测试平台共用,压测工具:平台集成广泛应用的jmeter压测工具,非gui模式执行。channels:提供实时查看压测运行日志的功能,实现websocket消息实时通讯。celery:实现django异步任务处理功能。redis:一方面是作为celery异步任务处理的消息中间件,另一方面是作为channels的channel layer,实现消息的传输功能。文件存储:主要保存性能测试脚本、测试参数文件和测试报告等。
04
关键功能截图
质量保障体系的建设在落地实践中取得了较好的成果,具体关键截图如下所示。
关键截图一:提测及发布流程
提测及发布流程图
该图为一个完整研发提测与功能发布流程图,各职能化角色都有参与到该流程中,开发人员提测、测试人员执行测试、技术经理确认上线发布、产品经理发布前验收、产品及技术负责人确认上线、合规确认发布流程、运维人员a执行发布、运维人员b复核发布、业务部门生产验收。 关键截图二:ui自动化测试多机执行
ui自动化
该图为ui自动化支持多台手机并行执行测试任务,不同机器间的测试用例互不干扰,解决测试用例较多情况下测试执行较慢的问题。 关键截图三:接口自动化平台
接口自动化平台
该图主要展示了接口自动化测试平台的相关数据,项目数、接口数、用例数、用例执行成功率等数据一目了然。 关键截图四:性能测试平台
性能测试平台
该图为性能测试平台首页,展示最新测试场景、最新测试报告、压力机信息、当前运行中的任务四块内容。 关键截图五:各阶段安全测试
安全测试
该图从编码、构建到测试的各阶段,通过静态代码扫描、软件成分分析、动态应用安全测试、交互式应用安全测试方法建立安全测试工具链。 关键截图六:线上质量监控看板
线上监控
该图为线上质量看板,实时监控产品的线上质量状态,当有问题发生可触发实时告警。
总结
云原生体系下的质量保障建设带来的价值如下:
1. 规范研发过程,实现合规、安全、可控
根据证券期货行业相关信息技术管理办法,规范了提测质量门禁和上线质量门禁实现了各环节操作的安全可控及合规。
2. 提升交付效率,缩短交付时间质量左移缩短开发人员完成功能代码编写到生产发布过程中的时间消耗,提升研发交付效率。缩短了开发时间周期,通过静态代码扫描可以在10~20分钟内实现对一个应用系统的代码检查,提升了开发人员codereview的效率。每个迭代的时间缩短0.5~1天。缩短了测试时间周期,接口和ui全功能回归测试从2~3天人工测试降低到自动化测试6~8小时。性能测试实现实时性能监控,无需登录每台服务器查看性能,测试报告统一化、可视化,平均每个场景缩短30分钟左右。 devsecops的实施将安全测试工具链集成到流水线,使安全嵌入无缝衔接到ci、cd,其中dast,从3到5天人工进行,到目前的自助式服务30分钟,减少了等待3到5天;iast通过插桩方式在做自动化及回归的过程中无感的进行安全测试,无额外的安全测试开销。  3. 减少了人力资源投入,节省了研发成本     在测试能力提升方面,为保障核心业务的上线质量,通过加强了自动化测试能力建设,通过自动化测试大大减少了人力资源投入。2022年自动化测试累计节省17人年。2022年至今ui回归次数安卓和ios共回归52次,每次执行用例2500+,按照每人每天可执行55条计算,共节省约9人年;接口自动化回归454次,81989条用例,按每人每天40接口计算,共节省约8人年。  4. 提升交付质量,减少线上故障安全左移,可以发现98%以上的安全漏洞,大大降低了线上的解决安全漏洞的成本及安全风险。保障核心业务的上线质量,自动化测试用例覆盖核心业务用例80%以上,核心业务主要为集中交易、两融、期权、理财、条件单、银证转等核心业务,自动化测试回归后无线上问题反馈。


去年全球智能手机市场出货量份额,vivo排名第五
一个颠覆IT行业的技术,边缘计算强势来袭
HPD模块实现在Power Tester设备上进行功率循环试验
深度剖析电动汽车电池管理系统
预计2011年全球智能手机出货量增长率将达到60%
云原生架构下如何建设有效的质量保障体系
您真正需要多大的ADC分辨率
全球首款超级水下机器人正式发布
虾米音乐正式宣布关停
工控机由哪几部分组成 主板 CPU 内存 硬盘 显卡 声卡 网卡是主体
对象存储正成为主流
ME结构在FPGA加速芯片ACAP有何作用
元器件创新成果亮相中国电子展 厂商主打节能牌
PCB设计的元件排列方式和布局要求
电流源正负极怎么判断
蓝牙5.1和5.3有什么区别?
简述ADAS重要性和行车安全八忌讳
智能电表,为何更费电费
如何使用电机位置传感器来测量定子与转子之间的相对位置
3D打印过程中会遇到哪些问题