1、打开jmeter,添加线程组
![](https://img.haomeiwen.com/i11755552/5c0c5c0ce12b7bc9.png)
2、测试计划下添加http代理服务器
![](https://img.haomeiwen.com/i11755552/c9469013bfb504e5.png)
目标控制器选择:测试计划->线程组,因为我们是录制到线程组中,所以选择测试计划->线程组
![](https://img.haomeiwen.com/i11755552/9dc8d84706c90c71.png)
设置浏览器代理,以谷歌浏览器为例。打开浏览器->设置->高级,往下翻到系统,点击打开代理设置
![](https://img.haomeiwen.com/i11755552/be1b518e241133c8.png)
出现internet属性窗口,点击局域网设置。
![](https://img.haomeiwen.com/i11755552/abac98ee71a39ee0.png)
设置如下图:端口要保持一致
![](https://img.haomeiwen.com/i11755552/dd2ff6dad65abd11.png)
设置完成之后,点击启动按钮,jmeter将会记录我们在谷歌浏览器中所有的操作(类似抓包)。注意:操作完浏览器后,要及时关闭录制。否则jmeter会记录很多我们不需要的后续请求,并且将浏览器的代理服务关闭,否则浏览器将无法访问外网。
实例:登录论坛,并发帖。
点击启动后,通过谷歌浏览器访问论坛,登录并发帖,完成发帖后,打开jmeter工具,点击http代理服务器上的停止按钮,并将浏览器代理服务器关闭。此时,查看我们的线程组,发现下面已经记录了一大推的请求。
![](https://img.haomeiwen.com/i11755552/73e245833c4d44f8.png)
只是简单的一个登录和发帖,我们看到jmeter中记录了很多请求,其中有很多是css的请求,我们真正需要的是signin和topiccreate。jmeter不支持批量删除http请求,一个一个删除又很麻烦,所以我们可以选择新建一个线程组,将我们需要用到的请求复制到后面的新建的线程组下,如下图:
![](https://img.haomeiwen.com/i11755552/840194785faa7f6c.png)
接下来可以运行我们的线程组了,点击运行,发现报错,禁止访问。。。不要慌,这是因为没有cookie的原因,虽然登录成功了,但是因为没有cookie,导致没有权限进行发帖的操作。(还记得我们一开始用jmeter做的post接口请求么?发帖需要四个必须字段,token,title,tab,conten,其中token就是用户的登录信息)
![](https://img.haomeiwen.com/i11755552/242ef7da7e6f7b1c.png)
首先正常页面操作发帖的时候查看cookie
![](https://img.haomeiwen.com/i11755552/9c6e49022b79863f.png)
但当我们把网页中的cookie删除掉,再刷新该页面,发现与jmeter中的报错一致都是forbidden!
![](https://img.haomeiwen.com/i11755552/cb5b0dfa4130a0a0.png)
既然知道原因了,就知道怎么对症下药了。在线程组下分别添加http cookie管理器和httpcache manager。这两个一个是cookie一个缓存。加上这两个之后再运行我们的线程组。
![](https://img.haomeiwen.com/i11755552/7387c3b13e8eccef.png)
再次运行后查看结果树,已经运行成功了
![](https://img.haomeiwen.com/i11755552/859fbe5b885279d9.png)
3.压测(登录和发帖)
在上述基础上我们对服务器进行压测。方案,采用csv数据驱动实现。
线程组下添加csv数据文件
![](https://img.haomeiwen.com/i11755552/d8786c56fe478bb0.png)
新建data.csv文件,如下图:两列数据分别为用户名和密码
![](https://img.haomeiwen.com/i11755552/f4ac431d47d67a9e.png)
注意,如果文档中含有中文,则用记事本方式打开该csv文件,另存为,选择UTF-8编号格式保存
![](https://img.haomeiwen.com/i11755552/defa0a0e265f06b9.png)
此时在csv数据驱动文件中设置如下
![](https://img.haomeiwen.com/i11755552/a6fd1929e23f3216.png)
再将线程组中的线程数改为10,再次运行该线程,查看结果树:
![](https://img.haomeiwen.com/i11755552/0212477c04ad70ad.png)
根据响应数据或者请求我们可以得出报错原因,no cookie,可能该用户不存在,此时我们在浏览器中用该用户名密码登录,发现确实登录不了
修改data.csv文件,将错误的用户名密码修改为正确的用户名密码后,再次运行,
![](https://img.haomeiwen.com/i11755552/eca0800f50fea1ed.png)
查看论坛首页,批量发帖十个已经成功
![](https://img.haomeiwen.com/i11755552/fecde60891aad6d8.png)
既然添加成功,接下来我们可以开始使用断言来验证结果是否正确。因为登录成功后会跳转到首页,并且首页展示登录名,所以我们在登录请求下添加响应断言
![](https://img.haomeiwen.com/i11755552/b05713a4123f6c2f.png)
因为在csv驱动设置中我们已经将用户名参数化为${user},所以我们在响应断言中设置如下:
![](https://img.haomeiwen.com/i11755552/c709e9dc53329284.png)
同时,为方便查看请求参数,我们在线程组下添加debug postprocessor
![](https://img.haomeiwen.com/i11755552/8a68c5c143af61e6.png)
设置完成后再次运行,查看结果树及debug postprocessor的响应数据
![](https://img.haomeiwen.com/i11755552/4df484698f45146f.png)
网友评论