模拟性能周期性检测,这5个步骤缺一不可
一、背景 随着各类应用快速和多样化的发展,产品迭代更换频繁,导致业务需求旺盛,开发测试任务源源不断。项目团队通过采取测试分层策略、测试数据治理、自动化回归、性能测试等一系列举措确保系统的安全生产。然而,通过调研发现,投产运行后的缺陷90%以上为性能问题,为我们敲响了性能警钟。为此,项目团队探索打破以项目维度开展性能测试的壁垒,按系统维度进行性能周期性检测,尽可能模拟系统生产运行模式,检验特定情况下是否会有系统级性能问题,降低系统投产的性能风险。二、探索实践
性能周期性检测实践从性能测试环境建设、性能测试范围选取、测试脚本集准备、性能测试场景设置、性能测试结果对比分析及调优几个维度逐层深入,剖析性能检测全流程的策略制定及重点要点。
1.三举措建设性能环境
对于测试环境复杂,依赖大量外围环境的系统,我们需要重点关注外围系统环境的可用性:
一是按照独立性、挡板化、分批建设的原则,将多个外围系统按交易优先级排序,在项目实施周期内,紧急重要的优先建设;另外,可以通过实现挡板中心,解决外围环境不稳定、失效等问题。
二是深入调研各个外围系统并开展分析评估,对于现有功能常备环境可承受超柜峰值TPS性能压力的系统采用复用现有功能测试环境;对于有性能压力的系统采用新建性能测试环境;达到资源利用最大化。
三是建设关联系统的可用性最小案例集,通过自动化执行的方式定期检测关联系统的环境可用性,确保各关联环境能够满足常态化的测试需要。
2.三因素逐步覆盖性能测试范围
随着系统需纳入性能检测范围交易的增多,我们考虑以下三方面因素选定周期性交易,按照“重点先行、逐步覆盖”的原则开展性能检测工作。
一是周期检测交易按日均交易量进行排序打分;
二是对于以往出现生产性能异常涉及的交易,加入检测清单,通过分析与当期检测内交易的关联关系,确定是否纳入当期检测;
三是关注投产相关的交易,纳入周期批次测试范围。
3.三方法稳步确保测试脚本质量
开展性能检测测试需要编写高质量的测试脚本,降低周期内调试脚本的工作量。然而,测试数据稳定性不足、数据异常时定位问题困难等一直是性能测试的一大顽疾,因此,测试数据的参数化是准备性能检测脚本集需要关注的重点。我们提炼了以下三种方法确保检测测试脚本的质量:
一是对于查询类交易,采用固定数据的方式;
二是对于必须使用唯一数据的交易,需准备数据脚本,并建立与性能脚本的映射关系;
三是对于数据消耗型交易,编写特定脚本对数据进行恢复。
4.一模型自动设置性能测试场景
由于性能检测实行分批次逐步覆盖待测交易集,且每批次待测交易集会随实际投产情况动态变化,因此需要按照交易量占比为当前批次的所测交易配置混合场景的交易比例。当前我们实现了“一种基于交易分布建模的性能测试场景自动设置方法”。
5.四维度对比分析性能测试结果
以往性能测试的结果分析都是基于本批次执行结果开展的横向分析,然而对于性能检测测试,需要将本批次的执行结果与上一次或前几次进行纵向比较,主要从以下四个维度开展分析:
一是当前批次新增交易是否存在性能问题;
二是当前批次新增交易对原交易集的响应时间是否有影响;
三是当前批次交易集对应用服务器资源使用率(包括CPU、内存、磁盘、网络等)是否有影响;
四是当前批次交易集对数据库服务器资源使用率(包括CPU、内存、锁资源等)是否有影响。
三、应用成效
结合实践经验,我们将适用场景分为四类:
①重要对客系统按周期性窗口投产,可以将检测工作作为基础背景,模拟新增或优化类变更对系统性能的影响。
②系统基础软件升级等技改类项目。
③架构改造类项目。
④协助生产事件的快速定位与复现,为项目团队提供技术支持与决策分析。
四、后续展望
目前,性能周期性检测工作仍存在环境准备时间长、手工干预多、管理有待优化等问题。在总结经验、调查分析、创新思路的基础上,主要目标如下:
(一)按“分类管理、研测结合、协同共享”的思路,建立分级、分类的差异化管理流程。一是对于多个项目同时开展性能测试导致互相干扰的情况,测试环境可按时间片管理,归口调度。二是优先开展提供基础服务的平台类系统及重要中后台系统的性能测试环境建设,识别全链条测试的必要性,开展有针对性的性能测试。三是建立外围环境登记申请机制,实现资源共享,提高资源使用效率。
(二)加强自动化研究,提高性能检测效率。一是充分发挥Xmeter工具的强大功能,实现脚本的轻便化管理。二是通过交易自动配比模型的落地,降低目前手工配消耗的工作量,提高整个性能周期性检测工作效率。三是研究性能自动化对比分析模型,实现多期周期性检测结果的自动对比分析,为调整测试策略提供依据,保证周期性检测测试工作的科学性、有效性。
支持分享
页:
[1]