1.简介

  LoadRunner的录制功能让性能测试脚本编写对于不懂代码的人变成了一件容易上手的事,但是由于LoadRunner收费高昂,庞大,一般企业很少用,除非必须使用。Jmeter作为性能测试中的王者也少不了提供录制功能。Jmeter的录制除了自身提供的HTTP代理方式进行录制的原理是解析网络数据包,按HTTP协议包装成Http Request、Http Response等对象,这些对象就是我们可以清楚方便认识的东西。

2.Jmeter配置代理进行录制

2.1浏览器配置代理

1.打开浏览器(宏哥这里以IE11为例)顺着右上角 -【Internet选项】-【连接】-【局域网设置】进入如图所示页面:

2.在“代理服务器”中按上图进行设置,可以把“localhost”换成127.0.0.1,8080换成你想设置的端口,主要不要与别的端口产生冲突,如果有,请换成别的端口,一般4位的端口冲突的机会比较少;配置好以后点击“确定”按钮。

2.2Jmeter中配置代理

1.首先在JMeter中添加一个线程组,如下图所示:

2.添加HTTP代理服务器节点,如下图所示:

3.设置代理服务器,端口号设置就是我们在浏览器中设置的端口,如下图所示:

4.目标控制器:决定将来我们录制的脚本放在那个目录下(测试计划是一颗目录树,这个目录就是树中的一个节点)。你可以在【测试计划】-【线程组】下面添加节点,然后指定脚本放在此节点,宏哥在线程组增加了【简单控制器】节点,然后就可以在“目标控制器”处选择到它。如下图所示:

5.分组:录制脚本的时候,会增加很多节点,这些节点我们可以给它分个组,方便我们查看和管理。对于http请求我们可以把每一个URL看成一个组,这里可以更好地理解。分组有如下选项,如下图所示:

选项参数说明:

(1)不对样本分组:罗列出录制到的所有http请求。

(2)在组间添加分隔:加入以分割线命名的简单控制器。

(3)每个组放入一个新的控制器:每个URL产生的请求放在一个 控制器下。

(4)只存储每个组的第一个样本:我们知道一个URL产生的HTTP请求可能不止一个,一张图片、一个样式都会是一个HTTP请求,录制时将会产生很多的HTTP请求,但有时候测试我们需要考虑缓存,实际上一些图片不用每次都去下载,我们也不关心这些图片产生的负载,另外对于互联网多数会用的CDN等图库来存储这些图片、CSS等静态资源。所以理论上我们可以在脚本中忽略它,但是我们必须根据实际情况来选择是否忽略。因此如果忽略,我们就可以选择此项,只录制产生动态数据的HTTP请求。

(5)每个请求放入一个新的事务控制器:宏哥用大白话解释就是每个URL的请求放入一个事务中,不管它有多少HTTP请求,只要是这个URL请求产生的。

其他界面参数说明:

(1)记录HTTP信息头:把Header头信息也录制下来。

(2)添加断言:这个大家都知道,就是添加检查点,在录制的时候加入空的检查点,后续我们自己填写断言(检查)规则。

(3)Regex matching“检查点用正则表达式来匹配内容。

(4)Http Sampler settings:与“http请求”设置方法一样。

2.3开始录制

1.全部配置好以后,在【HTTP代理控制器】中按下【启动】。然后子啊浏览器中浏览Web页面(你要测试的功能),就可以录制下这些HTTP请求。录制状态下的“启动”按钮是灰色的不可以点击,非录制状态下的“启动”按钮可以点击。

2.在录制时每个js、png、swf及动态请求(需要服务器动态取数据)都会录制下来。所以我们选择“只存储每个组的第一个样本”,但这样通常优惠有动态请求被漏掉,所以HTTP代理来进行录制还不是很高效,因此我们换一个工具(Badboy)来录制,甚至有能力的话,我们直接手写脚本(宏哥推荐这种方式)。

注意:
现在越来有多的系统或者网站的前端架构使用动态加载的方式(Ajax+JS+JSON)来处理,对于这种应用,我们使用JMeter或者LoadRunner进行录制都不能完成任务。不相信的童鞋们可以录制一下去哪儿官网。

3.点击启动后,会提示:Jmeter导入https安全证书,启动Jmeter的HTTP代理服务器,会在Jmeter安装路径的bin目录下生成一个安全证书文件:ApacheJMeterTemporaryRootCA.crt。如下图所示:

4.在Jmeter菜单选项-> SSL管理器,导入jmeter的bin目录下的安全证书文件ApacheJMeterTemporaryRootCA.crt。

5.点击SSL管理器,查看导入的证书,如下图所示:

6.在JMeter的bin目录下,找到证书双击打开证书,将证书导入浏览器中,如下图所示:

7.代理服务器重新启动后,会打开如下所示界面,Recorder:Trnsactions Control。此时开始录制脚本,在浏览器中输入要访问的网址,进行相关操作。这里以度娘为例,录制访问度娘,然后查询:北京-宏哥的脚本。

这个弹框用处,为了方便快捷的填写录制时,需要编写的事务名称所使用;不需要每次去打开jmeter的界面去修改事务名称,大家可以忽略它。

8.在浏览器输入度娘网址后,进入度娘后,输入框输入:北京-宏哥,点击查询。查看Jmeter线程组下的录制控制器是否已经有请求产生。若产生请求,录制脚本成功。如下图所示:

9.录制成功后,请求中也会记录发送的信息,如服务器名称、端口号、路径、和请求时的参数等,如下图所示:

10.选中“录制控制器”,右键添加“观察结果树”,运行脚本,对所录制的脚本进行调试,这里是验证录制登录成功的脚本,如下图所示:

11.精简脚本,对除访问度娘,查询北京-宏哥以外的请求进行删除。如下图所示,在察看结果树可以看到运行后的脚本响应,在响应体中看到<百度一下>,代表访问成功,看到北京-宏哥的查询结果,代码查询成功,至此录制完成。关闭Jmeter代理服务器。如下图所示:

查询北京-宏哥请求的结果,如下图:

3.小结

1.可能有些同学遇到Jmeter录制前访问正常,设置代理却无法访问。

根据宏哥的分析可能性有几种,一类是工具本身的代理进程未启动,一类是端口被占用,另一类是证书问题。

可能性最大的都是证书问题,http的请求可能还好,https的请求就可能涉及到证书。安装bin目录下的证书即可(具体证书安装的方法可以问一下度娘,不过也简单类似傻瓜式的安装软件下一步,下一步就可以了)。其实按照宏哥的步骤应该是没有什么大问题的。

2.录制完以后,不能正常的访问互联网,注意要关闭浏览器的代理后,就可以正常访问了。

·好了,今天就分享到这里,不会写脚本的童鞋们这次有口福了!!!

Jmeter(二十七) - 从入门到精通 - Jmeter Http协议录制脚本(详解教程)的更多相关文章

  1. Jmeter(二十) - 从入门到精通 - JMeter监听器 -下篇(详解教程)

    1.简介 监听器用来监听及显示JMeter取样器测试结果,能够以树.表及图形形式显示测试结果,也可以以文件方式保存测试结果,JMeter测试结果文件格式多样,比如XML格式.CSV格式.默认情况下,测 ...

  2. Jmeter(二十一) - 从入门到精通 - JMeter断言 - 上篇(详解教程)

    1.简介 最近由于宏哥在搭建自己的个人博客可能更新的有点慢.断言组件用来对服务器的响应数据做验证,常用的断言是响应断言,其支持正则表达式.虽然我们的通过响应断言能够完成绝大多数的结果验证工作,但是JM ...

  3. Jmeter(二十三) - 从入门到精通 - JMeter函数 - 上篇(详解教程)

    1.简介 在性能测试中为了真实模拟用户请求,往往我们需要让提交的表单内容每次都发生变化,这个过程叫做参数化.JMeter配置元件与前置处理器都能帮助我们进行参数化,但是都有局限性,为了帮助我们能够更好 ...

  4. Jmeter(二十六) - 从入门到精通 - 搭建开源论坛JForum(详解教程)

    1.简介 今天这篇文章主要是给大家讲解一下,如何部署测试环境,这里宏哥部署一个开源测论坛,后边的文章中会用到这个论坛,并且也看到童鞋们在群里讨论如何在开发将测试包发给你以后,你如何快速地部署测试环境. ...

  5. Jmeter(十六) - 从入门到精通 - JMeter前置处理器(详解教程)

    1.简介 前置处理器是在发出“取样器请求”之前执行一些操作.如果将前置处理器附加到取样器元件,则它将在该取样器元件运行之前执行.前置处理器最常用于在取样器请求运行前修改其设置,或更新未从响应文本中提取 ...

  6. Jmeter(十八) - 从入门到精通 - JMeter后置处理器 -下篇(详解教程)

    1.简介 后置处理器是在发出“取样器请求”之后执行一些操作.取样器用来模拟用户请求,有时候服务器的响应数据在后续请求中需要用到,我们的势必要对这些响应数据进行处理,后置处理器就是来完成这项工作的.例如 ...

  7. SaltStack 入门到精通第二篇:Salt-master配置文件详解

    SaltStack 入门到精通第二篇:Salt-master配置文件详解     转自(coocla):http://blog.coocla.org/301.html 原本想要重新翻译salt-mas ...

  8. 《手把手教你》系列技巧篇(四十七)-java+ selenium自动化测试-判断元素是否显示(详解教程)

    1.简介 webdriver有三种判断元素状态的方法,分别是isEnabled,isSelected 和 isDisplayed,其中isSelected在前面的内容中已经简单的介绍了,isSelec ...

  9. Jmeter(十七) - 从入门到精通 - JMeter后置处理器 -上篇(详解教程)

    1.简介 后置处理器是在发出“取样器请求”之后执行一些操作.取样器用来模拟用户请求,有时候服务器的响应数据在后续请求中需要用到,我们的势必要对这些响应数据进行处理,后置处理器就是来完成这项工作的.例如 ...

随机推荐

  1. 洛谷 P2503 [HAOI2006]均分数据 随机化贪心

    洛谷P2503 [HAOI2006]均分数据(随机化贪心) 现在来看这个题就是水题,但模拟赛时想了1个小时贪心,推了一堆结论,最后发现贪心做 不了, 又想了半个小时dp 发现dp好像也做不了,在随机化 ...

  2. Qlik Sense学习笔记之插件开发

    date: 2019-05-06 13:18:45 updated: 2019-08-09 15:18:45 Qlik Sense学习笔记之插件开发 1.开发前的基础工作 1.1 新建插件 dev-h ...

  3. Linux常用操作命令大全

    0.新建操作:1.查看操作    2.删除操作 3.复制操作    4.移动操作:5.重命名操作: 6.解压压缩操作    7.上传文件工具    8.ln.file和touch命令 9.查找操作命令 ...

  4. pandas dataframe 时间字段 diff 函数

    pandas pandas 是数据处理的利器,非常方便进行表格数据处理,用过的人应该都很清楚,没接触的可以自行查阅pandas 官网. 需求介绍 最近在使用 pandas 的过程中碰到一个问题,需要计 ...

  5. selenium中的三种等待方式

    1.强制等待,采用的time.sleep,然后后面加上要等待的时间: 2.隐性等待implicitly_wait,隐性等待设定后,会对之后的所有代码生效,会在设定的时间之内,不停的去查找元素,如果找到 ...

  6. python机器学习TensorFlow框架

    TensorFlow框架 关注公众号"轻松学编程"了解更多. 一.简介 ​ TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运 ...

  7. .netcore实现jwt身份验证

    前言 http协议本身是一种无状态的协议.所以客户端的每次请求,服务端是不清楚其身份的,需要客户端每次都要将身份信息传入,服务进行验证,才能达到安全验证的目的. 传统的Web用户验证:1.客户端传入用 ...

  8. 浅谈querySelector和getElementById之间的区别

    前言: 最近学到前端一些知识,看到很多视频上许多老师都用的是querySelector而部分老师用的是getElementById,我就很疑惑,这两有啥区别,都是选择器,于是百度了一下明白了,quer ...

  9. ubuntu下安装nginx -php

    mysql : sudo apt-get install mysql-server mysql-client nginx: sudo apt-get install nginx安装Nginx稳定版本 ...

  10. Python - 生成 requirement.txt 文件

    前言 Python项目中,一般都会有一个 requirements.txt 文件 这个文件主要是用于记录当前项目下的所有依赖包及其精确的版本号,以方便在一个新环境下更快的进行部署 如何生成 requi ...