资讯专栏INFORMATION COLUMN

论性能测试

qpal / 3330人阅读

摘要:吞吐量一般结合业务需求而定服务器资源占用占用率内存使用率命中率篇是一种预测系统行为和性能的负载测试工具。负载测试与压力测试都是性能测试。通过平台接口可进行合理的性能测试。有利于测试人员及时定位问题。

Part 1:性能测试

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

A. 类别

性能测试包括负载测试、压力测试、基准测试等。

i. 负载测试

通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。

ii. 压力测试

也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等

iii. 基准测试

Part 2:性能测试目的

验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,对代码进行优化,最后起到优化系统的目的

i. 系统调优

ii. 识别系统中的弱点

iii. 评估系统的能力

iv. 验证系统的稳定性、可靠性

Part 3:性能测试流程

制定性能测试目标à选择性能测试工具à设计性能测试à执行性能测试脚本à监控分析系统à性能调优

A. 目标

例如:满足3000用户在线、240个用户同时访问,访问响应时间不超过2秒,系统资源使用率不超过30%

B. 工具

可选LR、JMeter、Locust等主流测试工具,这篇文章主要介绍LR和JMeter相关

C. 设计

测试脚本开发、负载生成规则、场景设计及监控方式、测试环境的搭建

D. 执行

根据需要进行基准测试、负载测试、压力测试等,搜集结果

E. 监控

监控各个节点的运行情况

F. 分析

对数据进行分析,需要众多人员共同协作,罩住数据背后的问题,确定性能瓶颈

G. 调优

确定以后,进行软硬件调优,然后重复之前的步骤,找到最合适的优化方案

H. 性能指标

i. 响应时间

针对页面操作,用户感官满意响应时间<2s,可以接受响应时间2~5s,如果响应时间>5s用户将无法接受。

针对内部调用的接口响应时间需要更快,具体与接口种类相关。

ii. 吞吐量

一般结合业务需求而定

iii. 服务器资源占用

CPU占用率

内存使用率

Cache命中率

Part 4:LR篇

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相关、吞吐率、并发数等。

Part 5:JmETER篇

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的版本,性能需求维护,性能脚本与结果数据的统一管理,增加服务器的运行情况监视,从需求制定到结果分析在测试平台一站解决,简化了性能测试工作,将性能测试变成可视可控可管理状态。

Part 6:总结

1、性能测试是什么?

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试与压力测试都是性能测试。负载测试主要是通过各种工作负载下系统的性能。随着负载的变化,来确定系统的性能变化。压力测试主要是确定的系统所能承受的极限。互联网金融客户群体相当庞大,所以对于我们来说系统的性能尤为重要。

2、性能测试做什么?

性能测试是通过使用各种工具,来模拟各种可控与不可控的请求。通过模拟生产运行的业务以及使用场景的组合形成多种性能测试点,测试系统的性能是否能够满足生产性能要求。在特定条件下运行验证系统承受能力。通过各项性能指标来判断系统是否达到生产需求,及时对系统做出风险评估。发现问题、解决问题,回馈用户高质量的体验。

3、性能测试做怎么做?

我们系统的性能测试利用市面上测试工具进行性能测试。这种测试方法可以捕获部分问题,但很难模拟业务场景组合。而且测试工具五花八门,不利于搜集测试性能结果。我们现在进行的性能测试开发,利用统一的性能测试工具Jmeter做为核心。利用influxDB数据库做数据收集,Grafana做性能数据展示平台。搭建完整的性能测试平台,开放统一的性能测试通道,建立通一的性能指标收集平台。平台根据我们自己的业务要求建立性能测试计划,推出不同的业务模板。通过平台接口可进行合理的性能测试。我们可根据不同业务展示不同的性能图形。有利于测试人员及时定位问题。

来源:宜信技术学院

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/8896.html

相关文章

  • 初级PHPer如何点亮技能树

    摘要:此篇文章并未如何教你怎么面试的时候吹逼,而是给一点点建议,如何更聪明地达到目的。据不完全统计,基本都是做管理后台改。不要太沉溺和纠结于技术,把重心移到业务能力上,踏踏实实做事。 前言   对于很多刚毕业或者大四的同学,都会有个困惑,我如何学PHP,为什么知识会那么杂,然后实习中公司大概需要哪些要求。此篇文章并未如何教你怎么面试的时候吹逼,而是给一点点建议,如何更聪明地达到目的。 实习可...

    eternalshallow 评论0 收藏0
  • 从《红色警戒:复兴》MongoDB设计模式的重要性

    摘要:继而取名红色警戒复兴。在经过了将近一年的蛰伏后,作为红色警戒复兴的联合创始人,终于有幸在今年月份见证他的第一次公开亮相。至此,我们初步断定,症结点在深层嵌套文档导致的数据多层寻址引发的。 前言 在2016年5月份的某一天,我和菠萝同学怀着对昔日《红警95》的缅怀之情,相约脱胎于开源项目OpenRA,来自制Server、Web、个人系统等,重现《红警95》的昔日光芒。继而取名《红色警戒:...

    pf_miles 评论0 收藏0
  • 互联网项目的驱动力

    摘要:在这个过程中,带动整体项目和产品前进的驱动力也是不同的。这条主线对整体项目推进产生的影响称之为驱动力。在互联网的项目中,项目的人员配比基本一个萝卜一个坑,专人负责特定的事项和模块。 本文由作者周巧芬授权网易云社区发布。 互联网产品从整体上来讲可以划分很多类型,TO B或者TO C,业务型产品(考拉、严选)或者技术型产品(网易云系列),以及用户型产品(网易云音乐等)。作为互联网产品的项目...

    mist14 评论0 收藏0
  • 各类BI工具的“大数据”特性

    摘要:的大数据策略目前,适用的大数据生态系统连接包括和支持和的多维分析数据库可实时连接到数据源,或将其调入内存。面向业务用户的大数据自助式可视化。应对的是一些需要实施展现结果,比如银行交易风险的流水分析,直接对接,,等大数据平台。 市面上的BI工具形形色色,功能性能包装得十分亮丽,但实际应用中我们往往更关注的是朴实的技术特性和解决方案。对于大数据,未来的应用趋势不可抵挡,很多企业也正存在大数...

    AaronYuan 评论0 收藏0
  • 华为云的气质与修养

    摘要:华为的这种底气正来自于其技术能力的塑造和强健。而华为云正是遗传了华为的这种气质,才能在成立仅一年多的时间里实现飞跃式的发展。华为云不仅继承了华为的气质,还将这种气质不断发扬光大。三十功名尘与土,一朝入云胆气生!从1987年2万元起家,到2017年销售收入突破6000亿元,华为三十年的奋斗与拼搏、积累与沉淀,终于厚积薄发。2017年,华为云正式入场,它要像AWS那样开创一个新的产业。华为云的气...

    notebin 评论0 收藏0

发表评论

0条评论

qpal

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<