性能测试是经过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。java
性能测试包括负载测试、压力测试、基准测试等。数据库
i. 负载测试服务器
经过测试系统在资源超负荷状况下的表现,以发现设计上的错误或验证系统的负载能力。网络
ii. 压力测试session
也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等多线程
iii. 基准测试并发
验证软件系统是否可以达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,对代码进行优化,最后起到优化系统的目的分布式
i. 系统调优工具
ii. 识别系统中的弱点性能
iii. 评估系统的能力
iv. 验证系统的稳定性、可靠性
制定性能测试目标à选择性能测试工具à设计性能测试à执行性能测试脚本à监控分析系统à性能调优
A. 目标
例如:知足3000用户在线、240个用户同时访问,访问响应时间不超过2秒,系统资源使用率不超过30%
B. 工具
可选LR、JMeter、Locust等主流测试工具,这篇文章主要介绍LR和JMeter相关
C. 设计
测试脚本开发、负载生成规则、场景设计及监控方式、测试环境的搭建
D. 执行
根据须要进行基准测试、负载测试、压力测试等,搜集结果
E. 监控
监控各个节点的运行状况
F. 分析
对数据进行分析,须要众多人员共同协做,罩住数据背后的问题,肯定性能瓶颈
G. 调优
肯定之后,进行软硬件调优,而后重复以前的步骤,找到最合适的优化方案
H. 性能指标
i. 响应时间
针对页面操做,用户感官满意响应时间<2s,能够接受响应时间2~5s,若是响应时间>5s用户将没法接受。
针对内部调用的接口响应时间须要更快,具体与接口种类相关。
ii. 吞吐量
通常结合业务需求而定
iii. 服务器资源占用
HPLoadRunner 是一种预测系统行为和性能的负载测试工具。经过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题
A. 轻松建立虚拟用户
i. 使用LoadRunner 的Virtual User Generator,您能很简便地创立起系统负载。该引擎可以生成虚拟用户,以虚拟用户的方式模拟真实用户的业务操做行为。
B. 建立真实负载
i. Virtual users 创建起后,您须要设定您的负载方案,业务流程组合和虚拟用户数量。用LoadRunner 的Controller,您能很快组织起多用户的测试方案。
C. 录制脚本
i. 参数化
参数化可让脚本更好的适应环境变化,提升脚本适应能力
场景运行时,每一个用户使用不一样参数,提升真实性
ii. 关联与session
对于脚本,不少时候,咱们处理数据的时候,是须要对服务端返回的数据进行解析,而服务端返回的数据若是每次都是变化的话,每次咱们都是须要动态获取,这个时候就须要关联。简单来讲,就是处理服务端返回的动态数据
iii. 建立集合点
集合点就是为了让Vuser集合,而后同时作某个操做,只要在相应的请求前设定有意义的集合点lr_rendezvous便可
D. 执行监控
i. 在启动性能测试以后,系统会按照设定的场景产生压力。在执行过程当中,须要观察脚本执行的状况,被测试系统的性能指标状况。LR监控来查看这些信息
E. 分析报表
i. 一次性能测试执行完成,会建立各类性能分析报表,包括cpu相关、吞吐率、并发数等。
A. jmeter简介
Apache jmeter 是一个100%的纯java桌面应用,用于压力测试和性能测量。它最初被设计用于Web应用测试但后来扩展到其余测试领域。Apache jmeter 能够用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它能够用于对服务器,网络或对象模拟繁重的负载来测试它们的强度或分析不一样压力类型下的总体性能。
优势:开源,轻量级,免安装,跨平台。可支持二次开发和拓展。
缺点:性能总体流程缺失,报告展现不够友好(逐渐被插件弥补)。
B. jmeter进行性能测试原理
jmeter脚本运行原理:jmeter核心代码封装多种页面请求类型和多种API请求类型,提供GUI页面来填充参数,生成可运行的xml脚本文件,jmeter能对脚本文件进行解析,并调用相应协议。这种方式方便脚本的编写,易上手,对代码要求较低,只须要掌握相应请求协议相关参数便可,且方便调试。插拔式的取样器支持无限制扩充测试能力,对于不支持的新协议,能够进行二次开发进行扩展。
jmeter性能运行原理:Jmeter性能原理与loadRunner相似。采用多线程来模拟多用户,经过对线程的开启运行的控制来达到实际用户增加的复杂需求。配置(可扩展)多种计时器,定时器。来实现用户集中某时间刻访问,即集合点概念,或着采起等待时间定时器模拟用户操做时间等待。实现更贴近于实际访问状况的性能测试方式,使性能结果数据更真实。
jmeter数据采集原理:jmeter提供对线程的监听,能将运行结果进行处理,如传递给GUI进行数据展现,和曲线生成,记录生成日志文件能够供非gui方式运行,提供运行完成后的性能数据分析。能够实时发送给时序数据库,提供监控使用,能够动态监控查看。
C. jmeter性能测试步骤(前提:选型使用jmeter做为测试工具)
性能需求分析肯定:先肯定这次性能测试目标,需求,收集性能需求参数,肯定性能测试的测试环境状况与经过与否的判断条件。肯定测试各类场景。
脚本分析编写并调试:根据前期肯定的各类场景进行脚本编写,设置请求,定时器模拟集合点,等待时间,设置为单线程运行脚本,测试脚本是否按预期执行,调试使脚本可以按预期执行。
搭建好测试环境:根据需求搭建符合要求的测试环境,提早作好可以监控服务器运行情况的方式(cpu,内存,网络,DB等),确保测试环境被测系统,运行参数配置正确,运行无误。
执行性能测试,运行性能脚本:肯定发送请求的用户数,执行测试的压力机是否可以支持发送这些并发数(根据压力机cpu与内存肯定)若是达不到可使用分布式压力机进行压测,肯定测试机与测试环境网络互通且网络足够支撑压力测试运行。肯定完成后便可根据需求肯定脚本运行参数,使用NO-GUI方式进行性能脚本执行。
对性能测试数据进行分析:运行完成后收集性能测试数据,对测试数据进行分析,能够导入到jmeter内监听器进行数据处理,或着采用其余处理方式,根据数据来验证需求是否知足,确认这次性能测试是否经过。
D. 基于jmeter性能测试平台
思路:统一管理jmeter的版本,性能需求维护,性能脚本与结果数据的统一管理,增长服务器的运行状况监视,从需求制定到结果分析在测试平台一站解决,简化了性能测试工做,将性能测试变成可视可控可管理状态。
一、性能测试是什么?
性能测试是经过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试与压力测试都是性能测试。负载测试主要是经过各类工做负载下系统的性能。随着负载的变化,来肯定系统的性能变化。压力测试主要是肯定的系统所能承受的极限。互联网金融客户群体至关庞大,因此对于咱们来讲系统的性能尤其重要。
二、性能测试作什么?
性能测试是经过使用各类工具,来模拟各类可控与不可控的请求。经过模拟生产运行的业务以及使用场景的组合造成多种性能测试点,测试系统的性能是否可以知足生产性能要求。在特定条件下运行验证系统承受能力。经过各项性能指标来判断系统是否达到生产需求,及时对系统作出风险评估。发现问题、解决问题,回馈用户高质量的体验。
三、性能测试作怎么作?
咱们系统的性能测试利用市面上测试工具进行性能测试。这种测试方法能够捕获部分问题,但很难模拟业务场景组合。并且测试工具五花八门,不利于搜集测试性能结果。咱们如今进行的性能测试开发,利用统一的性能测试工具Jmeter作为核心。利用influxDB数据库作数据收集,Grafana作性能数据展现平台。搭建完整的性能测试平台,开放统一的性能测试通道,创建通一的性能指标收集平台。平台根据咱们本身的业务要求创建性能测试计划,推出不一样的业务模板。经过平台接口可进行合理的性能测试。咱们可根据不一样业务展现不一样的性能图形。有利于测试人员及时定位问题。