Jmeter脚本录制方法--手工编写脚本(jmeter与fiddler结合使用)

手工编写脚本,建议使用这一种方法,虽然写的过程有点繁琐,但调试脚本比前两者方式都要便捷。

首先来看下三种方式的比较吧,不然看不出什么。

三种方式的优劣:

badboy:

  1、有时候录制不了,兼容性较差

  2、post请求的时候,如果链接中有参数、body里面也有参数,都会放在body里面

jmeter 代理录制:

  1、请求抓取过多

  2、配置代理等操作比较繁琐

手工编写:

  要一个个请求手工去写

手工编写脚本

一般通过fiddler抓包或者开发提供的接口设计文档的形式,在Jmeter的GUI界面操作进行脚本生成,还可以使用编写java代码打包成jar包进行生成等方式。

在Jmeter手工制作脚本之前,先要获取HTTP请求的相关信息,如请求地址、请求参数、 请求类型等,一般情况下,有两种方法获取这些相关信息:

  1、根据开发提供的接口设计规范文档;

  2、使用第三方抓包工具如Fiddler、 Charles等抓包, 然后从中提取信息。

在介绍手工编写脚本时,就以phpwind5.0论坛登录为例来讲解,使用的工具是jmeter和fiddler。

准备工作

1.把fiddler加上过滤功能,添加如下正则表达式,如下所示:

REGEX:(?insx)/[^\?/]*\.(css|ico|jpg|png|gif|bmp|wav|js)(\?.*)?$ 

2.若phpwind搭建在虚拟机中的话,要保证物理机与虚拟机的网络畅通,使用ping命令即可。

3.jmeter环境要搭建好,搭建环境步骤在这篇帖子中已有详解:http://www.cnblogs.com/hong-fithing/p/7640014.html

录制步骤:

注意:先把请求添加进去,再去调试脚本。

第一步,打开jmeter,在测试计划中添加一个线程组,如下:

第二步,在线程组中添加一个HTTP请求

HTTP请求添加方法: 线程组 -->右键添加 -->Sampler -->HTTP请求如下:

第三步:添加一个HTTP请求默认值

因为默认值设置好后,就对HTTP请求有很大的方便,详细见下:

将协议、ip或服务器名称、端口号、字符格式设置好,在之后的http请求就不用设置了,相当于设置好了一个全局的默认值:

需要注意的是:http协议的端口是80,https协议的端口是443,别混淆了。

在http默认值中的Adcanced下设置代理服务,这样就可以在fiddler中抓取到该脚本请求:

如下:

第四步:手工写脚本

手工编写脚本注意事项:不要多空格也不要少空格,符号也不要掉,细心会给自己调试脚本节省很多力气。

论坛登录,使用fiddler抓取到四个请求

如下:

将第一个请求的请求头复制到jmeter中的http请求中

由于刚才设置了HTTP请求默认值,所以现在在HTTP请求中,协议,ip,端口号都不用填写了,是不是很方便了。

点击第二个请求,post请求,注意有请求参数:

参数查看如下:

在jmeter中设置如下:

要设置请求头,第二个请求的请求头如下:

添加HTTP请求头管理器:

在登录下添加HTTP请求头管理器,设置如下,要添加在登录下,这是作用域的问题,这样设置只对登录请求有效,在外面的话,就是对全局有效了。此处需要注意。添加请求头,是为了能让服务器认为用软件发出的请求也是浏览器发出的,不会拒绝请求。

点击第三个请求,查看请求头:

有参数值:

在jmeter中设置如下:

点击第四个请求,查看请求头:

在jmeter中设置如下:

做完如上操作,基本的脚本就已经写完了,只剩脚本调试了,四个请求添加完成如下:

脚本调试

登录调试涉及到的是关联,之前我专门写了一篇关于关联的文章,可参见:http://www.cnblogs.com/hong-fithing/p/7650762.html,主要使用jmeter中后置处理器下的正则表达式提取器,使用正则表达式。

何处需要关联?简单来说,就是每次脚本运行,有些特定值是动态变化的,这地方就需要关联。

登录脚本中,csrf_token和statu的值每次都是变化的,所以这两个地方需要关联。在知道了何处需要关联了,但正则表达式加在哪,去哪里关联呢?

先在脚本中添加个察看结果树,如下:

运行次脚本,在打开首页的数据中查找到csrf_token值,如下:

说明在首页打开就已经有这个值产生,同样也可以在fiddler中去查看,所以正则表达式提取器就添加在第一个请求下,如下操作:

由于引用名称设置的是token,所以在登录处的csrf_token值改为:

其次就是关联statu值了,继续在结果树中查看,在登录中的响应数据中有该值出现:

添加正则如下:

在下一个请求中把statu的值替换为:

这样就把关联做好了,其实看到这,应该明白,关联就是把请求连接起来,有连贯性。看,先是在打开首页就出现csrf_token值,需要提取出来并传给登录的那个请求,在登录出现的statu值,需要提取出来并传给页面跳转的那个请求。这样就实现了关联。

再提一下这个取样器,Debug,添加到正则表达式提取器之后,能很清晰的看到提取出来的值对不对,或者是提取到了值没有,在调试中很方便。

手工编写的脚本调试过程中,给大家提个醒,就是cookie,之前我在调试的时候由于没加这个管理器,关联取出来的值都是对的,但脚本就是不成功,最后是添加了HTTP Cookie管理器,脚本就运行成功了。

今天的手工编写脚本就介绍到这了,之后有时间还会写关于jmeter相关的文章,有错之处欢迎指正。

原文地址: https://www.cnblogs.com/hong-fithing/p/7668258.html

原文地址:https://www.cnblogs.com/gezirui/p/9328353.html

时间: 2024-08-06 21:08:51

Jmeter脚本录制方法--手工编写脚本(jmeter与fiddler结合使用)的相关文章

Jmeter 的两种脚本录制方法

Jmeter 的两种脚本录制方法有一.通过badboy工具录制:二.通过Jmeter代理录制 一.通过badboy工具录制 1).工具下载地址:www.badboy.com.au/ 2).下载安装完成后,打开工具(工具默认开启录制),在地址栏输入被测项目的地址,点击右侧箭头即可录制 3).录制完成后,点击结束按钮,选择File--Export Jmeter ,最后的文件格式为.jmx类型 4).打开Jmeter工具,选择文件--打开,选择上一步保存的文件,文件即可成功导入进Jmeter 5).练

VBS脚本代码(手工编写)

'=========================================================================='' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 4.1'' NAME: '' AUTHOR: Windows 用户 , AEBELL' DATE : 2014/7/7'' COMMENT: ''=============================

Zabbix调用外部脚本发送邮件:python编写脚本

Zabbix调用外部脚本发送邮件的时候,会在命令行传入两个参数,第一个参数就是要发送给哪个邮箱地址,第二个参数就是邮件信息,为了保证可以传入多个参数,所以假设有多个参数传入 #!/usr/bin/env python #encoding:utf8 # # Zabbix Server 发送邮件脚本 # from email import encoders from email.header import Header from email.mime.text import MIMEText fro

Jmeter之录制脚本(二)

上一节已经已经介绍过Jmeter代理使用,对于web测试的话,经常会用到一些脚本去执行某些功能,也就是所谓的半自动化测试, 对于不懂代码的童鞋来说,脚本是一个很头疼的概念,badboy的录制是一个对于刚接触脚本的人来讲是一款非常实用的工具 不过,这一节先介绍下对于Jmeter自带的脚本录制方法 使用代理录制Jmeter脚本 首先,Jmeter脚本是以JMX格式为主 那怎么样通过jmeter来录制脚本呢, 录制脚本前,我们只要启动好代理,手动通过IE或者火狐来录制,录制完停止代理. 上面的是思路,

手机APP脚本录制(LoadRunner 12)

最近因项目需要,研究了下手机APP脚本录制方法,有需要的童鞋可参考使用! 方法1: 在手机网络中设置网络代理,使用LR12选择Mobile Application – HTTP/HTML协议中代理录制方式录制 利用loadrunner代理方式录制手机(iPhone.android)应用程序HTTP脚本 工具/原料 ? loadrunner ? 智能手机 利用笔记本网卡或者类似360随身wifi,在安装loadrunner的电脑上共享网络,在手机上连接共享的wifi. 配置手机wifi连接的HTT

Shell基础(三):使用for循环结构、使用while循环结构、基于case分支编写脚本、使用Shell函数、中断及退出

一.使用for循环结构 目标: 本案例要求编写一个Shell脚本chkhosts.sh,利用for循环来检测多个主机的存活状态,相关要求及说明如下: 1> 对192.168.4.0/24网段执行ping检测      2> ping检测可参考前一天的pinghost.sh脚本      3> 脚本能遍历ping各主机,并反馈存活状态 执行检测脚本以后,反馈结果如下图所示. 方案: 在Shell脚本应用中,常见的for循环采用遍历式.列表式的执行流程,通过指定变量从值列表中循环赋值,每次复

[Jmeter]jmeter之脚本录制与回放,优化(windows下的jmeter)

一.录制脚本: 1.启动jmeter 2.添加线程组 3.添加http代理 4.配置代理 a.jmeter侧(注意:lest plan content这里需要选择目标控制器,本文即测试计划中需要选择的控制器,本示例中需要选择"测试计划 > 线程组") b.IE端 控制面板\所有控制面板项\网络和共享中心 >internet选项 > 连接 > 局域网设置 c.启动脚本录制程序(点击a里面jmeter的http代理界面的启动按钮) d.访问需要测试的界面,如www.

Jmeter初步使用三--使用jmeter自身录制脚本

今日,小编在网上看到很多人使用badboy来录制,然后再把jmx脚本弄到Jmeter上做性能测试.这种方法在小编刚用Jmeter时也曾经用过,但是感觉太麻烦了,所以就找了下其它资料.结果,小编偶然发现,Jmeter也是自带录制功能的,然后小编兴高采烈的去尝试.尝试的结果很满意,比用badboy方便多了(小编的感受).好了,现在我们就开始学习怎么使用Jmeter自身来录制脚本. 首先,打开Jmeter,在上面添加一个线程组,在该线程组下添加简单控制器.如下图所示: 接着,在工作台添加HTTP代理服

JMeter脚本录制

JMeter脚本录制有两种方法:第一种方法是通过服务器代理进行录制:第二种方法是借用Badboy工具录制: 方法一.通过服务器代理进行录制 1.  打开JMeter工具创建代理服务器: 首先在JMeter工具的工作区新建一个服务器代理 2.  设置代理服务器: 打开IE浏览器——Internet选项——连接——局域网设置 修改目标控制器信息 3.  启用录制 启动录制后在IE浏览器上所访问的网页以及在网页上的操作均会录制下来: 方法二.使用badboy软件录制: 1.打开badboy软件并录制