Jmeter录制脚本的方式有两种,一种是自身提供的HTTP代理方式进行录制,第二种是第三方工具Badboy也提供了录制支持。HTTP代理方式进行录制的原理是解析网络数据包,按Http协议包装成Http Request、Http Response等对象,这些对象就是我们能够方便识别的东西。
Jmeter脚本(.jmx)为xml格式,树形结构,由元件组成,使用“取样器”产生请求。
一、下面先讲解Badboy进行录制
简单点说Badboy就是一个浏览器模拟工具,具有录制及回放功能,还可以进行调试。我们可以用它来做自动化测试,因为它有捕获表单数据的功能。我们也可以用它来对web页面进行诊断,诊断系统响应快慢,响应数据大小。Badboy录制的脚步可以直接生产.jmx格式。
步骤1:
下载Badboy,下载网址为:http://www.badboy.com.au/,下载.exe文件直接点击安装到自己指定的目录下就可以了
步骤2:
打开Badboy,在地址栏输入请求的页面,回车或者点击-》开始进行录制。
Badboy的录制方式有两种,一种是Request方式,一种是Navigation方式。在工具栏上点击“N”即切换Navigation方式。
这两种方式的区别如下:
Bodboy打开就是默认的request方式,所以不用去设置。
在这里解释一下script的目录树结构:
我们可以把录制的步骤分为三步:一是登录CSDN,二是进入论坛模块,三是发布帖子,录制的脚步如下图所示:
录制完成之后导出成Jmeter脚步,下面我们就可以在Jmeter中打开刚才录制的脚步。Jmeter会以树型结构显示脚步,执行时原则上按节点先后顺序往下执行,如下图所示
下面我们来认识一下脚步中的各个元件
在这个元件里面我们可以做什么呢?
(1)设置用户全局变量,即在“用户定义的变量”中定义
(2)独立运行每个线程组,如果一个测试计划中有多个线程组,设置此项可以生效
(3)Run teardown Thread Groups after shutdown of main threads,关闭住线程后运行teardown程序来正常关闭线程组(运行的线程本次迭代完成后关闭)
(4)函数测试模式,在调式脚本的过程中我们可能需要获取服务器返回的详细信息就可以选择此项
(5)add directory or jar to classpath,把测试需要依赖的jar包或包所在的目录加入类路径。
剩下的Step1、Step2、Step3就我们录制时候的步骤,现在转换成Jmeter脚本
现在我们来回放一下脚本,不幸的是脚本根本不通过,我们还需要调整一下脚本。
二、Jmeter配置代理进行录制
1、浏览器配置管理
打开浏览器顺着【工具】-【Internet选项】-【连接】-【局域网设置】进入如图所示页面
在代理服务器中,按上图进行设置,可以把localhost换成 127.0.0.1 ,端口换成你想设置的,但是不要与别的端口进行冲突,一般四位数的端口冲突比较少
2、Jmeter中配置代理
(1)添加线程组,在线程组里面添加HTTP Cookie管理器如下图所示
添加路径是:【线程组】右键--【添加】--【配置元件】-【HTTP Cookie管理器】
(2)添加HTTP代理服务器,添加路径是:【测试计划】右键--【添加】--【非测试元件】-【HTTP代理服务器】
接下来设置代理服务器,(端口号既是我们在浏览器中设置的端口号)
目标控制器:决定将来录制的脚本放在哪个目录(我们把测试计划看成一颗目录树的话,这个目录就是树中的一个节点)。我们可以在【测试计划】-【线程组】下面添加节点,然后指定脚本放在此节点。如下图,我们在【线程组】下添加了【简单控制器】节点,然后我们就可以在“目标控制器”处选择它。
分组:录制脚本时将会增加很多节点,这些节点我们可以给它分组,便于查看与管理。对于HTTP请求我们可以把每一个URL看成是一个组,这样更好理解。如下图
记录HTTP头信息:把Header头信息也录制下来。
添加断言:通俗讲就是检查点,在录制时加入空的检查点,后续我们需要自己填写断言规则。
Regex matching:检查点用正则表达式来匹配内容。
如何排除我们不需要的信息呢?看下图
例如:在包含模式里我们可以填“.*\.jsp”,意思是只在请求JSP文件时录制脚本
在排除模式上填“.*\.js”,在请求js文件时不录制脚本(通常js png gif css php woff 这些类型的文件都是不需要的)
这样可以根据实际情况来过滤自己不需要的文件
3、开始录制