JMETER工具:以录制手机app为例

JMETER工具:以录制手机app为例子

  • JMETER安装和环境配置
  1. pc需要安装jdk,并进行jdk的环境配置,安装好jdk并配置好后,通过命令行输入java –version出现以下界面就表示安装成功:

对应的jdk版本不可太低,一般jmeter3.0的对应jdk1.7jmeter4.0对应jdk1.8以上,否者启用jmeter也会报错。

  1. 拿到jmeter压缩包后解压,解压之后记住解压的位置,然后配置jmeter环境变量:
  1. 计算机---->右键,属性---->高级系统设置---->高级---->环境变量
  2. 新建系统变量

变量名:JMETER_HOME
变量值:JMETER的解压地址,我的地址为 D:\project\apache-jmeter-4.0

3)编辑系统变量CLASSPATH

变量名:CLASSPATH 变量值:在原来的后面添加 :
;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar

  1. 启动JMETER:

找到Jmeter解压路径下的bin文件中的jmeter.bat 文件,双击,此时会弹出两个界面,一个是命令窗口,一个是JMeter窗口,意味着JMeter已经安装成功了。如下图所示:

  1. 界面改为中文:

  • 录制手机app脚本
  1. 先这样

  1. 再这样

  1. 配置http代理服务器:Global Settings下面的端口配置:8887(端口自定义,随便输),HTTPS Domains配置:192.168.30.239(本机IP),目标控制器配置:测试计划>线程组

  1. 手机上的设置:
  1. 手机连接到与pc端同一个的网络中,在手机网络设置上面设置代理服务器为手动,主机名为pcIP地址192.168.10.115,端口为同一个端口8887;
  2. 把pc端JMETER文件中bin文件中的证书文件安装到手机上:

  1. http代理服务器—启动—OK:

启动成功(开始录制):

在手机上进行app操作,便可以在线程组下看到一些文件,这些文件便是抓到的请求。在手机app操作结束后,一定要停止http代理服务器,否则会一直抓包,线程组中便会出现许多无用的请求。

例如我在手机浏览器上百度了我自己的名字:

  • 优化脚本

录制脚本前:HTTP代理服务器--选择requestes Filtering—选择排除模式—点击add suggested Excludes(添加建议排除):

录制脚本后:

  1. 没有传递任何数据的请求可以禁用掉;
  2. 与目标网站无关域名请求可以禁用掉;
  3. js/css/png/jpeg等这类请求禁用掉;

  • 脚本参数化

以下举一些简单例子:

1.利用Csv数据文件设置文档进行s-47脚本的参数化

新建txt文件进行导入,设置变量名为word

Txt文件为

在以下脚本中设置变量,此脚本为打开手机上的百度浏览器,进行输入搜索,word的值为输入搜索的值,这里导入了txt文件进行设置,需要用到 ${ 变量 } 的格式来进行设置参数,在这里由于csv的变量为word,所以这里的值为 ${word},这样脚本便可以对txt中的值进行输入搜索

接下来在线程组中设置循环次数为5次,因为txt中有5个值,

选择察看结果树,点击运行,可以看到录制的脚本运行了5次,分别查看5次s-47脚本的响应结果,完成了对zhihu、douyu、huya、pantum、china分别进行了搜索

2.利用函数助手进行参数化

s-41脚本为打开浏览器进行输入搜索。打开函数助手后,选择一个随机生成数字函数,随机生成1-9之间的数字,点击生成,生成一个字符串,复制到s-41脚本参数设置中,修改脚本参数中的word的值为这个字符串

线程组设置循坏5次,察看结果树点击运行,每次脚本运行都相当于在浏览器中输入一个随机生成的1-9之间的数字,然后进行搜索。图中为在浏览器中输入4进行搜索

  • 脚本回放/测试结果查看
  1. 查看测试结果:

添加监听器(察看结果树和聚合报告)查看测试结果:

1)察看结果树:以树形结构展示每个接口请求的测试结果,红色代表失败,绿色代表成功:

2)聚合报告:接口响应时间、吞吐量、通过率等

  1. 脚本联调与回放:

1)、回放脚本,查看脚本是否跑成功(如何去定义这个脚本是否成功?查看结果树还是app结果?)

2)、回放不成功查看每个请求的参数,那些是我们手动填写那些不是?

3)、从包含非手动填写数据的请求的前几个请求的返回结果里找数据(为何)

4)、利用正则表达式或JSONPATH正则表达式去获取数据,并传递给第二步的请求参数

5)、多次回放,多次修改并联调,直至脚本顺利通过

  • Jmeter抓包出现乱码问题

Jmeter在抓取app请求时,抓取到的数据出现乱码,解决方案有常见以下2种:

  1. 修改JMeter,bin文件夹下的jmeter.properties文件,修改以下字段,将sampleresult.default.encoding字段修改为UTF-8.修改后重新启动JMeter;

https://img-blog.csdn.net/20170505104246108?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRGF4aWFMZWVTdXBlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

  1. 增加后置处理器Bean Shell PostProcessor,添加代码,prev.setDataEncoding="utf-8"

  • app接口测试

使用工具:

  FiddlerJmeter

测试步骤:

1.确认接口

  从开发人员那里获取接口文档,接口文档应该包括完整的功能接口、接口请求方式、接口请求URL、接口请求参数、接口返回参数。

  如果当前项目没有接口文档,则可以使用fiddlerAPP进行抓包确认。

  在手机上对APP进行操作,然后在Fiddler中可以抓取对应的网络交互信息(一个功能中可能设计多个接口的交互)。在抓取的信息中可以看到接口请求方式、接口请求URL、接口请求参数、接口返回参数。

2.Jmeter中编写测试脚本

1)在测试计划中添加一个线程组。

可以将线程组的名称改成测试项目的名称。

https://img-blog.csdn.net/20160218090826966?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

在性能测试时可以通过配置线程属性中的参数来控制并发用户数:

线程数:虚拟用户数,即并发数,一个线程表示一个虚拟用户;

Ramp-Up 时间:所有线程启动的时间,单位s。通过这个参数可以设置每个线程间的启动间隔,防止给电脑造成太大性能压力;

循环次数:测试循环的次数,如果勾选了永远,那么所有线程会一直发送请求,直到手动停止运行脚本;

2)在线程组中添加HTTP请求。

Web服务器中填入请求服务器的地址和端口号;

协议中填入HTTP请求的协议,可以是httphttps

在方法中选择HTTP请求的方法,可用方法包括GETPOSTHEADPUTOPTIONSTRACEDELETE

在路径中填入接口请求的URL

请求参数:如果是GET方法的请求,请求参数直接写在URL后面即可;如果是POST的方法,则需要在Body Data中填入包含请求参数的数据(Body Data可以从Fiddler抓的包中获取,将Fiddler抓取的到数据包中Inspectors-TextView中的数据复制到Body data中即可);

https://img-blog.csdn.net/20160218090907151?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

3)在线程组中添加HTTP信息头管理器进行配置

https://img-blog.csdn.net/20160218090949078?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

4)添加监听器:聚合报告和察看结果树

https://img-blog.csdn.net/20160218091010729?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

https://img-blog.csdn.net/20160218091107720?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

5)添加响应断言

查看测试结果时我们会发现有时候网络侧返回数据不符合要求时Jmeter给出的结果仍是通过的。这时候我们需要通过断言来判断网络的返回数据是否符合要求。

比如,我们可以添加一个断言来检查返回信息中是否包含关键字“errMsg”来判断错误信息:

首先添加一个相应断言,在要测试的响应字段中选择响应文本,在模式匹配规则中选择包括,勾选否,在要测试的模式中添加提一条,输入关键字“errMsg”

意思是检查网络返回结果中不包含“errMsg”的才会判定为通过。

另外我们还可以从监听器中添加一个断言结果,在断言结果中可以查看断言的详细返回信息。

https://img-blog.csdn.net/20160218091221846?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

参考:【小说app实战】fiddler+jmeter的实战和进阶用法_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/645819.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络通信(二)

UDP通信 特点:无连不是先接、不可靠通信 不事先建立连接;发送端每次把要发送的数据(限制在64KB内)、接收端IP、等信息封装成一个数据包,发出去就不管了 java提供了一个java.net.DatagramSocket类来实现UDP通信 Dat…

第13章-循迹功能 循迹小车讲解 原理分析 STM32智能小车循迹教程 红外对管使用 PID循迹算法分析

讲解一下我们小车里面的循迹部分,包括红外基础使用,无PID循迹和有PID循迹。 第13章-循迹功能 13.1-非PID循迹功能完成 先红外对管调试 我们这里学习一下,如何实现循迹功能 如何才能让小车沿着黑线运动、要让小车感知到黑线的位置&#x…

【SpringBoot】SpringBoot中防止接口重复提交(单机环境和分布式环境)

📝个人主页:哈__ 期待您的关注 目录 🌼前言 🔒单机环境下防止接口重复提交 📕导入依赖 📂项目结构 🚀创建自定义注解 ✈创建AOP切面 🚗创建Conotroller 💻分布…

[CISCN 2024] Crypto部分复现

文章目录 OvOez_rsacheckin浅记一下 迟来的文章 OvO 题目描述: from Crypto.Util.number import * from secret import flagnbits 512 p getPrime(nbits) q getPrime(nbits) n p * q phi (p-1) * (q-1) while True:kk getPrime(128)rr kk 2e 65537 kk …

3d打印问题总结

1.打印拉丝:https://zhuanlan.zhihu.com/p/152221550 解决方案:温度过高,PLA材料材料喷嘴温度一般设置为200度比较合适。

string OJ题

下面分享一下string做题心得 1. 明白字符串中存储的数字为0 8 9与0 8 9 完全不同,字符0其实在串中存储的是48,要有意识的转化。字符串中如果存数字8,意味着存了BS(退格) 例如1: 算出结果为5,存…

网上打印试卷的步骤是什么

对于学生和家长来说,打印试卷是日常学习中的一项重要需求。那么,如何在网上方便地打印试卷呢?下面,就让我来为您介绍琢贝云打印的试卷打印步骤。 一、选择琢贝云打印的原因 支持多种文件格式打印,包括图片、PPT、PDF、…

20.SkyWalking

一.简介 SkyWalking用于应用性能监控、分布式链路跟踪、诊断: 参考连接如下: https://github.com/apache/skywalking https://skywalking.apache.org/docs/ 二.示例 通过官网连接进入下载页面:https://archive.apache.org/dist/skywalkin…

2024年【T电梯修理】考试内容及T电梯修理新版试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年【T电梯修理】考试内容及T电梯修理新版试题,包含T电梯修理考试内容答案和解析及T电梯修理新版试题练习。安全生产模拟考试一点通结合国家T电梯修理考试最新大纲及T电梯修理考试真题汇总,…

k8s中yaml文件配置指定私有镜像仓库

1. yaml文件介绍 2. 如何快速编写yaml文件 1)如果有已存在的pod时可以 kubectl get pod xxxxxx -oyaml 2)直接假跑一次并查看 kubectl run xxxxxx --image镜像名 --dry-run -oyaml 3)查看pod相关描述信息 kubectl explain pod 3. 编写…

linux 安装redis 并设置开机启动

个人实测 流程 1、第一步 先下载redis ** redis地址 https://download.redis.io/releases/选择你想要的版本 我下载的是 如下图 2、第二步:把下载的包放到linux里面 我用的是 XSHELL 和XFTP 放到/usr/local/java路径下 你可以随便放 3、第三步: ** 执行 以下命令 进行解压 t…

js之图表使用

今天为了给大家演示图表的使用,今天展示下切换图形的修改属性快速修改 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><script src"./js/jquery-3.7.1.js"></script><script src…

Llama 3没能逼出GPT-5!OpenAI怒“卷”To B战场,新企业级 AI 功能重磅推出!

Meta 是本周当之无愧的AI巨星&#xff01;刚刚推出的 Llama 3 凭借着强大的性能和开源生态的优势在 LLM 排行榜上迅速跃升。 按理说&#xff0c;Llama 3在开源的状态下做到了 GPT-3.7 的水平&#xff0c;必然会显得用户&#xff08;尤其是企业用户&#xff0c;他们更具备独立部…

flash-linear-attention中的Chunkwise并行算法的理解

这里提一下&#xff0c;我维护的几三个记录个人学习笔记以及社区中其它大佬们的优秀博客链接的仓库都获得了不少star&#xff0c;感谢读者们的认可&#xff0c;我也会继续在开源社区多做贡献。github主页&#xff1a;https://github.com/BBuf &#xff0c;欢迎来踩 0x0. 前言 …

老外卖27刀每月的教程已经更新

用了两天半的时间&#xff0c;边学习&#xff0c;边整理了一份老外的视频教程&#xff0c;涉及Facebook&#xff0c;YouTube&#xff0c;tiktok等大的流量平台&#xff0c;有案例&#xff0c;有分析&#xff0c;有如何做。 这个教程是老外讲的&#xff0c;没有什么玄乎的塑造价…

mysql 函数 GROUP_CONCAT 踩坑记录,日志:Row 244 was cut by GROUP_CONCAT()

mysql 函数 GROUP_CONCAT 踩坑记录&#xff0c;报错&#xff1a;Row 244 was cut by GROUP_CONCAT 结论&#xff1a;个人建议还是放在内存中拼接吧~db日志信息&#xff1a;Row 244 was cut by GROUP_CONCAT())根本原因&#xff1a;拼接的字符串长度超过 group_concat_max_len […

【LLM多模态】多模态LLM在图表处理的应用

note 在真实场景下&#xff0c;我们进行测试&#xff0c;多模态大模型在处理显著文本时表现尚可&#xff0c;但在处理细粒度文本时往往效果并不太好&#xff0c;why? ​具体原因如下&#xff1a; 首先&#xff0c;视觉编码器的分辨率对于多模态大模型的性能影响较大&#x…

Jenkins 还可以支持钉钉消息通知?一个插件带你搞定!

Jenkins 作为最流行的开源持续集成平台&#xff0c;其强大的拓展功能一直备受测试人员及开发人员的青睐。大家都知道我们可以在 Jenkins 中安装 Email 插件支持构建之后通过邮件将结果及时通知到相关人员。 但其实 Jenkins 还可以支持钉钉消息通知&#xff0c;其主要通过 Ding…

IIC通信(STM32)

一、IIC概念 &#xff11;、两根通信线&#xff1a;SCL&#xff08;Serial Clock&#xff09;、SDA&#xff08;Serial Data&#xff09; 同步&#xff0c;半双工 2、带数据应答 3、支持总线挂载多设备&#xff08;一主多从、多主多从&#xff09;一般使用一主多从。一主多从的…

clone方法总结Java

Java中Object类当中有许多方法&#xff0c;如图所示&#xff1a; clone方法就是其中一种&#xff0c;分为浅拷贝&#xff0c;深拷贝举一个例子&#xff1a; 浅拷贝&#xff1a; 在Person类当中右键鼠标然后&#xff0c;选中Generate&#xff1a; 然后重写clone方法 protecte…