Jmeter测试实践:文件下载接口

一 Jmeter步骤

1.打开jmeter4.0,新建测试计划,添加线程组。根据实际情况配置线程属性。

2.添加HTTP请求。根据接口文档进行配置。

Basic部分修改如下,Advanced部分保持默认。这里的参数id是文件的id,我进行了参数化,方便下载多个不同的文件。

3.添加CSV数据文件设置。

4.在HTTP请求下面添加BeanShell PostProcessor。强调一下,由于jmeter本身是不支持将文件保存到本地的,这里需要写一点java代码。

复制代码

import java.io.*;
byte[] result = prev.getResponseData();
String file_name = "D:/download-files/${filename}-${index}.${fextension}";
File file = new File(file_name);
FileOutputStream out = new FileOutputStream(file);
out.write(result);
out.close();

复制代码

5.添加计数器。目的是区分每次下载的文件。

6.可以在HTTP请求下面添加响应断言和断言结果。

7.添加集合点(Synchronizing Timer)。

8.添加监听器。包括查看结果树、聚合报告(可配置将数据写入一个文件test.jtl)、图形结果、每秒事务数(jp@gc - Transactions per Second)、每秒点击数(jp@gc - Hits per Second)、jp@gc - PerfMon Metrics Collector等。

二 文件下载接口测试总结

1.最好自己搭建测试环境,如果条件不够,只能使用开发搭建的测试环境的话,一定要问清楚测试环境的软硬件配置。比如说负载机与应用服务器是否在同一个局域网(如果跨局域网的话,会经过路由器,可能会有网络瓶颈)?操作系统是Windows还是Linux?被测机器是物理机还是虚拟机?是否使用磁盘阵列等等。

2.win+R运行,输入dxdiag,可查看计算机名,操作系统,系统型号,处理器,内存大小。

3.本次测试由于应用服务器不给开放端口,所以无法使用Jmeter自带的性能监控插件,只能使用Windows自带的perfmon远程监控硬件性能。

4.计数器:使每次下载文件命名不同,方便区分。

5.后置处理器:添加一段java代码,将文件下载到本地。

6.由于jmeter返回的是字节流,当数据量太大时,会发现jmeter完全卡住,为了防止这种情况发生,可以在查看结果树勾选仅日志错误,让其不显示,提高性能。

7.测试文件下载接口,jmeter返回的是字节流,怎么判断服务器有没有完全返回?response header头里面有一个content-lenth,添加断言,可判断文件是否下载完整。

8.下载的文件大小不超过10M?应该是jmeter的配置问题,具体没弄清楚原因,重新下载一个jmeter就好了。

9.报错java.lang.OutOfMemoryError: Java heap space?解决方式:jmeter报错:内存溢出

10.CSV参数配置文件中千万不要出现空行!因为jmeter会报错:响应数据HTTP Status 500 & 后台日志Typed variable declaration : Object constructor

2023最新Jmeter接口测试从入门到精通(全套项目实战教程)

 

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

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

相关文章

vue基本运用之常见问题及案例代码

前言 一些 Vue.js 的常见问题以及对应的案例代码 Vue实例生命周期 问题描述:如何在Vue的生命周期钩子中调用其他钩子?案例代码: new Vue({el: #app, created: function () {console.log(m

Redis哨兵(sentinel)

文章目录 简介搭建框架具体步骤主要文件参数开始配置 案例分析原有的master挂了 哨兵运行流程和选举原理主观下线客观下线(Objectively Down)选举出领导者哨兵(哨兵中选出兵王) 选新的master使用建议 简介 将某一个从库转换为新主库,继续对外服务将某一个从库转换为…

​operator --- 标准运算符替代函数​

源代码: Lib/operator.py operator 模块提供了一套与Python的内置运算符对应的高效率函数。例如,operator.add(x, y) 与表达式 xy 相同。 许多函数名与特殊方法名相同,只是没有双下划线。为了向后兼容性,也保留了许多包含双下划线的函数。为了…

Java - HashMap

数组和链表 数组: 存储区间是连续,且占用内存严重,空间复杂也很大,时间复杂为O(1) 优点:是随机读取效率很高,原因数组是连续(随机访问性强,查找速度快&#x…

properties配置和读取

如何配置和读取属性文件 1.属性文件介绍1.1 什么是属性文件1.2属性文件规范1.3 属性文件优缺点 2.属性文件读取4.spring和属性文件4.1利用注解读取4.2配置文件里直接引用 4.属性文件写入5.注意事项5.总结 1.属性文件介绍 1.1 什么是属性文件 Java开发中,我们经常需…

Qt6.5类库实例大全:Qt Creator快速入门

哈喽大家好,我是20YC编程小二!扫码关注公众号,现在可免费领取《C程序员》在线视频教程哦!#下面开始今天内容# 1. Qt Creator介绍 Qt Creator是一个轻量级的跨平台集成开发环境(IDE),专为使用Qt框架进行应用程序开发而…

华为OD机试真题-攀登者1-2023年OD统一考试(C卷)

题目描述: 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的高度代表相对海拔高度。其中数组元素0代表地面。 例如[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0], 代表如下图所示的地图,地图中有两个山脉位置分别为 1,2,3,4,5和8…

基于深度学习的文本分类研究综述

摘要 与传统的机器学习模型相比,深度学习模型试图模仿人的学习思路,通过计算机自动进行海量数据的特征提取工作。文本分类是自然语言处理中的一个重要应用,在文本信息处理过程中有着关键作用。过去几年,由于深度学习研究的空前成…

NAND闪存市场2023年Q3增长2.9%,Q4有望激增20%

TrendForce报告显示,NAND闪存市场在2023年第三季度出现了关键转折,主要由三星的战略性减产决定驱动。最初,市场对终端用户需求的不确定性以及对平淡旺季的担忧导致买家采取保守的方法,库存低、采购慢。然而,随着三星等…

华为新款笔记本搭载5nm麒麟芯片,来源成谜,可能让大家失望了~

近日,华为公司悄悄推出了一款基于国产技术打造的全新商用笔记本——华为擎云L540。目前,华为擎云L540在京东平台悄然上线的,尚未在华为官方渠道公开售卖。华为擎云L540搭载了麒麟9006C处理器,采用先进的5nm制程工艺,8 …

codeforces A. Morning

思路 模拟&#xff0c;按顺序移动移动到对应位置贡献为移动的步数&#xff0c;press的次数。 Think Twice, Code Once #include<bits/stdc.h> #define il inline #define get getchar #define put putchar #define is isdigit #define int long long #define dfor(i,a…

openGauss学习笔记-150 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_backup

文章目录 openGauss学习笔记-150 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_backup150.1 背景信息150.2 前提条件150.3 语法150.4 参数说明150.5 示例 openGauss学习笔记-150 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_backup 150.1 背景信息 openGaus…

错题总结(四)

1.【一维数组】输入10个整数&#xff0c;求平均值 编写一个程序&#xff0c;从用户输入中读取10个整数并存储在一个数组中。然后&#xff0c;计算并输出这些整数的平均值。 int main() {int arr[10];int sum 0;for (int n 0; n < 10; n){scanf("%d", &arr…

[完美解决]Accelerate设置单卡训练报错,成功设置单卡训练

报错内容 ValueError: Less than two GPU ids were configured and tried to run on on multiple GPUs. Please ensure at least two are specified for --gpu_ids, or use --gpu_idsall. ValueError:配置了少于两个GPU id&#xff0c;并试图在多个GPU上运行。请确保为——gpu…

小黑子——springBoot基础

springBoot简单学习 一、SpringBoot简介1.1 springBoot快速入门1.1.1 开发步骤1.1.2 对比1.1.3 官网构建工程1.1.3 SpringBoot工程快速启动 1.2 springBoot概述1.2.1 起步依赖I. 探索父工程II. 探索依赖III. 小结 1.2.2 程序启动1.2.3 切换web服务器-jetty 二、配置文件2.1 配置…

C语言精选——选择题Day43

第一题 1. 使用malloc系统调用分配的内存是在什么上分配的&#xff1f; A&#xff1a;栈 B&#xff1a;堆 答案及解析 B malloc开辟的空间都是在堆上申请的内存空间&#xff0c;但是我们平常定义的定长数组之类的&#xff0c;都是在栈上开辟的空间&#xff1b; 第二题 2. C语言…

scala变量与变量类型

1.6 变量与类型&#xff08;重点&#xff09;1.6.1 变量推断1.6.2 多变量定义1.6.3 var和val的区别 1.6.3.1 是否可变 1.6.3.2 延迟加载 1.6 变量与类型&#xff08;重点&#xff09; val修饰的变量&#xff0c;相当于Java中final修饰的变量; // 定义常量s1&#xff0c;使用…

[每周一更]-(第76期):Go源码阅读与分析的方式

读源码可以深层理解Go的编写方式&#xff0c;理解作者们的思维方式&#xff1b;也有助于对Go语法用法深刻的理解&#xff0c;我们从这一篇说一下如何读源码&#xff0c;从哪些源码着手&#xff0c;从 简单到深入的方式学习源码&#xff1b; 学习源码也是一个修炼过程&#xff0…

「斗破年番」卡点侠萧炎又卡点救人,四长老毒气攻心,黑皇城寻宝

Hello,小伙伴们&#xff0c;我是拾荒君。 《斗破苍穹年番》第74集如约而至&#xff0c;带给观众们更多的惊喜与感动。这一集中&#xff0c;萧炎的体内魔毒斑暂时被厄难毒体所压制&#xff0c;他决定回到迦南学院&#xff0c;寻求斗尊强者的帮助解决这个问题。然而&#xff0c;…

深入理解 Flask 中的 Session 和 Cookies

在构建 web 应用时,管理用户的状态和数据是至关重要的。Flask,作为一个灵活的微型 web 框架,提供了会话(Session)和 Cookies 管理的能力。本文将深入探讨 Flask 中的会话和 Cookies 的概念、工作机制以及应用实例,为读者提供全面而详细的理解。 会话和 Cookies 的基本概…