最近接触到了web端测试,要对一个项目进行压力测试,作为小白的我立刻百度去了,了解了一大堆,试了下siege,由于它是在linux系统下的工具,我是windows用户,就用虚拟机ubuntu搞了搞,发现虚拟机有点吃力,就找到了windows下的JMeter,发现很好用,而且乐趣无穷啊,上手很快,打算深入研究下,今天就来个入门介绍吧~
首先,就是要进行JMeter的安装,同时了解到JMeter还有一个好伙伴叫badboy,专门用来录制脚本的,可以导出成 .jmx格式,然后用JMeter打开就可以运行了,下面就介绍下这些软件的安装:
一、安装badboy
1、下载地址(官网):http://badboy.com.au/
正常安装就好,没有任何问题,安装好后可以运行,启动的界面如下:
2、用badboy录制访问百度的简单脚本
在url地址栏输入百度的地址:http://www.baidu.com,然后敲回车,badboy就记录了这个动作,也可以看到正常跳转到了百度的界面,如下:
你还可以尝试其他的操作,本文就不多介绍啦,后续大家自己摸索吧。
3、然后点击左上角的File----->Export to JMeter,就可以导出成.jmx格式了,就可以导入到JMeter里面去了。
二、JMeter安装:
JMeter的安装前要先装JDK,我装的JDK是1.8.0版本的,JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
大家根据自己的需要下载JDK就好了,JDK下载好了就要配置环境变量,百度一下你,配置环境变量的说明文档一堆,附上个链接吧,http://jingyan.baidu.com/article/e9fb46e1b2b3347521f766c1.html 配置好环境变量下面就是装JMeter了,下载地址是:https://jmeter.apache.org/download_jmeter.cgi,我是windows 10的系统,我下载的是Binaries下的apache-jmeter-2.13.zip,如下图:
JMeter是不需要安装的,下载完成后解压就可以了,我解压到了C盘 C:\apache-jmeter-2.13,然后要把这个路径添加到环境变量里,主要操作如下:
在系统环境变量里添加JMETER_HOME,值为 C:\apache-jmeter-2.13,如下图:
然后修改CLASSPATH,增加 %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-1.2.jar;注意和之前的值要用“;”分号隔开,如下图:
以上的环境变量都配置好了,就可以去试试能否启动JMeter了,到JMeter所在的C:\apache-jmeter-2.13\bin目录下面找 jmeter.bat,双击执行,稍等就可以看到如下界面啦,表明你配置成功啦。
三、用JMeter进行一个简单的登录压力测试
1、首先要在一个测试计划下新建一个线程组
2、我测试的登录的URL为:http://cloud.XXXXX.com/user/login,他为一个http的post请求,所以我给线程组添加了一个http请求
3、然后根据实际情况构造这个http请求,http请求是post方法,由于登录需要账号和密码,我们的登录系统的账号的关键字为:email,密码关键字为:password,点击添加,我将一个正确的账户和密码填好,如下图的设置:
4、http的登录请求构造完了,现在要做的工作是给这个线程组添加一个监听器,监听器会显示等下的运行结果,我选择了其中的3个监听器,如下:
5、然后点击线程组,为这个线程设置要模拟并发的用户量
这里的线程数:一个用户就占用一个线程,100个线程就是模拟100个用户;Ramp-Up Peroid(inseconds):是设置线程需要多长时间全部启动,我的线程数为100,准备时长为10,则需要1秒钟启动10个线程;循环次数时指:每个线程发送请求的次数,我的线程数为100,循环次数为10,代表每个线程发送10次请求,则请求总数为1000,勾选永远,线程就会一直发送请求,直到停止运行脚本。
6、现在运行一下
7、运行的结果如下
(1)查看结果树,结果树上是线程运行时所有步骤的运行情况,我们可以看到,我构造的http请求他的响应数据是success,表明我每次都成功登陆了
(2)在看聚合报告,聚合报告里秒有好多数据,我们可以看到,总共的请求次数为1000(Samples),平均返回时间是297ms(Average),没有一次错误,Error为0,其中各个值的含义如下:
Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性
#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
Median:中位数,也就是 50% 用户的响应时间
90%Line:90% 用户的响应时间
Min:最小响应时间
Max:最大响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
(3)图行结果显示的更加直观,各个值得含义是:
样本数目是总共发送到服务器的请求数。
最新样本是代表时间的数字,是服务器响应最后一个请求的时间。
吞吐量是服务器每分钟处理的请求数。
平均值是总运行时间除以发送到服务器的请求数。
中间值是代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。
偏离表示服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。
JMeter的其他功能和使用还在学习中,后续会分享出来。