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