热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

压力测试jmeter入门教程

ApacheJMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

总而言之,jmeter就是一款压力测试的软件。

1.下载/安装 jmeter

首先下载jdk,下载网站:http://www.oracle.com/technetwork/java/javase/downloads/index.html ,这里我选择的是Java Platform (JDK) 8u111 / 8u112,下载完成安装。

然后下载jmeter http://jmeter.apache.org/download_jmeter.cgi

下载完成解压,打开解压文件夹下进入bin,双击ApacheJMeter.jar就可以打开jmeter

2.开始压测

(1)新建线程组,即新建一个压测项目,右击测试计划,操作如图:


线程组的参数设置:线程数指的是用户数,Ramp-Up单位是秒,如果线程数是100,Ramp-Up设置为1,循环设置2(表示每个用户请求多少次),则100/1=0.01秒,即线程与线程的切换时间的0.01秒,表示用户A(A线程)访问2次必需在0.01秒内发出请求,0.01秒后换用户B(线程)请求。参数设置如图:


(2)新建http请求

右击线程组,依次选择:添加-》Sampler-》HTTP请求,参数设置:服务器名称或IP,直接输入域名;端口号不需要设置;路径填写访问的路径,不填写表示直接访问域名,如果是get请求参数可以直接写到路径,比如open/index/shop?name=test&age=22,如果是post,则点击Parameters选项卡下面的“添加”进行参数的添加,记得任何填写完都记得点击保存,操作如图:


(3)添加结果监控

右击线程组,依次选择:添加-》监听器-》用表格察看结果,再添加:添加-》监听器-》察看结果树,再添加:添加-》监听器-》聚合报告,一般看这3个,其他可以按个人添加。添加完毕,可以开始压测,点击绿色的三角形开始压测按钮,或者右击线程组-》start。执行完毕,察看聚合报告,参数说明:

label:请求说明,如果是请求不同的路由,这里会显示路由的地址

samples:请求的次数

average:平均请求时间(毫秒)

median:请求时间小到大排序,排在中间的那个时间

90%Line:请求时间小到大排序,排在90%的那个时间(一般以这个为指标,比如要求这个数不能超过1000,即一秒,90%的请求不能超过1秒)

min:最小的请求时间

max:最大的请求时间

error:请求失败的比率

throughput:吞吐量

参数如图:


(4)随机测试多个url

一般我们不会只是压测一个url,希望随机压测多个url,这是我们可以使用jmeter的StringFromFile函数,在jmeter工具栏依次点击:选项-》函数助手对话框-》选择_StringFromFile,然后在输入文件路径后面输入我们本地一个记录多个需要压测url的文件,必须是bat结尾,这里我的文件在F:url.bat,路径可自定义,我这里填写F:url.bat。然后编辑F:url.bat文件,填写需要压测的url,不需要填写域名,因为域名已经在HTTP请求那里设置了,以换行作为分隔符,StringFromFile的设置如图:


url.bat编辑的内容如下:

/open/index/shop?zb_id=1Zmjqt7FZ5k
/open/index/goods_list?zb_id=1Zmjqt7FZ5k
/open/index/detail2/52708/375778?zb_id=1Zmjqt7FZ5k
保存url.bat,然后再按上图所示,在函数助手点击生成,会生成一个函数字符串,复制函数字符串,在HTTP请求中的路径填写复制的函数字符串,如图:


点击保存,再点击上图所示的清除按钮,清除上一次的监听结果,然后点击开始就可以发现是随机压测不同的url了。

(5)晋级随机压测url

上面说的随机压测url,局限是只能压测get请求的url,不能压测post请求,因为post请求需要的参数上面的方法设置不了,还有实际的情况是:有时候还需要压测需要登录的页面。

首先解决需要登录的问题。

设置COOKIE。右击线程组,依次选择:添加-》配置元件-》HTTP COOKIE管理器,在管理器添加登录状态的COOKIE就可以了。

解决post请求。这时就不能用上面的方法,但是需要压测多个页面,创建多个线程组也不合理,这时需要使用jmeter的录制功能。即你用时浏览器访问你需要压测的多个url,jmeter录制下来,包括请求url时的所有参数,自动添加到线程组下面,这时点击开始压测就会随机压测刚才录制下来的url。

录制准备。右击工作台。依次选择:添加-》非测试元件-》HTTP代理服务器,设置参数:端口=8888(不和其他程序冲突),目标控制器=线程组,设置如图:


设置完成点击启动,然后去浏览器设置代理,IP:127.0.0.1,端口:8888,然后访问需要压测的url,jmeter就会录制下来,如图:


会发现很多css、js、图片也录制进来了,需要手动把他们删除,然后点击开始压测,就会发现可以压测得到post请求的url


推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
author-avatar
daoyuanzhi
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有