录制脚本只不过是我们日常工作中的一个小应用而已(对!就是玩儿!),只是为了能快速看到应用程序跑的逻辑及实现顺序。并够帮助测试人员,快速查出问题出现的节点。

而对于做有针对性的测试时,比如做某个接口的测试,建议大家还是自己去创建及组织脚本,不过录制的脚本可以拿来做参考,粘贴复制也是可以节省不少的工作量。

在JMeter中可以使用自身就带的HTTP代理服务器组件录制脚本,可以录制在WEB上的操作,也可以录制在手机App上的操作。

  • 录制在WEB上的操作时,需要设置浏览器的代理服务器。
  • 录制在手机App上的操作时,需要设置手机上的代理服务器。

下面就详细的介绍,使用HTTP代理服务器组件录制WEB脚本。

我们以一个电商项目为例,录制如下步骤:

  1. 登陆网站。
  2. 查看商品。
  3. 把商品加入购物车。
  4. 查看购物车。

1、测试计划内包含的元件

添加元件操作步骤

  1. 创建测试计划。
  2. 创建线程组:选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
  3. 在线程组中,添加配置原件“HTTP Cookie管理器”组件:选中“线程组”右键 —> 添加 —> 配置元件 —> HTTP Cookie管理器

    说明:如果录制的操作包括用户登录操作,则需要添加“HTTP Cookie管理器”,添加之后不需要任何配置,录制后,脚本中便保存用户登录的相关信息。
  4. 在测试计划下,添加非测试元件“HTTP代理服务器”组件:选中“测试计划”右键 —> 添加 —> 非测试元件 —> HTTP代理服务器
  5. HTTP代理服务器组件下,添加监听器“察看结果树”组件:选中“HTTP代理服务器”右键 —> 添加 —> 监听器 —> 察看结果树

最终测试计划中的元件如下:

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。

2、HTTP代理服务器的设置内容

HTTP代理服务器组件中,我们需要编辑:

  1. 端口:默认8888,一般使用默认即可。主要不能与本地其他服务的端口号冲突,否则启动不了。
  2. HTTPS Domains:我的理解就是,设置代理服务器的主机IP地址或者域名。因为在我们本地使用,一般就是localhost或者127.0.0.1即可,当然不填写也是可以的。(此填写的地址一定要能够连接外网)
  3. 设置目标控制器:也就是录制的组件存储到什么位置。这个一定要选,下图中选择了存储到目标线程组中。

配置完的界面内容,如下图所示:

3、设置浏览器的代理服务器

每个浏览器都可以设置服务器的代理,以Firefox浏览器为例。

点击右上角的设置 —> 选项 —> 常规 —> 最下面的网络设置,点击设置,就可以进入到代理服务器的设置页面了。

选要选中手动配置代理服务器,然后输入代理服务器的地址或者域名,还有端口号。

这里的配置,要和上面JMeter的HTTP代理服务器中的端口HTTPS Domains的配置要对应上。

这样的话,浏览器中的操作,会先发送到JMeter中的HTTP代理服务器,在通过网络进行传输。这样JMeter中就可以录制下我们的操作,生成脚本了。

如下图所示:

提示:一定要勾选,“也将此代理用于FTP和HTTPS”选项。

4、录制脚本

以上内容设置完毕后,在浏览器地址栏中输入要录制脚本的地址。

然后在JMeter中的HTTP代理服务器界面,点击启动按钮。

提示:在HTTP代理服务器界面点击“启动”时,Meter将生成自己的证书。证书生成可能需要一些时间,在此期间,GUI将无响应。证书生成完成后,GUI将显示一个弹出对话框,其中包含根CA证书的详细信息,证书有效期为7天。该证书需要由浏览器安装,以便接受JMeter生成的主机证书。

如下图所示:

关于配置证书,这里就不展开说明了。

之后开始在网站上进行操作,所有操作发出的请求,都会录制到JMeter脚本中。

操作完成之后,到JMeter的HTTP代理服务器中点击“停止”,然后将浏览器的代理设置恢复原样即可。

不恢复的话,会导致你无法使用浏览器访问外网。

如下图所示:

5、查看录制的脚本

在JMeter中我们可以看到已经记录了许多请求对应的信息,包括PHPjs.jpg.png.txt等请求。

如下图所示:

我们可以看到,我们只进行了简单的几步操作,却录制这么的请求。是因为JMeter录制很多非关键性的请求,这就需要我们进行一些优化。

录制脚本的优化有两个步骤:

  1. 在录制的时候,做一些过滤和排除操作。
  2. 在录制后的脚本中手动优化,删除不需要的组件,增加自己需要的组件。

    1)服务器名称或IP与目标网站不同的、无关的,可以删除。

    2)js/css/png/jpeg等这类请求删掉。

    3)没有传递任何数据的请求可以屏蔽掉,等流程能回放成功了,这些再删除。如果回放不成功,再一个一个打开,进行检查。

6、HTTP代理服务器的排除模式

在测试脚本中有一些录制的信息是没有任何作用的,所以我们在录制脚本的时候,就可以通过HTTP代理服务器的排除模式,排除一些不需要的请求信息,如cssgifpng等请求。

例如:

  • 在包含模式添加填上 .*\.jsp,只在请求JSP文件时录制脚本。

    这里通常都是设置JSP或者HTML,可以根据具体情况进行填写。
  • 在排除模式处填上.*\.js ,在请求js文件时不录制脚本。

    这里通常都是设置jsjpgpnggifcss等,这些类型文件请求都是不需要录制的。
  • 当然我们也可以点击添加建议排除按钮,会自动生成一个过滤的正则表达式。

如下图所示:

添加上这些时候,录制出来的脚本,多余的累赘会减少很多。

7、保存脚本

脚本录制完成后,需要进行脚本的保存。

把脚本保存到本地,可以分享给其他成员,进行查看、编辑、回放等操作。

以上就是使用JMeter代理服务器录制脚本的操作过程,记录一下,以备自己可以翻阅,也可以帮助其他人了解一下JMeter的这个功能。

『动善时』JMeter基础 — 48、使用JMeter自身代理录制测试脚本的更多相关文章

  1. 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求

    目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...

  2. 『动善时』JMeter基础 — 8、JMeter主要元件介绍

    目录 1.测试计划(Test Plan) 2.线程组 3.取样器(sampler) 4.逻辑控制器(Logic Controller) 5.配置元件(Config Element) 6.定时器(Tim ...

  3. 『动善时』JMeter基础 — 41、使用JMeter连接数据库(MySQL)

    目录 1.为什么要使用JMeter连接数据库 2.JMeter连接数据库的前提 3.JDBC连接配置组件界面介绍 4.JMeter连接数据库演示 (1)测试计划内包含的元件 (2)测试计划中添加链接数 ...

  4. 『动善时』JMeter基础 — 46、使用Badboy工具录制JMeter脚本

    目录 1.使用Badboy录制JMeter脚本 2.使用Badboy参数化配置 3.解决"当前页面的脚本发生错误"提示框 4.总结 1.使用Badboy录制JMeter脚本 打开B ...

  5. 『动善时』JMeter基础 — 2、JMeter的安装和启动

    1.安装Java环境 由于JMeter是纯Java的桌面应用程序,因此它的运行环境需要Java环境,即需要安装JDK或JRE.(也就是安装JDK环境) 步骤简要说明: 下载并安装JDK 配置环境变量 ...

  6. 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置

    目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...

  7. 『动善时』JMeter基础 — 22、JMeter中实现参数化(CSV)

    目录 1.参数化的定义 2.什么情况下需要用到参数化 3.JMeter实现参数化的方式 4.CSV数据文件设置界面详细说明 (1)CSV数据文件设置组件界面说明 (2)补充说明:Recycle on ...

  8. 『动善时』JMeter基础 — 23、JMeter中使用“用户自定义变量”实现参数化

    目录 1.用户自定义变量介绍 2.使用"用户自定义变量"实现参数化 (1)测试计划内包含的元件 (2)数据文件内容 (3)测试计划界面内容 (4)线程组元件内容 (5)CSV数据文 ...

  9. 『动善时』JMeter基础 — 24、JMeter中使用“用户参数”实现参数化

    目录 1.用户参数组件介绍 2.用户参数界面介绍 3.使用"用户参数"组件实现参数化 (1)测试计划内包含的元件 (2)线程组元件内容 (3)HTTP请求组件内容 (4)用户参数组 ...

随机推荐

  1. 记录数据库被攻击.md

    昨天的数据库还是正常的,早上想连接mysql,一直报错1045,最后才发现数据库被攻击了 navicat连接mysql疯狂报错1045 因为1045的报错,一般都是密码设置的问题,但是我怎么修改也没有 ...

  2. 03.14 ICPC训练联盟周赛,Preliminaries for Benelux Algorithm Programming Contest 2019

    A .Architecture 题意:其实就是想让你找到两行数的最大值,然后比较是否相同,如果相同输出'possible',不同则输出'impossible' 思路:直接遍历寻找最大值,然后比较即可 ...

  3. 使用find_if算法搜寻map的value

    // // main.cpp // map_find // // Created by PKU on 14-9-8. // Copyright (c) 2014年 PKU. All rights re ...

  4. C语言风格的 for 循环(SHELL的循环写法 已验证20200517)

    C语言风格的 for 循环 C语言风格的 for 循环的用法如下: for((exp1; exp2; exp3))do    statementsdone 几点说明: exp1.exp2.exp3 是 ...

  5. reboot 就是 poweroff 然后power on

    halt Shut down and halt the system poweroff Shut down and power-off the system reboot [ARG] Shut dow ...

  6. ActiveMQ FileServer漏洞(详细)

    半个月前,巡检时发现服务器出现不明进程,对其进行了处理,由于当时没有做详细记录,在这里把大致过程描述一下. 症状: ps命令发现出现几个不明进程, 1.于/tmp下运行的,名称随机的进程.占用CPU高 ...

  7. windows怎么访问linux的samba共享目录

    windows怎么访问linux的samba共享目录 听语音 原创 | 浏览:6976 | 更新:2018-07-31 13:20 | 标签:LINUX WINDOWS 1 2 3 4 5 6 7 分 ...

  8. JS轮播图(网易云轮播图)

    JS 轮播图 写在前面 最聪明的人是最不愿浪费时间的人.--但丁 实现功能 图片自动切换 鼠标移入停止自动播放,显示按钮 点击按钮,实现前后翻 鼠标移入小圆圈,可以跳转到对应图片 点击左右两侧图片部分 ...

  9. 【C++】禁用/启用笔记本键盘工具(含源码)

    目录 前言 简单介绍注册表 (1)根键 (2)子键 (3)键值项 操作注册表的几个API函数 (1)打开一个键 (2)查询某一个键值 (3)设置一个键值 (4)新建指定键 (5)删除注册表指定键下的值 ...

  10. 数据流分析软件SQLFlow的工作原理

    SQLFlow是一个可视化的在线处理SQL对象依赖关系的工具,只需要上传你的SQL脚本,它可以自动分析SQL里的数据对象,包括database.schema.table.view.column.pro ...