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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

selenium环境安装和web自动化基础

webUI自动化背景 因为web页面经常会变化,所以UI自动化测试的维护成本很高。不如接口的适用面广,所以大部分公司会做接口自动化测试,但是未必会做UI自动化测试; UI自动化测试要做也是覆盖冒烟测试,不会到很高的覆盖率&a…

Flink常见面试题总结

文章目录 1. 简单介绍一下Flink2. Flink 的运行必须依赖Hadoop组件吗?3. Flink 和 Spark Streaming 的区别?4. Flink集群角色5. Flink核心概念5.1 并行度5.2 算子链(Operator Chain)5.3 任务槽(Task Slots)5.4 任务槽…

掌握Go语言中的net/http包:编写高性能Web服务

掌握Go语言中的net/http包:编写高性能Web服务 引言HTTP服务器构建基础服务器设置路由与处理函数中间件使用高级配置(如TLS/SSL) HTTP客户端开发创建与使用HTTP客户端处理响应 高级客户端特性 处理JSON与表单数据接收与解析JSON接收与解析表单…

实现一个自定义 hook,用于强制刷新当前组件

写在前面 在 react 中,如果 state 数据发生变化,我们知道,会重新渲染该组件。 但是这个前提是我们需要依赖 state 数据的变化,那比如我们并不想定义 state,又或者说我们的操作不能引起 state 的变化,此时…

无人机行业招投标技术详解

一、招标流程与原则 无人机行业的招投标流程通常包括招标公告发布、招标文件购买与审查、投标单位资格预审、投标书编制与递交、开标评标、中标公示与合同签订等步骤。在此过程中,必须遵循公开、公平、公正的原则,确保所有符合要求的投标单位都能获得平…

SpringBoot Bean

配置优先级 Bean的管理 从IOC容器中获取Bean对象:注入IOC容器对象 bean的作用域 Bean对象默认在容器启动时实例化 Lazy在第一次使用时初始化 Bean的管理:第三方Bean 引入依赖,每次解析创建新对象,浪费资源 将第三方对象交给…

如何搭建springBoot项目中的全局异常处理和自定义异常处理

目录 1 什么是异常 2 异常的种类 3 解决异常的方式 4 全局异常处理器和自定义异常处理器 5 测试异常处理 1 什么是异常 异常(Exception)是在程序执行过程中出现的一种特殊情况或错误。它可以是由于程序逻辑错误、运行环境问题、用户输入错误等原因…

【AI基础】反向传播

文章目录 1. 先写出第一步2.将其封装成函数3. pytorch版 1. 先写出第一步 # 定义输入值和期望输出 x_1 40.0 x_2 80.0 expected_output 60.0 初始化# 定义权重 w_1_11 0.5 w_1_12 0.5 w_1_13 0.5 w_1_21 0.5 w_1_22 0.5 w_1_23 0.5w_2_11 1.0 w_2_21 1.0 w_2_31 1…

基于 vLLM 搭建 DeepSeek-V2 Chat 服务

直奔主题。 安装vLLM 官方实现的代码还没有 merge 到 vLLM 主分支,所以直接 git clone DeepSeek 的分支。 git clone https://github.com/zwd003/vllm.git cd vllm pip install -e .源码安装大概耗时 10 分钟。 OpenAI 接口规范启动 官方 Github 放的是单条推理…

通过短信群发平台拓客引流营销的效果好不好?

通过短信群发平台进行营销拓客引流的效果可以是非常显著的,但具体效果会受到多种因素的影响,如目标受众的选择、短信内容的吸引力、发送时间和频率的合理性等。 以下是一些短信群发平台营销拓客引流的优势: 1.广泛覆盖:短…

噪声条件分数网络——NCSN原理解析

1、前言 本篇文章,我们讲NCSN,也就是噪声条件分数网络。这是宋飏老师在2019年提出的模型,思路与传统的生成模型大不相同,令人拍案叫绝!!! 参考论文: ①Generative Modeling by Es…

cesium圆形扩散扫描效果封装

效果 封装类 优化了着色器代码;增加了边框大小调整参数,增加了清除效果方法 注:在页面销毁时需要调用清除方法 CircleDiffusion.clear()/*** circleDiffusion:圆扩散特效封装类**/// 圆扩散 class CircleDiffusion {viewer;last…

docker容器安装nexus3以及nexus3备份迁移仓库数据

一、安装步骤 1.搜索nexus3镜像 docker search nexus3 2.拉取镜像 docker pull sonatype/nexus3或者指定版本 docker pull sonatype/nexus3:3.68.0 3.查看拉取的镜像 docker images | grep "nexus3" 4.启动nexus服务 直接启动 docker run -d --name nexus3 -…

怎么查看公网IP?

在网络通信中,每个设备都会被分配一个IP地址,用于在互联网上进行唯一标识和通信。公网IP是指可以被公开访问的IP地址,可以用来建立远程连接或者进行网络访问等操作。怎么查看公网IP呢?下面将介绍几种常用的方法。 使用命令行查询公…

LabVIEW高温往复摩擦测试系统中PID控制

在LabVIEW开发高温往复摩擦测试系统中实现PID控制,需要注意以下几个方面: 1. 系统建模与参数确定 物理模型建立: 首先,需要了解被控对象的物理特性,包括热惯性、摩擦系数等。这些特性决定了系统的响应速度和稳定性。实验数据获取…

吉时利Keithley 2010数字万用表7.5 位

Keithley 2010数字万用表,7.5 位 吉时利 2010 数字万用表、7.5 位、低噪声万用表将高分辨率与生产应用所需的高速度和高准确度相结合,例如测试精密传感器、换能器、A/D 和 D/A 转换器、调节器、参考、连接器、开关和继电器。2010 基于与吉时利 2000、20…

人工智能应用-实验6-卷积神经网络分类minst手写数据集

文章目录 🧡🧡实验内容🧡🧡🧡🧡代码🧡🧡🧡🧡分析结果🧡🧡🧡🧡实验总结🧡🧡 &#x1f9…

521源码-在线客服-CRMChat网页版客服系统 UNIAPP 全方位在线客服系统源码与管理体系平台

CRMChat客服系统:基于Swoole4Tp6RedisVueMysql构建的高效沟通桥梁 CRMChat是一款独立且高性能的在线客服系统,它结合了Swoole4、Tp6、Redis、Vue以及Mysql等先进技术栈,为用户提供了卓越的在线沟通体验。该系统不仅支持在Pc端、移动端、小程…

列表页9大样式,保准你看了就能掌握。

上文:一张图集齐B端列表页的16大组件,召唤神龙,看后恍然大悟。 普通列表/基础列表/常规列表 不适合移动端展示 复杂列表 加入了统计 适合移动端 项目列表 适合移动端 应用列表 适合移动端 多级列表 复杂的多级结构,下图展示了…

美国教育数据分析

文章目录 第1关:认识数据第2关:数据预处理第3关:数学成绩预测 第1关:认识数据 编程要求 根据提示,在右侧Begin-End区域补充代码,查看数据属性名称。 测试说明 程序会调用你实现的方法,查看数据…