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

转 Jmeter测试实践:文件下载接口的更多相关文章

  1. 转 Jmeter测试实践:文件上传接口

    Jmeter测试实践:文件上传接口   1.打开jmeter4.0,新建测试计划,添加线程组.根据实际情况配置线程属性. 2.添加HTTP请求. Basic部分修改如下: Advanced部分我做任何 ...

  2. 测试必备:jmeter测试http协议接口的各种传参方式

    测试接口,postman和jmeter是用得最频繁的工具,特别是jmeter,支持很多种协议,且除了测功能,还能做自动化测试和性能测试.下面主要介绍jmeter测试http协议接口的用法,包含get, ...

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

    一 Jmeter步骤 1.打开jmeter4.0,新建测试计划,添加线程组.根据实际情况配置线程属性. 2.添加HTTP请求.根据接口文档进行配置. Basic部分修改如下,Advanced部分保持默 ...

  4. Jmeter测试实践:文件上传接口

    1.打开jmeter4.0,新建测试计划,添加线程组.根据实际情况配置线程属性. 2.添加HTTP请求. Basic部分修改如下: Advanced部分我做任何修改,完全保持默认.但是有人说Imple ...

  5. 使用jMeter测试Solr服务接口

    之前一直用ab做简单的服务接口测试,ab功能强悍,使用简单,但是没有生成专题图和表格等功能,因此,我们决定使用jmeter来作为我们测试工具.接下来,我们将详细介绍jmeter使用的步骤,主要包括:j ...

  6. 采用jmeter测试dubbo服务接口

    http://www.kissyu.org/2017/02/08/jmeter%E6%B5%8B%E8%AF%95dubbo%E6%8E%A5%E5%8F%A3/

  7. Jmeter使用实践-接口diff测试

    Jmeter使用实践-接口diff测试 大多数人都使用 Jmeter 做过性能测试,但是在使用的过程中你会发现,它不仅可以做性能测试和功能测试,还能够满足基本的接口测试需求. 相比其他工具,Jmete ...

  8. 使用Jmeter测试Dubbo接口(参数设置篇)

    WebSocket接口需要下载dubbo插件才能使用 本次下载的版本为jmeter-plugins-dubbo-1.3.6,下载完成后jar文件放到\lib\ext目录下 由于工作需要,最近需要对du ...

  9. Jmeter测试接口

    文主要针对http接口进行测试,使用Jmeter工具实现. Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,因此,本次直接使用Jmeter工具来完成对Http接 ...

随机推荐

  1. CI/CD自动化发版系统设计简介

    转载自:https://www.cnblogs.com/wellful/archive/2004/01/13/10604151.html 版本迭代是每一个互联网公司必须经历的,尤其是中小型公司,相信不 ...

  2. matplotlib学习日记(十一)---坐标轴高阶应用

    (一)设置坐标轴的位置和展示形式 (1)向画布中任意位置添加任意数量的坐标轴 ''' 通过在画布的任意位置和区域,讲解设置坐标轴的位置和坐标轴的展示形式的实现方法, 与subplot,subplots ...

  3. Centos7安装packstack

    Centos7安装packstack 步骤一 下载centos7.6 https://archive.kernel.org/centos-vault/7.6.1810/isos/x86_64/Cent ...

  4. Loki 初体验

    Loki 是什么 Loki 是 Grafana Lab开发的一套日志系统,使用Go语言实现.根据官方的介绍, Loki,高可用性,多租户的日志聚合系统,受到Prometheus的启发.它的设计非常经济 ...

  5. 在ubuntu上利用科大讯飞的SDK实现语音识别-语义识别等功能

    首先,参考科大讯飞的官方sdk中的案例,实现和机器的日常对话和控制. 具体步骤: 1. 通过麦克风捕获说话的声音,然后通过在线语音识别获取语音中的字符. 2. 将获取到的字符上传到科大讯飞的语义识别中 ...

  6. ip,子网掩码,网关以及dns简述

    ip 描述 ip地址用于标识不同的计算机身份,ip地址=网络地址+主机地址 例子 192.168.1.168(ip地址)=192.168.1.0(网络地址)+0.0.0.168(主机地址) 寻址过程 ...

  7. CentOs 7 安装mysql5.7.18(二进制版本)

    1.下载二进制版本安装包.搜狐开源镜像站:http://mirrors.sohu.com/mysql/MySQL-5.7/   , 找 mysql-5.7.18-linux-glibc2.5-x86_ ...

  8. 鸿蒙HarmonyOS应用开发落地实践,Harmony Go 技术沙龙落地北京

    12月26日,华为消费者BG软件部开源中心与51CTO Harmony OS技术社区携手,共同主办了主题为"Harmony OS 应用开发落地实践"的 Harmony Go 技术沙 ...

  9. SparkSql自定义数据源之读取的实现

    一.sparksql读取数据源的过程 1.spark目前支持读取jdbc,hive,text,orc等类型的数据,如果要想支持hbase或者其他数据源,就必须自定义 2.读取过程 (1)sparksq ...

  10. 使用Spring中@Async注解实现异步调用

    异步调用? 在解释异步调用之前,我们先来看同步调用的定义:同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果. 异步调用则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行完毕,继 ...