『动善时』JMeter基础 — 49、使用JMeter自身代理录制APP测试脚本
录制脚本只不过是我们日常工作中的一个小应用而已,只是为了能快速看到应用程序跑的逻辑及实现顺序。并够帮助测试人员,快速查出问题出现的节点。
而对于做有针对性的测试时,比如做某个接口的测试,建议大家还是自己去创建及组织脚本,不过录制的脚本可以拿来做参考,粘贴复制也是可以节省不少的工作量。
在JMeter中可以使用自身就带的HTTP代理服务器组件录制脚本,可以录制在WEB上的操作,也可以录制在手机App上的操作。
- 录制在WEB上的操作时,需要设置浏览器的代理服务器。
- 录制在手机App上的操作时,需要设置手机上的代理服务器。
下面就详细的介绍,使用HTTP代理服务器组件录制App脚本。
需求:录制在安卓模拟器中,使用购物软件,记录购物的操作。
同理,我们可以录制各种App上的操作。
1、测试计划内包含的元件
添加元件操作步骤:
- 创建测试计划。
- 创建线程组:
选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组。 - 在线程组中,添加配置原件“HTTP Cookie管理器”组件:
选中“线程组”右键 —> 添加 —> 配置元件 —> HTTP Cookie管理器。
说明:如果录制的操作包括用户登录操作,则需要添加“HTTP Cookie管理器”,添加之后不需要任何配置,录制后,脚本中便保存用户登录的相关信息。(本示例中没有登陆操作,可以不添加) - 在测试计划下,添加非测试元件“HTTP代理服务器”组件:
选中“测试计划”右键 —> 添加 —> 非测试元件 —> HTTP代理服务器。 - 在HTTP代理服务器组件下,添加监听器“察看结果树”组件:
选中“HTTP代理服务器”右键 —> 添加 —> 监听器 —> 察看结果树。
最终测试计划中的元件如下:

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。
2、HTTP代理服务器的设置内容
在HTTP代理服务器组件中,我们需要编辑:
- 端口:默认8888,一般使用默认即可。主要不能与本地其他服务的端口号冲突,否则启动不了。比如说 Fiddler已用的端口冲突。
HTTPS Domains:我的理解就是,设置代理服务器的主机IP地址或者域名。因为在我们本地使用,一般就是localhost或者127.0.0.1即可,当然不填写也是可以的。(此填写的地址一定要能够连接外网)- 设置目标控制器:也就是录制的组件存储到什么位置。这个一定要选,下图中选择了存储到目标线程组中。
配置完的界面内容,如下图所示:

3、设置手机的代理服务器
在手机上设置代理服务器的步骤:
(1)进入手机代理服务器配置界面
设置 —> 无线和网络 —> WLAN,点击进入。
在无线网名称上进行长按操作,会出现如下列表,选择修改网络。

然后选择高级选项 —> 点击代理后边的下拉三角,选择手动。

(2)配置手机代理服务器
代理服务器主机名:填写自己本地电脑的IP地址。
代理服务器端口:填写JMeter的HTTP代理服务器中设置的端口号,也就是8888。
如下图所示:

提示一下,本地主机IP地址查看方式:
在电脑打开CMD命令,输入ipconfig命令。
因为我们是用无线网进行连接的,所以选择无线局域网这块网卡。

4、录制脚本
以上内容设置完毕后,在JMeter中的HTTP代理服务器界面,点击启动按钮,开始录制。
提示:在HTTP代理服务器界面点击“启动”时,Meter将生成自己的证书。证书生成可能需要一些时间,在此期间,GUI将无响应。证书生成完成后,GUI将显示一个弹出对话框,其中包含根CA证书的详细信息,证书有效期为7天。该证书需要在手机中安装,以便接受JMeter生成的主机证书。
如下图所示:
关于配置证书,这里就不展开说明了。直接点击
OK即可。
然后打开手机中的应用,进行购物操作,JMeter中就已经开始录制脚本了。

操作完成之后,到JMeter的HTTP代理服务器中点击“停止”,然后将手机的代理设置恢复原样即可。
不恢复的话,会导致你无法使用手机访问外网。
如下图所示:

5、查看录制的脚本
在JMeter中我们可以看到已经记录了许多请求对应的信息,包括PHP、js、.jpg、.png等请求。
如下图所示:

我们可以看到,我们只进行了简单的几步操作,却录制这么的请求。是因为JMeter录制很多非关键性的请求,如一些图片的请求,这就需要我们进行一些优化。
录制脚本的优化有两个步骤:
- 在录制的时候,做一些过滤和排除操作。
- 在录制后的脚本中手动优化,删除不需要的组件,增加自己需要的组件。
1)服务器名称或IP与目标网站不同的、无关的,可以删除。
2)js/css/png/jpeg等这类请求删掉。
3)没有传递任何数据的请求可以屏蔽掉,等流程能回放成功了,这些再删除。如果回放不成功,再一个一个打开,进行检查。
6、HTTP代理服务器的排除模式
在测试脚本中有一些录制的信息是没有任何作用的,所以我们在录制脚本的时候,就可以通过HTTP代理服务器的排除模式,排除一些不需要的请求信息,如css、gif、png等请求。
例如:
- 在包含模式添加填上
.*\.jsp,只在请求JSP文件时录制脚本。
这里通常都是设置JSP或者HTML,可以根据具体情况进行填写。 - 在排除模式处填上
.*\.js,在请求js文件时不录制脚本。
这里通常都是设置js、jpg、png、gif、css等,这些类型文件请求都是不需要录制的。 - 当然我们也可以点击添加建议排除按钮,会自动生成一个过滤的正则表达式。
如下图所示:

添加上这些时候,录制出来的脚本,多余的累赘会减少很多。
7、保存脚本
脚本录制完成后,需要进行脚本的保存。
把脚本保存到本地,可以分享给其他成员,进行查看、编辑、回放等操作。
以上就是使用JMeter代理服务器录制脚本的操作过程,记录一下,以备自己可以翻阅,也可以帮助其他人了解一下JMeter的这个功能。
8、注意坑点
- 我们的手机与JMeter所在的电脑必须在同一个WiFi下!!否则会失败!
- JMeter启动有两种方式,一种是用
ApacheJMeter.jar文件启动,一种是用jmeter.bat文件启动。那么请一定采用Jmeter.bat这种方式来启动 JMeter ,否则无法进行脚本的录制。 - IOS手机需要安装证书。
『动善时』JMeter基础 — 49、使用JMeter自身代理录制APP测试脚本的更多相关文章
- 使用JMeter代理录制app测试脚本
准备条件:JMeter.手机app 上一篇介绍过录制Web测试脚本的方式有两种,使用代理和使用第三方工具.本篇录制app测试脚本只讨论使用代理的方式,其他方式以后有机会再补充.其实Web和app使用代 ...
- 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求
目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...
- 『动善时』JMeter基础 — 8、JMeter主要元件介绍
目录 1.测试计划(Test Plan) 2.线程组 3.取样器(sampler) 4.逻辑控制器(Logic Controller) 5.配置元件(Config Element) 6.定时器(Tim ...
- 『动善时』JMeter基础 — 41、使用JMeter连接数据库(MySQL)
目录 1.为什么要使用JMeter连接数据库 2.JMeter连接数据库的前提 3.JDBC连接配置组件界面介绍 4.JMeter连接数据库演示 (1)测试计划内包含的元件 (2)测试计划中添加链接数 ...
- 『动善时』JMeter基础 — 46、使用Badboy工具录制JMeter脚本
目录 1.使用Badboy录制JMeter脚本 2.使用Badboy参数化配置 3.解决"当前页面的脚本发生错误"提示框 4.总结 1.使用Badboy录制JMeter脚本 打开B ...
- 『动善时』JMeter基础 — 2、JMeter的安装和启动
1.安装Java环境 由于JMeter是纯Java的桌面应用程序,因此它的运行环境需要Java环境,即需要安装JDK或JRE.(也就是安装JDK环境) 步骤简要说明: 下载并安装JDK 配置环境变量 ...
- 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置
目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...
- 『动善时』JMeter基础 — 16、JMeter配置元件【HTTP信息头管理器】
目录 1.用于演示的项目说明 2.测试计划内包含的元件 3.HTTP请求界面内容 4.查看脚本执行结果 5.添加请求头信息(HTTP信息头管理器) 6.优先级说明 7.补充:常见请求头信息 JMete ...
- 『动善时』JMeter基础 — 22、JMeter中实现参数化(CSV)
目录 1.参数化的定义 2.什么情况下需要用到参数化 3.JMeter实现参数化的方式 4.CSV数据文件设置界面详细说明 (1)CSV数据文件设置组件界面说明 (2)补充说明:Recycle on ...
随机推荐
- 5分钟让你理解K8S必备架构概念,以及网络模型(上)
写在前面 在这用XMind画了一张导图记录Redis的学习笔记和一些面试解析(源文件对部分节点有详细备注和参考资料,欢迎关注我的公众号:阿风的架构笔记 后台发送[导图]拿下载链接, 已经完善更新): ...
- Java方法区的理解
方法区逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩. 但对于HotSpotJVM而言,方法区还有一个别名叫做Non-Heap,目的就是要和堆分开 所以方法区看作是一块 ...
- CSS元素的盒类型
一.css简介 CSS是Cascading Style Sheet的缩写,中文称层叠样式表.HTML中的元素都有着自己的属性和默认样式,CSS控制HTML内标签显示不同布局样式.控制对应html标签颜 ...
- [转载]好好好centos7 安装 KVM
centos7 安装 KVM 2019-04-03 09:58:24 34 0 0 一.基础环境准备 centos7.X 最小环境安装 关闭selinux # vi /etc ...
- 解决 Ubuntu 无法使用 root 用户进行 ssh 远程登陆
解决 Ubuntu 无法使用 root 用户进行 ssh 远程登陆 操作系统 Ubuntu 20.04.2 LTS 一.修改sshd配置文件 //打开 /etc/ssh/sshd_config 配置文 ...
- 资源限制 ( resource limit 或 rlimit ),是 Linux 内核控制 用户 或 进程 资源占用的机制。
###### https://learn-linux.readthedocs.io/zh_CN/latest/administration/kernel/rlimit.html ########### ...
- Linux 系统优化-workstation实践
Linux 系统优化 关闭SELinux [root@workstation ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/seli ...
- ubuntu中安装visual studio code-(转载)
在Ubuntu中安装Visual Studio Code 编译自:http://itsfoss.com/install-visual-studio-code-ubuntu/ 作者: Abhishek ...
- 性能调优命令之jstack
jstack是java虚拟机自带的一种线程堆栈跟踪工具. /opt/java8/bin/jstack Usage: jstack [-l] <pid> (to connect to run ...
- GO学习-(24) Go语言操作Redis
Go语言操作Redis 在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用. Redis介绍 Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据 ...
