jmeter性能测试全过程review

author author     2022-09-06     350

关键词:

前情提要:1.会一点点jmeter的脚本录制和编辑,完全没实际操作过压测,review一下第一次实践。

     2.压测使用的是HTTP请求,且未加密;

     3.压测的10个接口没有数据关联和数据要求,就是数据随便输入随便设置;

     4.review会省略一些基本知识的解释,比如jmeter的断言/参数化/内置参数、linux基本操作、为什么监控这些数据、基础的计算机网络知识等等

一、.接到任务,拿到道具:

①接口文档

②压测地址

③压测客户机云地址(因为自用的PC机器性能不佳,所以使用的腾讯云部署上面的机器)

④提测邮件/需求

二、.分析提测需求:

  性能指标如下,其实很奇怪啊,如果接口响应时间5s,用户早就流失了吧?

  监控的指标需要有:(日活跃用于设置并发数量,理论30w日活的休闲游戏,单个接口并发200-300线程的数据需要达到对应标准TPS>500,响应时间<1s,CPU消耗80%,内存消耗<80%,不同项目的需求会有出入),TPS,响应时间,服务器CPU占用,服务器Memory占用

技术分享

  准备测试工具:jmeter(因为只会这个),xshell(用于在腾讯云的跑脚本的ubuntu机器上执行脚本,登陆的时候还要用Authenticator来获取密码)

三、针对接口文档,编写测试脚本

  1.接口文档如下(这里只po一个接口):

    技术分享

 

  2.针对接口文档,编写jmeter脚本

  步骤如下:添加线程组--在线程组上添加samples-http请求-编辑http请求的数据-针对http请求添加Beanshell断言+响应断言(这里提供两种方式断言,任选一种即可)-针对线程组增加监听器-察看结果数+聚合报告(这里提供两种报告,前者用来查看报错信息,后者用来查看压测结果)-设置并发数据

    添加线程组:

 技术分享

    添加HTTP请求,根据接口文档编辑请求内容:

技术分享

技术分享

    添加Beanshell断言和响应断言(由于接口比较简单,所以任选其一即可,建议选择响应断言,比较简单方便):

    技术分享

      编辑beanshell断言内容:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
String resp=new String(ResponseData);
if(resp.equals("")||resp==null){
Failure=true;
FailureMessage="resp是空的";
}

else if(resp.startsWith("<")){
Failure=true;
FailureMessage="resp以<开头"+resp;
}else{
JSONObject jsonObject=JSON.parseObject(resp);
int ret=jsonObject.getIntValue("ret");
int errorCode=jsonObject.getIntValue("error_code");
String msg = jsonObject.getString("msg");
//long serverTime=jsonObject.getString("server_time");
Object data = "";
if(jsonObject.containsKey("data")){
Object dataObject=jsonObject.get("data");
if(dataObject instanceof JSONObject){
data= jsonObject.getJSONObject("data");
}else if(dataObject instanceof JSONArray){
data=jsonObject.getJSONArray("data");
}
}else{
Failure=true;
FailureMessage="返回结果中没有data数据";
}
//String userId=data.getString("userId");
// 对data的内容来get值
//String openId=data.getString("openId");
//String avatar=data.getString("avatar");
//String nickname=data.getString("nickname");
//如果要看data传回的内容不是空的,怎么判断
if((ret==0)&&(errorCode==0)&&(msg.equals(""))/*&&(serverTime!=0)*/&&(data.toString()!="")){
Failure=false;
}else if(ret==1){
Failure=true;
FailureMessage="ret返回为1";
}else{
Failure=true;
FailureMessage="msg、data返回有误";
}
}

    注:这里使用的fastJson来解析json返回,所以需要事先导入fastjson的jar包,导入jar包的步骤很简单,就是把jar包放入jmeter安装路径的lib目录下

 

      添加响应断言,编辑响应断言:

    技术分享

技术分享

注:这里的响应断言和上面的beanshell实现的是同一个东西,响应断言会更简单,不用自己BBBBB写一大堆。

这里写beanshell主要是因为,当前项目没有用到,但是事实上其他项目会用的比较多,所以想练练_(:з」∠)_。

有的项目使用加密的数据包,我们在请求的时候,需要对数据加密;在断言的时候,要对数据解密;有的项目验证接口之间有数据关联,就导致我们前后的数据需要做关联,用beanshell语句来连接(beanshell preProcessor/beanshell postProcessor/beanshell断言等等)

 

       添加察看结果数、聚合报告

技术分享

技术分享

        注:这里的察看结果数和聚合报告,需要存两个不同的文件,因为存储方式不同,存相同路径的话,会都覆盖成聚合报告

 

 

 

        设置并发数量,并发200线程,持续5min压测

          技术分享

 

 

四、执行压测

  如果自己的PC性能OK的,直接自己windows跑了。

  如果自己PC不行的,要在linux客户机上跑的,就xshell连接上客户机,然后进入jmeter的bin目录,上传测试脚本,输入语句执行。

    客户机操作:1.安装jdk  2.上传jmeter(脚本有用jar包的,要在lib里面存入jar包)3.进入jmeter的目录,执行脚本

          cd /data/test/apache-jmeter-3.1/bin

          rz -e 上传 test.jmx文件

          java -jar ApacheJMeter.jar -n -t  压测脚本.jmx -l 结果文件.jtl 

          sz 结果文件.jtl    导出结果文件到本地

 

五、 分析结果

  1.分析聚合报告:

      前面编辑脚本:并发200线程,持续5分钟----得到结果:请求总数142w,平均响应时间47ms,错误率0.00%,TPS 4105

      响应时间47ms,响应很快,TPS 4105事务处理能力优越,错误率低于0.01%。说明脚本执行情况很好,此时需要查看服务器的CPU和memory使用情况,确定是否继续加压。

  技术分享

      这里服务器性能监控,没有需要自己去捣鼓,直接找运维要zabbix账号上去瞄瞄就可以了,主要查看CPU load,CPU使用情况,memory使用情况。如果发现CPU或者聚合报告的内容异常,可以查看network traffic里面的数据流量( 每秒流量=每秒请求数*请求大小)。

 

    这里看到,CPU利用率max值是80%,CPU负载的max值是7(意思是当前每核处理的请求数量,服务器是4核的,数值8+就算满载)。

    加压看看TPS有没有增加(这个时候CPU接近满载,加压的话过载的可能性很高)。这里加压到300并发看了下,TPS是差不多了,错误率为0,就不贴图了。

 

    CPU接近满载,并发数增加的情况下,TPS稳定,结果基本可以确定了。

    这里的memory占用就不贴图了,基本维持在400mb。

 

      技术分享

 

      技术分享

 

 六、出具报告

    提测内容是看30w日活的时候的各个数据,这里策略是加压200时查看各项数据,加压200,CPU占用80%+,memory占用<80%,TPS>500,响应时间<5s,测试通过。












































jmeter性能测试基本过程及示例

jmeter为性能测试提供了一下特色:jmeter可以对测试静态资源(例如js、html等)以及动态资源(例如php、jsp、ajax等等)进行性能测试jmeter可以挖掘出系统最大能处理的并发用户数jmeter提供了一系列各种形式的性能分析报告使用jmete... 查看详情

性能测试的过程(jmeter)

 一.web性能测试的准备工作1.项目背景访问地址访问环境:windows2.需求并发登陆的性能(要求多少个用户登录)3.场景60秒内运行100个线程线程在20、50、100并发下的表现4.监控成功率、响应时间、标准差、cpu、IO资源监控需在lin... 查看详情

jmeter性能测试

JMeter1.JMeter测试1.1性能测试2.测试步骤2.1JMeter做“代理”进行数据抓包2.2JMeter测试纯java编写负载功能测试和性能测试开源工具软件JMeter基本原理:建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过... 查看详情

jmeter高级教程:性能测试与自动化云监控

...xff0c;但在执行性能测试的过程中往往会遇到一些问题。#01JMeter项目紧急,不具备独立的性能测试环境。功能测试和性能测试在一套环境同时执行测试时,其测试过程和测试结果会相互影响,导致结果不够客观。如果我... 查看详情

基于jmeter和jenkins搭建性能测试框架

...有:触发测试–>部署测试脚本–>部署被测系统–>Jmeter打压–>被测系统日志分析,5个阶段。 体现在Jenkins上,就是下面这个jenkins的Mult 查看详情

jmeter性能测试术语

1.5术语及缩写词       测试时间:一轮测试从开始到结束所使用的时间       并发线程数:测试时同时访问被测系统的线程数。注意,由于测试过程中,每个线程都是以尽可能快... 查看详情

高并发性能测试

...票接口,实现同时发起10000并发的用户来抢购,就可以用Jmeter来模拟并发1.几个注意事项: a.需要搭建jmeter分布式测试环境,搭建步骤非常简单,可参考官网:http://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html b... 查看详情

性能测试工具(jmeter运行优化)

参考技术A---最近用jmeter做了一次3万并发用户的性能测试,测试过程中对jmeter工具本身进行了几次优化,总计一下,希望对使用jmeter做性能测试的各位有一些帮助。---主要是对日志内容和java内存的使用进行了一些优化,避免施压... 查看详情

jmeter性能测试-多维度的图形化html报告

在JMeter3.0之前,官方只提供在工具的UI上对测试结果部分维度的图形化展示,这对我带来了两方面的困扰:在实际使用中,在平台中集成JMeter后需要页面展示TPS曲线,平均响应时间曲线等图表时,需要我们手动操刀摆弄如Hightchart... 查看详情

一个使用jmeter做接口性能测试的实战案例

1安装并配置JmeterJmeter的安装不在这里阐述,安装步骤非常简单。直接进入主题1.1数据库连接配置由于测试过程需要调用数据库获取响应部署数据,因此需要先建立与数据库的连接。如果不涉及数据操作,可以跳过此步骤。步骤1... 查看详情

jmeter术语

 1.负载:模拟业务请求操作对服务器造成压力的过程2.性能测试(performancetesting):模拟用户负载来测试系统在负载情况下,系统的响应时间、吞吐量等指标是否满足性能要求3.负载测试(loadtesting):在一定软硬件环境下,... 查看详情

jmeter性能测试-gc相关

1.GC相关HotSpot虚拟机将其物理上划分为两个–新生代(younggeneration)和老年代(oldgeneration)。新生代(Younggeneration): 绝大多数最新被创建的对象会被分配到这里,由于大部分对象在创建后会很快变得不可到达,所以很多对... 查看详情

性能测试jmeter扩展学习-添加自定义函数(代码片段)

  我们在使用jmeter的时候有时候会碰到jmeter现有插件或功能也无法支持的场景,比如前端加密,此时我们就需要自己手动编写函数并导入了,下面就是手动修改并导入的过程。  首先我们需要下载jmeter源码压缩包下来,我这... 查看详情

jmeter-性能测试

JMeter-性能测试 参考文档:https://jmeter.apache.org/usermanual/boss.html一、问题1、预计的平均用户数是多少(正常负载)?2、预计的高峰用户数是多少?3、考虑到这负载测试可能会使一台或多台服务器崩溃,什么时候是对我们的应... 查看详情

性能测试入门-jmeter工具与监控全方位打造

...7性能测试需求分析1-8性能测试工具比对第2章测试工具篇-JMeter整体介绍jmeter的组成及每一个模块的作用。掌握jmeter各种组件,丰富性能测试脚本,完善用户场景。使用jmeter进行逻辑分支控制。用Jmeter工具对数据进行准确性判断。... 查看详情

jmeter怎么做接口测试/性能测试/压力测试(步骤)

目录JMeter接⼝测试流程详解1、Jmeter简介2、Jmeter安装3、设置Jmeter语⾔为中⽂环境4、Jmeter主要元件5、Jmeter元件的作⽤域和执⾏顺序6、Jmeter进⾏接⼝测试流程7、Jmeter进⾏接⼝测试流程步骤详解8、总结JMeter性能测试的步骤?第... 查看详情

jmeter怎么做接口测试/性能测试/压力测试(步骤)

目录JMeter接⼝测试流程详解1、Jmeter简介2、Jmeter安装3、设置Jmeter语⾔为中⽂环境4、Jmeter主要元件5、Jmeter元件的作⽤域和执⾏顺序6、Jmeter进⾏接⼝测试流程7、Jmeter进⾏接⼝测试流程步骤详解8、总结JMeter性能测试的步骤?第... 查看详情

jmeter怎么做接口测试/性能测试/压力测试(步骤)

目录JMeter接⼝测试流程详解1、Jmeter简介2、Jmeter安装3、设置Jmeter语⾔为中⽂环境4、Jmeter主要元件5、Jmeter元件的作⽤域和执⾏顺序6、Jmeter进⾏接⼝测试流程7、Jmeter进⾏接⼝测试流程步骤详解8、总结JMeter性能测试的步骤?第... 查看详情