Jmeter脚本录制方法(二)——手工编写脚本(jmeter与fiddler结合使用)
jmeter脚本录制方法可以分三种,前几天写的一篇文章中,已介绍了前两种,今天来说下第三种,手工编写脚本,建议使用这一种方法,虽然写的过程有点繁琐,但调试脚本比前两者方式都要便捷。
首先来看下三种方式的比较吧,不然看不出什么。
三种方式的优劣
badboy
jmeter 代理录制
手工编写
手工编写脚本
一般通过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环境完整
jmeter环境要搭建好,搭建环境步骤在这篇帖子中已有详解:http://www.cnblogs.com/hong-fithing/p/7640014.html
录制步骤
注意:先把请求添加进去,再去调试脚本。
第一步:添加线程组
打开jmeter,在测试计划中添加一个线程组,如下:
第二步:添加HTTP请求
在线程组中添加一个HTTP请求,HTTP请求添加方法: 线程组 -->右键添加 -->Sampler -->HTTP请求如下:
第三步:添加HTTP请求默认值
因为默认值设置好后,就对HTTP请求有很大的方便,详细见下:
将协议、ip或服务器名称、端口号、字符格式设置好,在之后的http请求就不用设置了,相当于设置好了一个全局的默认值:
需要注意的是:http协议的端口是80,https协议的端口是443,别混淆了。
在http默认值中的Adcanced下设置代理服务,这样就可以在fiddler中抓取到该脚本请求:
如下:
第四步:手工写脚本
手工编写脚本注意事项:不要多空格也不要少空格,符号也不要掉,细心会给自己调试脚本节省很多力气。
论坛登录,使用fiddler抓取到四个请求
如下:
1.编写第一个接口
将第一个请求的请求头复制到jmeter中的http请求中
由于刚才设置了HTTP请求默认值,所以现在在HTTP请求中,协议,ip,端口号都不用填写了,是不是很方便了。
2.编写第二个接口
点击第二个请求,post请求,注意有请求参数:
参数查看如下:
在jmeter中设置如下:
要设置请求头,第二个请求的请求头如下:
添加HTTP请求头管理器:
在登录下添加HTTP请求头管理器,设置如下,要添加在登录下,这是作用域的问题,这样设置只对登录请求有效,在外面的话,就是对全局有效了。此处需要注意。添加请求头,是为了能让服务器认为用软件发出的请求也是浏览器发出的,不会拒绝请求。
3.编写第三个接口
点击第三个请求,查看请求头:
有参数值:
在jmeter中设置如下:
4.编写第四个接口
点击第四个请求,查看请求头:
在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相关的文章,有错之处欢迎指正。
Jmeter脚本录制方法(二)——手工编写脚本(jmeter与fiddler结合使用)的更多相关文章
- Jmeter脚本录制方法(二)手工编写脚本(jmeter与fiddler结合使用)
jmeter脚本录制方法可以分三种,前几天写的一篇文章中,已介绍了前两种,今天来说下第三种,手工编写脚本,建议使用这一种方法,虽然写的过程有点繁琐,但调试脚本比前两者方式都要便捷. 首先来看下三种方式 ...
- Jmeter脚本录制方法(一)——分别使用Badboy录制和Jmeter自带的代理服务器录制
Jmeter录制方式分三种,分别是:使用Badboy录制.Jmeter自带的代理服务器录制和手工录制,今天先介绍前两种录制方法. Badboy录制 Badboy是用C++开发的动态应用测试工具, 其拥 ...
- 【Jmeter自学】Jmeter脚本录制(二)
==================================================================================================== ...
- Jmeter脚本录制方法(一)分别使用Badboy录制和Jmeter自带的代理服务器录制
Jmeter录制方式分三种,分别是:使用Badboy录制.Jmeter自带的代理服务器录制和手工录制,今天先介绍前两种录制方法. Badboy录制 Badboy是用C++开发的动态应用测试工具, 其拥 ...
- Loadrunner11.0 录制手机App脚本的方法二
lr11安装一个移动补丁以后,就可以支持抓包文件直接转换为http/html协议的脚本.下面简单说一下过程. 1.工作思路:手机连接可上外网wifi,在手机wifi中设置本机ip的网络地址,然后在本机 ...
- LoadRunner测试下载功能点脚本(方法二)
在上一篇<LoadRunner下载功能点脚本(方法一)>中,实现的脚本仅是录制下载功能点的脚本,现在性能需求的场景更改如下: 性能需求:对系统某页面中,点击下载并将下载文件保存到本地电脑的 ...
- BadBoy+JMeter来录制和运行Web测试脚本
参考: http://jingyan.baidu.com/article/5d368d1ef548d43f61c05761.html http://www.51testing.com/html/00/ ...
- 如何为Apache JMeter开发插件(二)—第一个JMeter插件
文章内容转载于:http://lib.csdn.net/article/softwaretest/25700,并且加上个人一些截图 本篇将开启为JMeter开发插件之旅,我们选择以Function(函 ...
- Jmeter之录制脚本(二)
上一节已经已经介绍过Jmeter的安装,对于web测试的话,经常会用到一些脚本去执行某些功能,也就是所谓的半自动化测试, 对于不懂代码的童鞋来说,脚本是一个很头疼的概念,badboy的录制是一个对于刚 ...
随机推荐
- [转载]Linux shell中的竖线(|)——管道符号
原文地址:Linux shell中的竖线(|)--管道符号作者:潇潇 管道符号,是unix一个很强大的功能,符号为一条竖线:"|". 用法: command 1 | command ...
- 跨浏览器tab页的通信解决方案尝试
目标 当前页面需要与当前浏览器已打开的的某个tab页通信,完成某些交互.其中,与当前页面待通信的tab页可以是与当前页面同域(相同的协议.域名和端口),也可以是跨域的. 要实现这个特殊的功能,单单使用 ...
- JS学习五(js中的事件)
[JS中的事件分类] 1.鼠标事件 click/bdlclick/onmouseover/onmouseout 2. HTML事件 onload/onscroll/onsubmit/onchange/ ...
- Java程序设计第四周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...
- 201521123059 《Java程序设计》第二周学习总结
1.本周总结 本周老师讲了和自己掌握了以下内容: (1).三元条件运算符 表达式1?表达式2:表达式3: (2). 字符串String类 String的不可变优点:编译器可以让字符串共享,效率高.但是 ...
- Shiro第三篇【授权、自定义reaml授权】
Shiro授权 上一篇我们已经讲解了Shiro的认证相关的知识了,现在我们来弄Shiro的授权 Shiro授权的流程和认证的流程其实是差不多的: Shiro支持的授权方式 Shiro支持的授权方式有三 ...
- Hibernate第四篇【集合映射、一对多和多对一】
前言 前面的我们使用的是一个表的操作,但我们实际的开发中不可能只使用一个表的-因此,本博文主要讲解关联映射 集合映射 需求分析:当用户购买商品,用户可能有多个地址. 数据库表 我们一般如下图一样设计数 ...
- 实现一个简单的虚拟DOM
现在的流行框架,无论React还是Vue,都采用虚拟DOM. 好处就是,当我们数据变化时,无需像Backbone那样整体重新渲染,而是局部刷新变化部分,如下组件模版: <ul class=&qu ...
- 一款简洁而强大的前端框架JQUery—动画效果及剪刀石头布小游戏
jQuery是什么? jQuery是一个快速.简洁的JavaScript框架,它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作.事件处理.动画 ...
- jQuery自定义插件--banner图滚动
前言 jQuery是一个功能强大的库,提供了开发JavaScript项目所需的所有核心函数.很多时候我们使用jQuery的原因就是因为其使用插件的功能,然而,有时候我们还是需要使用自定义代码来扩展这些 ...