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.rhkb.cn/news/329517.html

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

相关文章

深度学习——图像分类(CNN)—训练模型

训练模型 1.导入必要的库2.定义超参数3.读取训练和测试标签CSV文件4.确保标签是字符串类型5.显示两个数据框的前几行以了解它们的结构6.定义图像处理参数7.创建图像数据生成器8.设置目录路径9.创建训练和验证数据生成器10.构建模型11.编译模型12.训练模型并收集历史13.绘制损失…

excel转pdf并且加水印,利用ByteArrayOutputStream内存流不产生中间文件

首先先引入包&#xff1a;加水印和excel转PDF的 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.12</version></dependency><dependency><groupId>org.apache.poi&l…

jenkins插件之xunit

安装jenkins插件 搜索xunit并安装 项目配置 配置 - Build Steps 您的项目 - 配置 - Build Steps, 新增 Run with timeout 超时时间根据实际情况配置 Build Step选择 执行SHELL 填写一下命令&#xff0c;这个命令是docker中执行phpunit单元测试&#xff0c;请根据你的实际…

FPGA学习笔记之Nios II(一)简单介绍及新建工程及下载

系列文章目录 文章目录 系列文章目录前言QsysNios IIhello world 实例Platform DesignNios II程序设计 前言 利用Quartus中的Qsys工具&#xff0c;可以实现在FPGA里面跑嵌入式的功能 Qsys Altera 公司将主控制器、数字信号处理模块、存储器及其控制模块、各种接口协议等模块&…

亚马逊测评还能做吗?

只能说测评不是唯一的手段&#xff0c;但是推销量的一把好手。首先测评能让listing快速成长&#xff0c;短期内有望成为爆款&#xff0c;速度快&#xff0c;利润高&#xff0c;回款快。相对其他推广&#xff0c;测评无疑是有效&#xff0c;省培养listing的方法。其次新品前期太…

聊聊 JSON Web Token (JWT) 和 jwcrypto 的使用

哈喽大家好&#xff0c;我是咸鱼。 最近写的一个 Python 项目用到了 jwcrypto 这个库&#xff0c;这个库是专门用来处理 JWT 的&#xff0c;JWT 全称是 JSON Web Token &#xff0c;JSON 格式的 Token。 今天就来简单入门一下 JWT。 官方介绍&#xff1a;https://jwt.io/intr…

RH850F1KM-S4-100Pin_ R7F7016453AFP MCAL Gpt 配置

1、Gpt组件包含的子配置项 GptDriverConfigurationGptDemEventParameterRefsGptConfigurationOfOptApiServicesGptChannelConfigSet2、GptDriverConfiguration 2.1、GptAlreadyInitDetCheck 该参数启用/禁用Gpt_Init API中的GPT_E_ALREADY_INITIALIZED Det检查。 true:开启Gpt_…

JS核心语法【流程控制语句、函数】;DOM【查找元素、操作元素、事件】--学习JavaEE的day48

day48 JS核心技术 JS核心语法 继day47 注意&#xff1a;用到控制台输出、弹窗 流程控制语句 If else、For、For-in(遍历数组时&#xff0c;跟Java是否一样【java没有】)、While、Do while、break、continue 案例&#xff1a; 1.求1-100之间的偶数之和 <!DOCTYPE html> …

Android消息机制回顾(Handler、Looper、MessageQueue源码解析)

回顾&#xff1a; Android消息机制 Android消息机制主要指的是Handler的运行机制以及Handler所附带的MessageQueue和Looper的工作机制。 介绍 通过Handler 消息机制来解决线程之间通信问题&#xff0c;或者用来切换线程。特别是在更新UI界面时&#xff0c;确保了线程间的数…

5.23 学习总结

一.项目优化&#xff08;语音通话&#xff09; 实现步骤&#xff1a; 1.用户发送通话申请&#xff0c;并处理通话请求&#xff0c;如果同意&#xff0c;为两个用户之间进行连接。 2.获取到电脑的麦克风和扬声器&#xff0c;将获取到的语音信息转换成以字节数组的形式传递。 …

基于FPGA的图像直方图均衡化处理verilog实现,包含tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 FPGA的仿真图如下&#xff1a; 将数据导入MATLAB&#xff0c;对比结果如下&#xff1a; 2.算法运行软件版本 MATLAB2022a vivado2019.2 3.部分…

【Android安全】AOSP版本对应编号| AOSP版本适配Pixel或Nexus型号 | 驱动脚本下载地址

AOSP版本对应编号 https://source.android.com/docs/setup/about/build-numbers?hlzh-cn#source-code-tags-and-builds 例如android-8.1.0_r1 对应的编号是OPM1.171019.011 可以适配Pixel 2 XL AOSP驱动脚本下载 编译AOSP时&#xff0c;需要Google的驱动&#xff0c;后面才…

Jenkins 构建 Maven 项目:项目和服务器在一起的情况

bash.sh内容 #!/bin/bash#删除历史数据 rm -rf ruoyi-admin.jar# appname$1 appnamevideo.xxxxx.com #获取传入的参数 echo "arg:$appname"#获取正在运行的jar包pid # pidps -ef | grep $1 | grep java -jar | awk {printf $2} pidps -ef | grep $appname | grep ja…

高铁VR虚拟全景展示提升企业实力和形象

步入VR的神奇世界&#xff0c;感受前所未有的汽车展示体验。VR虚拟现实技术以其独特的沉浸式模拟&#xff0c;让你仿佛置身于真实展厅之中&#xff0c;尽情探索汽车的每一处细节。 一、定制化展示&#xff0c;随心所欲 VR汽车虚拟展厅打破空间束缚&#xff0c;让汽车制造商能够…

从零开始傅里叶变换

从零开始傅里叶变换 1 Overview2 傅里叶级数2.1 基向量2.2 三角函数系表示 f ( t ) f(t) f(t)2.2.1 三角函数系的正交性2.2.2 三角函数系的系数 2.3 复指数函数系表示 f ( t ) f(t) f(t)2.3.1 复指数函数系的系数2.3.2 复指数函数系的正交性 2.4 傅里叶级数总结 3 傅里叶变换…

基于轻量级神经网络GhostNet开发构建CIFAR100数据集场景下的图像识别分析系统,对比不同分辨路尺度下模型的性能情况

Cifar100数据集是一个经典的图像分类数据集&#xff0c;常用于计算机视觉领域的研究和算法测试。以下是关于Cifar100数据集的详细介绍&#xff1a; 数据集构成&#xff1a;Cifar100数据集包含60000张训练图像和10000张测试图像。其中&#xff0c;训练图像分为100个类别&#x…

webgl入门-绘制三角形

绘制三角形 前言 三角形是一个最简单、最稳定的面&#xff0c;webgl 中的三维模型都是由三角面组成的。咱们这一篇就说一下三角形的绘制方法。 课堂目标 理解多点绘图原理。可以绘制三角形&#xff0c;并将其组合成多边形。 知识点 缓冲区对象点、线、面图形 第一章 web…

C# run Node.js

C# run nodejs Inter-Process Communication&#xff0c;IPC Process类 启动Node.js进程&#xff0c;通过标准输入输出与其进行通信。 // n.js// 监听来自标准输入的消息 process.stdin.on(data, function (data) {// 收到消息后&#xff0c;在控制台输出并回复消息console.l…

C++设计模式---面向对象原则

面向对象设计原则 原则的目的&#xff1a;高内聚&#xff0c;低耦合 1. 单一职责原则 类的职责单一&#xff0c;对外只提供一种功能&#xff0c;而引起类变化的原因都应该只有一个。 2. 开闭原则 对扩展开放&#xff0c;对修改关闭&#xff1b;增加功能是通过增加代码来实现的&…

探索 Rust 语言的精髓:深入 Rust 标准库

探索 Rust 语言的精髓&#xff1a;深入 Rust 标准库 Rust&#xff0c;这门现代编程语言以其内存安全、并发性和性能优势而闻名。它不仅在系统编程领域展现出强大的能力&#xff0c;也越来越多地被应用于WebAssembly、嵌入式系统、分布式服务等众多领域。Rust 的成功&#xff0…