用JMeter进行Performance Test

用JMeter能够对Http请求进行Performance Test,来分析哪些方法花费的时间多,哪些方法花费的时间少,有了这样的分析结果后,咱们就能够集中力量来改进费时的方法。css

官方文档请参考以下连接:web

http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf apache

关于Jmeter的更多问题与解决方案,依然能够参考以下连接:浏览器

http://www.technix.in/jmeter-problems-and-solutions/post

 

安装和运行JMeter须要配置Java环境,这里省略具体步骤~~测试

 

1):双击jmeter.bat来运行此程序后,以下图建立一个WorkBench线程

 

2):保持基本的设置不变,能够看到咱们采用8080这个端口来监听HTTP的请求,在截图的最下方有个Start按钮,开启以后能够监听由此代理的HTTP请求3d

 

3):接上一步骤能够将咱们的FireFox浏览器设置由本地的8080端口进行代理,那么当上图Start以后,由FireFox所发出HTTP请求将会被JMeter录制下来代理

 

4):根据下面的截图添加一个Thread Group调试

 

5):能够对Thread Group的属性进行设置,模拟多个用户进行HTTP请求

 

6):以下图所示,添加View Results in Table 和 View Results Tree 能够对运行结果进行分析,固然了还能够添加其余的控件进行更加直观的比较结果

 

7):点击第2步骤中的Start按钮,用浏览器对指定的web站点进行访问操做来录制整个过程当中全部的HTTP请求,最终的结果以下所示(固然了咱们删除了一些没必要要的css,js等文件的加载过程),而且对全部post请求作以标识(在名字的后面添加-post),整个过程录制完毕后,WorkBench下的HTTP(s) Test Script Recorder就没有用了,咱们能够直接删除掉,而且咱们能够把FireFox中的代理设置回复默认状态,由于咱们以后的HTTP请求的发送都是由JMeter所录制好的脚原本完成的,这也就是彻底模拟了用户的操做过程,而且用多个线程去模拟多个用户。

 

8):在下面的截图中咱们发现有些步骤(GET)是灰掉的,缘由咱们的POST请求中选择了'Follow Redirects'这个选项,那么JMeter会将后续的GET请求步骤合并到前面的POST请求中;这样的话会引出另一个问题,就是此POST请求所记录的时间包含了POST请求本省以及接下来的GET请求所花费的时间之和,因此咱们能够讲POST请求中的‘Follow Redirects’选项去掉,Enable对应的GET请求来更加准确的记录全部请求所花费的时间

 

9):上面的步骤操做完毕后,咱们直接运行所录制好的脚本会发现,POST请求都失败,以下图所示

 

10):上图中出现错误的具体缘由是在每个POST请求中都有__RequestVerificationToken这个参数,这个参数的值在每次请求的时候都是不一样的,实质上这就是一个Cookie

 

11):所以咱们要像下图所示的样子添加一个HTTP Cookie Manager

 

12):在像下图所示的样子添加一个Regular Expression Extractor

 

13):填写对应的设置(<input name="__RequestVerificationToken" type="hidden" value="(.*?)" />)

 

14):而后将全部用到的地方都换成这个变量

 

15):在运行一遍,就能够发现测试都经过了


16):接下来我么继续完善,以下图所示添加User Define Variables组件

 

17):将咱们所用到的能够共用的数据,以全局变量的形式添加到User Define Variables组件中,这样管理起来更加的方便规范

 

18):用变量替换全部的值

 

19):用.csv文件能够实现跟全局变量相同的功能,以下图所示.csv文件的具体内容,其中的第一行Header值表示的就是此变量的名字,能够用{!LPN}这种方式去访问

 

20):参考以下截图添加CSV Data Set Config组件

 

21):将.csv的文件名填写到filename中(固然了这里咱们是把.csv与当前的.jmx放到了同一个目录下)

 

22):而后替换全部变量

 

23):最终的运行结果的解析

 

因为JMeter彻底模拟了用户操做的流程,和用户在浏览器中操做的过程是同样的,因此能够用VS去attach对应的w3wp.exe进行去进行调试,去肯定具体的问题。

。。。

相关文章
相关标签/搜索