JMeter初探
简介
JMeter 是开源免费,测试框架。本文作者是用于软件的压力测试。
官网
下载地址
https://download.csdn.net/download/weixin_42464833/10480647
运行
安装 Java 环境
在 Mac 系统的运行方式如下:
cd ~/tools/apache-jmeter-3.2/bin/
./jmeter
GUI效果展示
实现步骤,简单描述:
- 右键 添加 Thread / 线程组
- 右键 添加 Sample / HTTP 请求
- 右键 添加 监听器 / 查看结果树,聚合报告等
详细步骤可参考:
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.确保设置的值不大于它所在线程组包含的用户数(线程数)-- 一直集结线程而不发出测试请求,直到超时(如果设置了的话)。