Jmeter学习笔记

  1. jmeter安装:

输入网址:http://jmeter.apache.org/download_jmeter.cgi

配置JDK+Jmeter环境变量

参考网址:http://blog.csdn.net/ala9981/article/details/50953266

  1. jmeter接口测试

需要:开发给的接口测试文档

找到Jmeter安装目录-bin-jmeter.bat 双击打开,创建一个线程组(一个线程组相当于用例集或一个用例)

 

在线程组上添加一个HTTP信息头管理器(用来保证发送的HTTP请求是正确的

线程组--配置元件--HTTP信息头管理器,点击添加按钮来添加信息头的存储

content-type可参考网址:http://blog.csdn.net/Foreverlemon/article/details/74295729?locationNum=10&fps=1

集合点:多用户一起访问

JMeter里面的集合点通过添加定时器来完成。

学习链接:http://blog.csdn.net/zjq001x/article/details/53107159

多场景一起执行,可以设置多个线程组来实现,用户可以分批登录去进行场景模拟

 

http请求参数化方法:http://www.cnblogs.com/danmai/p/8245449.html

 

正则表达式:http://book.51cto.com/art/201204/327426.htm

 

对json数据返回进行字段统计:https://www.cnblogs.com/qinlijie/p/9212692.html

 

Jmeter-线程组执行顺序控制https://www.cnblogs.com/yanzhe/archive/2017/10/26/7736083.html

 

逻辑控制器介绍:https://blog.csdn.net/sarah_yff/article/details/78223887

 

函数助手:https://blog.csdn.net/zmllovejj/article/details/70159332

 

参数随机取:

第一种方法:https://blog.csdn.net/wugang8023/article/details/71330191

第二种方法:https://www.cnblogs.com/liu-ke/p/6866610.html(代码实现)

 

参数化的方法:https://blog.csdn.net/dearmorning/article/details/71080661

 

注: 可以获取一个变量或者多个变量。https://blog.csdn.net/lluozh2015/article/details/54097449

 

性能测试报告模板:https://wenku.baidu.com/view/b50009f8700abb68a982fb02.html?sxts=1533534375813

Jmeter测试报告导出:https://testerhome.com/topics/12114(在jmeter的bin目录下执行)

详解:报告导出一次后,下一次导出则需要清空报告文件夹和jtl,命令如下:

首先要删除生成报告文件夹下所有文件,其次执行命令:

del /s /Q D:\yanjie\jmeter\apache-jmeter-3.3\apache-jmeter-3.3\bin\result.jtl(del删除jtl

rd /s /Q D:\yanjie\jmeter\apache-jmeter-3.3\apache-jmeter-3.3\bin\HttpReport(rd是删除报告文件夹)

md D:\yanjie\jmeter\apache-jmeter-3.3\apache-jmeter-3.3\bin\HttpReport(md是重建报告文件夹)

jmeter -n -t D:\yanjie\jmeter\apache-jmeter-3.3\apache-jmeter-3.3\压力.jmx -l result.jtl -e -o D:\yanjie\jmeter\repost(执行程序并打印出报告)

 

测试报告分析:https://blog.csdn.net/wuyou10206/article/details/77539791

https://blog.csdn.net/huodoubi/article/details/60956124?utm_source=itdadao&utm_medium=referral

 

 

性能测试的目的和类型:https://blog.csdn.net/yuanjuxing/article/details/39638971

性能测试数值详解:https://blog.csdn.net/wind19/article/details/8600083

软件性能测试中关键指标的监控与分析:https://www.cnblogs.com/yunman/p/5482163.html

 

jmeter测试读取 .csv 文件出现第一个字符乱码的解决方法:https://blog.csdn.net/jiangqian6481/article/details/64516204

 

性能测试:

测试重点:

  1. 对压力测试报告数据进行分析
  1. 在jmeter测试请求运行开始后,监测服务器的各项指标
  1. CPU
  2. 内存
  3. IO
  4. 宽带

具体查看链接:https://www.cnblogs.com/yunman/p/5482163.html

性能监控工具的配置及使用 - Spotlight On Oracle(oracle):https://blog.csdn.net/u011391839/article/details/79983446

  1. 根据监控的数据进行分析,
  1. 响应时间不大于3s
  2. 吞吐量:当量上来之后慢慢加量,找到那个系统性能急剧下降的阈值(此时就要监控服务器指标,负载也是一项重要的指标)

Linux负载:https://www.cnblogs.com/baby123/p/6552537.html

  1. 并发数:在一定的时间范围内,最大的同时请求某一接口的用户数量

2.对多得出的数据进行整理,编写测试报告

性能测试报告模板:https://wenku.baidu.com/view/b50009f8700abb68a982fb02.html?sxts=1533534375813

 

 

 

实例1:(响应时间)

需求:APP中发现活动的一系列操作(发动态,评论,点赞),要求50个人连续操作20分钟,每个请求响应时间不能超过3s

遇到的问题:

  1. 如果直接设置线程进行运行,就会出现服务器崩溃的现象

解决:在进行压测时,每个请求设置一个吞吐量控制器,要求按一定的比例执行线程数

执行完之后,查看聚合报告、用表格查看结果、Times vs Threads的表格数据

聚合报告:

 查看max的数据是否大于3000ms,若大于,则不符合要求,该请求需优化

同时结合90%line、95%line、99%line的数据进行查看,已获取验证码请求为例,该数据表示,该报告有90%请求的响应时间不大于78ms(原理:系统将响应时间从小到大排序,例如1~20数字排序,90%是18,从小到大数第18位的数字,也就是18,所以90%line为18),依次类推

 

用表格察看结果:

 将每个请求所花的时间排序,就可以看到请求花费的最大时间,

总结:

  1. 我们所对比的响应时间是在请求成功的状态下进行的,个别请求不成功需要单独查看报错的原因(传参错误、接口本身错误或服务器崩溃等)
  2. 从以上截图数据来看,该项测试请求的响应时间均没有超过3s,测试合格

3.在压测过程中,会主从数据库断开的情况,是因为主数据库写入的数据太快,导致从数据库来不及读取数据从而断开,此现象需要优化(优化点:1.主从数据库搭建方式2.I/O问题,磁盘读写3.服务器方面优化)

 

实例2(吞吐量)

需求:

问题:

  1. 吞吐量和吞吐率的定义及其关系

吞吐率原指一个业务系统在单位时间内提供的产量(或服务量)。在计算机或数据通信系统,指的是单位时间内通过某通信信道(a communication channel)或某个节点成功交付数据的平均速率,通常以每秒比特数(bps, bits per second )为单位。
  吞吐量是指对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)

接口测试:

接口测试实例1(单接口测试):

需求:测试管理后台接口

需要文档:管理后台的需求文档,接口文档(项目成熟后,自己抓包也可以)

测试步骤:

  1. 了解需求文档,根据接口文档编写接口用例(直接用.csv格式编写,后期传参用)

1.1测试用例的编写(下面是某个接口的文档)

查看该接口文档,知道了每个字段代表的什么意思之后,开始编写测试用例,其实和功能测试的用例设计一样

用例设计方法(写的很详细)https://blog.csdn.net/u011001084/article/details/79102967

前部分编写接口测试字段名及其对应的数值,后半部分编写测试用例(可多列编写),每个字段可看做是一个输入框去设计用例,用边界值等价类设计

要考虑空值null,也考虑字段其本身含义,就像该接口的ts字段,其实是个时间戳,按期含义可以设计时间上的相关用例

1.2根据用例编写测试脚本

1.2.1首先.csv文件要修改格式为utf-8,不然脚本获取参数为乱码

方法:第一步:用excle创建文件,另存为.csv格式

第二步:用记事本打开.csv文件,然后另存为utf-8格式

1.2.2按照接口文档进行接口脚本编写(参数化方式与TXT文档一致),脚本如下

1.3运行测试脚本

1.3.1运行测试脚本时设置线程数,一般多少条用例就设置多少个线程(自己理解的),这里有12条用例,就设置12个线程组,添加查看结果数,点击运行

1.4分析返回JSON值

1要对照请求数据获取的参数是否和用例的数值一致

2要对照返回响应数据是否与所给字段含义一致,与用例中的预期结果进行对比,若不一致与开发进行沟通,确定是否是bug

 

 

补充:

  1. 举例的接口测试比较简单,只是一个显示菜单的接口,若是修改菜单的接口,则还需要考虑修改成功后再次查看该菜单信息是否真的修改成功
  2. 单接口测试完成之后可以考虑安全性方面的接口测试(例如订单支付修改支付金额查看是否成功这类型的)

二、linux分布式部署jmeter:

1、control机和agent机器安装jdk和jmter,并配置环境变量:

    export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_121

 

    export JRE_HOME=/usr/lib/jvm/jdk1.8.0_121/jre

 

     export JMETER_HOME=/root/lyl/apache-jmeter-3.1/bin

 

     export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar:$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:

 

     export PATH=$PATH:$JAVA_HOME/bin:$JMETER_HOME/bin:

2、更改control机器上bin/jmter.properties文件:

    更改remote_hosts=192.168.180.127:1099(agent机器ip),ip2

3、关闭agent机器防火墙:systemctl stop firewalld

4、更改agent机器本地hosts文件:vi /etc/hosts,将127.0.0.1改为本机ip

5、更改agent机器bin/jmeter-server文件: RMI_HOST_DEF=-Djava.rmi.server.hostname=slave机器名

6、启动agent机器/bin/jmeter-server服务

7、control机器发起测试:jmeter -n -t xx.jmx -R agent机器ip -l xxx.jtl

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值