DevOps 是一组过程、方法与系统的统称,用于促进开发、运维之间的沟通、协作与整合,通过持续集成与持续交付使得构建、测试、发布能够更加地快捷、频繁和可靠。测试作为软件生命周期的一个必要环节,同样在 DevOps 实践中起到重要作用。
目前,在测试分层、自动化测试、测试管理等方面已经积累了丰富的 DevOps 实战经验,而性能测试是发现和识别系统瓶颈的重要环节,是对软件交付质量的有效补充。本文主要介绍 DevOps 模式下性能测试的实践经验。
一、性能测试环境搭建及部署
应用环境方面,由于 DevOps 实践多基于云上应用实施,只需要独立的数据库服务器,应用服务器通过容器实现,通过 K8S 将若干容器封装为最小调度单位的 POD 进行调度管理。在本次实践中,采用 TFS PaaS 的方式,通过 TFS 触发 PaaS,生成应用镜像,将应用镜像推送至镜像仓库,最后部署到性能测试环境中。
应用发布方面,通过编写 yaml 文件来配置应用的 CPU、内存等资源使用数量、应用实例数、应用镜像名称和版本等信息,最后利用 yaml 文件将应用发布到 PaaS 平台。
测试数据方面,根据数据独立性原则,需要导入与功能测试相互独立的测试数据,数据来源可以是脱敏后的生产数据或测试人员通过批量制造的非敏感数据。
以下是云下、云上环境的对比:
二、性能测试策略
性能需求分析方面,①由于微服务是实现DevOps的重要架构,本次实践主要针对微服务模式,通过分析系统架构,明确调用链条、调用关系,找出容易发生故障的点位。②分析上述点位的交易,挑选具备访问量大、算法复杂、调用消耗资源等特点的交易。③根据挑选的交易,分析访问量、业务比例、用户数等信息进行性能建模,明确每支交易的TPS、响应时间、资源使用率等指标。
场景设计方面,主要对常规场景及异常场景进行测试。常规场景包含单交易基准、单交易负载、混合压力、疲劳测试。异常场景包含高可用测试、重连测试、限流测试。
在微服务模式下,需要更加关注异常测试,例如,当一个应用服务器的某个pod失去连接后,其上的流量是否能发送到另外一个pod上,重新启动pod,流量是否均匀分配到服务器上。当应用流量激增时,是否可以通过扩容解决流量问题。
三、性能调优
性能调优是一个不断优化的过程,借助 Jmeter、dynatrace 等工具实现性能指标自动化收集及初步分析,形成调优闭环,通过问题定位-性能优化-性能持续集成的闭环操作,不断提升交付质量。
图1:调优闭环
常见的性能问题及调优方案如下:
本文主要介绍了DevOps模式下性能测试的实践经验,然而在项目实施过程中,如何解决相对较长的性能测试周期与快速迭代之间的矛盾,需要测试人员持续探索和关注。相信随着人工智能的发展,会有越来越多的新技术应用于性能自动化,提高性能测试效率,将性能测试持续集成到流水线中,实现性能测试的快速迭代。
作者介绍:冯娜 中国农业银行高级测试工程师 从事运营、营销等领域的测试工作。
2020年11月27日,由云计算开源联盟指导,由高效运维社区和开放运维联盟联合主办的 2020 GOPS 全球运维大会 · 上海站上,隆重发布了 DevOps 标准持续交付部分第九批评估结果,中国农业银行手机存款贷款模块顺利通过由中国信通院开展的《研发运营一体化(DevOps)能力成熟度持续交付3级评估。DevOps 标准共分 5 级,持续交付部分如果能达到 3 级已经是国内领先水准,这代表着中国农业银行在参评项目的持续交付能力达到国内领先水平。这是中国农业银行在 6 月 19 日同时 5 个项目通过持续交付标准评估之后通过的第 6 个项目。