JMeter初探

简介

JMeter 是开源免费,测试框架。本文作者是用于软件的压力测试。

官网

https://jmeter.apache.org/

下载地址

https://download.csdn.net/download/weixin_42464833/10480647

运行

安装 Java 环境

在 Mac 系统的运行方式如下:
cd ~/tools/apache-jmeter-3.2/bin/

./jmeter

GUI效果展示

在这里插入图片描述

实现步骤,简单描述:

  1. 右键 添加 Thread / 线程组
  2. 右键 添加 Sample / HTTP 请求
  3. 右键 添加 监听器 / 查看结果树,聚合报告等

详细步骤可参考:
Jmeter实现接口压测 - for MacOSX
https://www.jianshu.com/p/f4a675e02cd7

Fiddler

抓取目标网站中的 http请求 及 相应传递的参数

然后再添加到测试计划中

正则表达式的使用

添加后置处理器,需要注意参数匹配是全字匹配

JMeter 正则表达式 规则说明
https://www.cnblogs.com/qmfsun/p/5903318.html

参考文章

接口测试Jmeter+Fiddler组合
https://www.cnblogs.com/TestWorld/p/5206824.html

jmeter 压力测试实践(有介绍各参数含义)
https://blog.csdn.net/web718/article/details/44776789

有多好JMeter的测试ASP .NET网页?(How good is JMeter for testing ASP .NET webpages?)
http://www.it1352.com/252217.html

JMeter和LoadRunner的异同
https://my.oschina.net/barter/blog/113822

 

开始使用

下载

https://download.csdn.net/download/weixin_42464833/10480647

 

cd ~/tools/apache-jmeter-3.2/bin/

./jmeter


// 采用命令行形式生成结果
rm -rf log/*
/Users/Jack/tools/apache-jmeter-3.2/bin/jmeter -n -t 开始考试.jmx -l ./log/lt.jtl -e -o ./log/results


服务器端:

      启动服务器:  找到 ServerAgent-2.2.3 目录,双击 startAgent.bat 启动服务器。

服务器性能测试

jmeter之插件perfmon

https://blog.csdn.net/liuxiao723846/article/details/52795872

 

ServerAgent放在被压测的服务器上,是用来收集服务器相关性能指标(cpu、memory、tcp等)
执行startAgent.sh或startAgent.bat即可启动agent。

测试 JSON格式的 API

Jmeter入门3 http请求—content-type与参数

http://www.cnblogs.com/dinghanhua/p/5646435.html

 

HTTP请求参数中,添加 HTTP信息头管理器,

信息头编辑页面,点击添加,输入content-type application/json

在http请求,Body Data中输入json格式的参数

 

JSON下的正则表达式提取器

"token":"(.*?)"

设置token为全局变量

这样可以供多个线程进行调用。

${__setProperty(newtoken,${token},)}

${__property(newtoken)}

需要特别注意其中的括号,改用大括号就用大括号 

 

jmeter跨线程使用token

http://www.cnblogs.com/xiaolangjianke/p/9264386.html

Cookie管理器

注意,添加的 cookie 一定要添加域。因为高版本不支持跨域

https://blog.csdn.net/fly_to_higher/article/details/80253768

Asp.net web程序测试

用户登录

可以添加 线程组,1000,

/default.aspx

__EVENTTARGET=btnLogin

txtUserName=181115270226

可以重复调用1000次,估计修改数据库的代码是在启动新页面中进行的。所以可以拿到登录后的数据。

 

从数据库中获取到的准考证号

1.  SQLServer 中导出准考证号 csv 格式

2. 添加 配置原件 CSV Data Set Config

3. 参考资料,设置好变量名等

 

其他资料

AutoMapper.Mapper.CreateMap报“System.NullReferenceException: 未将对象引用设置到对象的实例。”异常复现
asp.net 下的测试
https://www.cnblogs.com/buguge/p/7682095.html

web stress ASPNET with JMeter

Hi Martin , 
I have been using Jmeter with ASP .Net for the last 6 months . It is svery much doaable . As pointed out you need soime BeanShell Scripting to get the Application Load Scripted .

First Step should be to use Jmeter Recorder . Start the recorder and point your browser to use a proxy IP/Host which is being used by Jmeter Proxy Recorder . Make sure that you have a Controller where you can redirect the recorded Samplers . Verify this against the Jmeter GUI .

Second Step : Parameterize your Application . This is the tricky part . .Net has some POSTBACK VARIABLES like __EVENTVALIDATION__ , __VIEWSTATE__ , etc which would appear are hidden controls . They are specific for a user session and hence you need to parameterize that 

To you http Sampler add a Response PostProcessor . Drag and add it as a child of a sampler . Use a regex to extract the value of the hidden component and assign that to a variable . Then in your subsequent Sampler remove the hardcoded value and place something like ${viewstate} or ${eventvalidaation} . 
Make sure that you use a DEBUG Sampler so that you can look at the script properties or Variables . Now replace all such variables and you should be good to start 

Regex id="__EVENTVALIDATION" value="(.+?)" 
RegexExtractor_template $1$


I am attaching a script using these concepts so that you have some examples . Hope it is useful

https://www.thecodingforums.com/threads/web-stress-aspnet-with-jmeter.85332/

 

Jmeter的好搭档Badboy的安装与简单使用

https://www.cnblogs.com/llxx07/p/7016958.html

Jmeter脚本录制方法(二)手工编写脚本(jmeter与fiddler结合使用)

https://www.cnblogs.com/hong-fithing/p/7668258.html

资料

Jmeter实现接口压测 - for MacOSX

https://www.jianshu.com/p/f4a675e02cd7

如何为Apache JMeter开发插件(三)——冲破图片验证码的束缚

https://blog.csdn.net/xreztento/article/details/48682923

Jmeter—实现识别验证码登录
https://www.cnblogs.com/hnini/p/6007742.html

 

jmeter 压力测试实践

https://blog.csdn.net/web718/article/details/44776789

 

Jmeter简单实现登录测试 【这里面提到了 如何设置从文件中来读取用户名和密码】是随机抽取用户登录

https://blog.csdn.net/qq_22158031/article/details/53434696

 

JMeter-PerfMon插件

https://blog.csdn.net/weixin_42270917/article/details/80618270

Jmeter监控服务器插件PerfMon

https://www.jianshu.com/p/0e632bd2caf7

JMeter性能测试——PerfMon Metric Collector服务器资源监控插件详解
https://blog.csdn.net/tx_programming/article/details/79990311

 

登录后再测接口

Jmeter接口压力测试(先登录再测接口)

https://blog.csdn.net/ab_2016/article/details/78260593

 

JMeter 正则表达式 规则说明

https://www.cnblogs.com/qmfsun/p/5903318.html

jmeter接口测试3-正则表达式提取器的使用

https://www.cnblogs.com/xueli/p/7405258.html?utm_source=itdadao&utm_medium=referral

Jmeter脚本录制方法(二)手工编写脚本(jmeter与fiddler结合使用)

https://www.cnblogs.com/hong-fithing/p/7668258.html

接口测试Jmeter+Fiddler组合

https://www.cnblogs.com/TestWorld/p/5206824.html

 

Load Testing ASP.NET Web Applications using Jmeter https://qadit.com/blog/load-testing-asp-net-web-applications-using-jmeter/

 

AutoMapper.Mapper.CreateMap报“System.NullReferenceException: 未将对象引用设置到对象的实例。”异常复现 https://www.cnblogs.com/buguge/p/7682095.html

有多好JMeter的测试ASP .NET网页?(How good is JMeter for testing ASP .NET webpages?)

http://www.it1352.com/252217.html

 

【jmeter】通过Cookie跳过验证码登录接口

https://blog.csdn.net/qq_39720249/article/details/83181557

下一步研究

JMeter和LoadRunner的异同

https://my.oschina.net/barter/blog/113822

 

JMeter论坛

https://www.hissummer.com/forum/Jmeter%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95%E4%B8%93%E5%8C%BA.html

 

命令行执行

https://blog.csdn.net/wangnan537/article/details/77627896

Jmeter做压力测试的心得

https://www.songma.com/news/txtlist_i27667v.html

问题及解决

从文件中获取的参数数值中,多了个空格

可能是 windows 导出的 csv 文件中的编码不对,用 编辑器(emacs)拷贝内容,并复制到新建的 utf-8 文件下即可。

 

JMeter 测试数据库

Jmeter向数据库批量插入数据

https://blog.csdn.net/zby_hlx/article/details/80254735

JMeter 中的时间日期处理

https://www.cnblogs.com/shouke/p/10157457.html

 

JMeter 发送请求

https://blog.csdn.net/u014767496/article/details/79149136

 

十六进制的数据

https://www.cnblogs.com/dinghanhua/p/9822734.html

 

JMeter 随机IP进行测试

https://blog.csdn.net/xpf094/article/details/80451917

randomIP
${__Random(10,200,)}.${__Random(2,255,)}.${__Random(2,255,)}.${__Random(1,255,)}

${randomIP}
X-Forwarded-For

https://blog.csdn.net/wanglha/article/details/40017953

 

自定义变量的方法,不管是 线程组 和 循环次数 下,变量值都不变

 

【解决办法】 在 【第一个 HTTP的请求下面】,添加 BeanShell PreProcessor。 此方法不管 用 线程组 还是 循环次数 都没有问题。

 

String randomIP = "${__Random(10,200,)}.${__Random(2,255,)}.${__Random(2,255,)}.${__Random(1,255,)}";

vars.put("randomIP", randomIP);

log.info("randomIP: {}", randomIP);

 

输出日志的查看方法,如下所示:

输出执行日志

选项/Log Viewer

https://www.jianshu.com/p/c267cc0df931

 

JMeter 定时器统一时刻发送并发请求

定时器 准备,再发送

https://www.jianshu.com/p/f6a068b1439e

 

Synchronizing Timer

再统一释放

即a.每集合够多少个模拟用户(线程)后发送一次测试请求;

b.如果设置为0,等同于设置为线程租中的线程数;

c.确保设置的值不大于它所在线程组包含的用户数(线程数)-- 一直集结线程而不发出测试请求,直到超时(如果设置了的话)。

posted @ 2018-11-27 09:24  lvye1221  阅读(12)  评论(0编辑  收藏  举报