性能测试是系统测试的重要组成部分,对保障生产安全起到了重要作用。如何更好地提高性能测试质量,更好地将性能测试中的经验向开发、测试、生产输出,最大程度避免生产性能异常的发生?本文主要从参数配置、缺陷分析、性能测试平台优化、全链路测试四个方面进行了思考,并给出建议。
一、明确性能参数配置要求
测试环境中常用基础软件的配置参数,往往使用给定模板中的默认值,测试人员基本不会调整,尤其与性能测试相关的参数,测试人员很难区分,参数配置方式也没有明确的要求。金融行业生产上出现的部分性能异常问题,常常与软件的参数配置有直接或间接的关系,如WAS中连接数配置不合理、Redis超时时间设置过长,导致系统无法登录、连接被拒绝等异常问题。
我们建议从应用级基础软件入手,向系统级软件延伸,通过不断收集各软件的基础配置标准参数,重点分析参数中影响系统性能的关键参数(尤其是生产上出过问题的参数),给出不同场景下的参数取值建议。一是逐步将重点软件中的性能关键参数,依据测试、生产经验,汇总形成软件及参数配置建议书,并编制指导手册,提供给开发测试部门参考。二是在测试流程的测试准出环节,形成关键参数配置要求,并在测试报告中体现。三是建立参数标准推荐值定期更新机制,避免更新滞后带来的错误配置问题,同时测试环境中的参数调整方式也可为投产环节参数配置提供参考。
二、分析提炼典型性能测试缺陷和生产问题
性能测试中发现的缺陷,经统计主要由数据库逻辑、参数配置、日志级别配置等方面的原因导致。生产上出现的性能异常问题,部分是由于特殊的业务场景触发,而这些特殊的业务场景,在测试环境,很难作为常规的测试场景设计,且问题很难被发现。测试中发现的性能缺陷和生产中发现的性能异常问题,其原因往往存在很多共性,对典型问题分析提炼,指导后续测试,可有效避免类似问题的发生。
我们建议开展生产和测试中性能问题的分析与总结,形成知识库。主要从三方面开展工作,一是为了归纳性能测试中的缺陷,有效规避性能问题,应该定期总结分析性能测试报告中出现的缺陷问题,对缺陷进行分级分类,并逐一分析,对于常见的共性问题,详细分析原因,纳入常见性能缺陷知识库,为开发测试部门提供合理化的建议。二是从生产部门获取性能问题与事件,逐个分析生产上出现的性能问题,重点总结问题复现的场景。针对重要系统,设计可以复现问题的正常或异常测试场景,纳入生产性能问题场景库,作为重要系统性能测试的场景设计参考,供测试人员在性能测试中选择使用。三是梳理性能测试和生产性能问题的定位和处置措施,纳入性能问题解决方法库,供开发、测试、生产人员共享,提升性能问题的解决能力。
三、优化统一性能测试平台
每家企业都会使用多种多样的性能测试工具,分散的测试工具管理方式具有使用方便,灵活性高等特点,但对于具备一定规模的企业来说,集中管理测试工具会更加规范化,降低整体测试成本,测试工具的使用、管理、改造、推广也会具备成熟的基础条件。
为了更好地为性能测试服务,我们建议企业的性能测试工具趋于收敛,选取1-2款优势互补的性能测试工具,工具需要具备压测、监控、分析等全面的功能,并不断优化,从而提升性能测试平台使用的效率和便捷性。对于工具的优化方向主要关注以下四个方面,一是完善性能测试压测、监控、分析一体化,性能压测时可以实现实时分析与告警,丰富性能监控指标,可以同时监控系统级和应用级的性能指标。二是随着云上应用不断增多,扩展平台支持的应用类型,实现云上、云下监控分析统一化,对于收集监控数据的代理服务器,提高自动部署的能力。三是优化平台的案例及相关管理功能,通过案例标签化,案例数据分离管理等方式,提高性能测试案例的规范化管理水平,逐步积累可复用的性能测试案例。四是通过定时调起,自动触发等方式,实现平台自动化性能测试,可按照测试实际需要自动实施性能测试。
四、探索全链路性能测试
许多系统独立测试时,均无法发现问题。生产上有些性能问题,一部分是由于系统间的关联关系测试不充分导致。在性能测试环境中,由于环境不完整,测试链路相互隔离,很难模拟生产上的真实场景,尤其是在系统间的关联关系比较复杂的情况下,较难实施全链路性能测试。
我们建议从企业典型重点系统的关联关系入手,以重点系统为中心向外发散,理清系统间的接口调用关系,逐步梳理实施全链路性能测试的最小集环境,不断总结系统间的强关联关系,形成重点系统的性能测试环境关联视图。借助测试环境关联视图,建立企业常备性能测试环境,并借助性能测试平台的案例管理和自动执行功能,实施全链路自动化测试。
性能测试反哺软件开发、测试,是一个长期、反复的过程,需要在性能测试中不断积累相关的经验与技巧,在生产上不断应用实践,最终使性能测试可以真正发现严重问题,真正提供有效建议,真正指导投产参数配置,最大程度避免生产性能异常,更好地服务于生产稳定运行。