本次测试的是文件下载接口,文件是PDF文档,步骤如下:

1、通过jmeter的录制功能,获取了文件下载接口的地址和参数,和其他的HTTP请求一样的配置

2、执行此接口后,察看结果树,点击下载接口的结果,可以看到响应结果像是乱码,其实这些都是这个文档的内容,并且由于文档较大,察看响应数据时jmeter会短暂卡死

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

3、如果下载接口是通的,可以通过把下载接口的响应数据"保存到文件"这种方式来查看文件,这样查询结果时直接到本地查看文件就行

添加方法:线程组右键添加 -> 监听器 -> 保存响应到文件(或者是Sampler直接添加也行)

配置字段:

  1)Save Failed Responses only:只保存失败的响应;

  2)Save Successful Responses only:只保存成功的响应;

  3)Don't add number to prefix:不添加数字到文件名前缀;

  4)Don't add suffix:不添加文件后缀,即扩展名(注意:默认情况下,jmeter会根据服务器返回的结果自动生成适合类型的文件。)

  5)Add timestamp:添加时间戳到文件前缀 ;

  6)Minimum Length of sequence number:添加 数字时的最小值,不填默认从1开始。

注意:在不勾选任何1)和2)时,会将响应成功和响应失败的都保存到文件中。添加在测试计划下时,该监听器默认的会为所有的sampler分别建立一个单独的文件来保存响应结果,如果只想保存某个请求的返回结果时,只要把监听器拖动到某个请求的作用域下,就只会保存这个请求的响应。

优化:加上时间戳,历史文件就不会被覆盖掉

4、下载的文件,可以通过添加 后置处理器 BeanShell PostProcessor 保存到本地

代码(换一个文件地址和名称就行):

import java.io.*;
byte[] result = prev.getResponseData(); //这个是获取到请求返回的数据,prev是获取上个请求的返回
String file_name = "D:/Program Files/apache-jmeter-3.3/bin/result/下载文件/180607144641.pdf"; //代表存放文件的位置和文件名
File file = new File(file_name);
FileOutputStream out = new FileOutputStream(file);
out.write(result);
out.close();

5、如果要判断文件是否下载完整,可以通过添加断言来判断

最新文章

  1. 带你一分钟理解闭包--js面向对象编程
  2. Verilog HDL模型的不同抽象级别
  3. Zookeeper的安装和使用
  4. 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)
  5. LeetCode: Ransom Note
  6. java问题小总结
  7. Java for LeetCode 220 Contains Duplicate III
  8. jQuery选择器和DOM操作——《锋利的jQuery》(第2版)读书笔记1
  9. linux centos java 应用服务器配置
  10. javascript实例学习之三——类新浪微博的登录框
  11. MongoDB (十) MongoDB Limit/限制记录
  12. jquery 新建的元素事件绑定问题
  13. 解决无法获取 GridView 隐藏列值问题
  14. ora-00600笔记
  15. 简单的BFS学习笔记
  16. day2(字符串、格式化输出、运算符、流程控制)
  17. ScalaPB(5):用akka-stream实现reactive-gRPC
  18. vue font-icon 图标
  19. php的trie_filter扩展安装敏感词查找
  20. CrackME 2011 # 2 逆向练习解题思路

热门文章

  1. 153. Find Minimum in Rotated Sorted Array(leetcode, binary search)
  2. express不是内部命令
  3. 【转载】#336 - Declaring and Using a readonly Field
  4. [转载]开启debug调试模式
  5. 是否应该提供一个dao.insertIgnoreNull ? (像updateIgnoreNull一样)
  6. 一个TCP的问题,所谓TCP面向连接的虚电路到底是怎么实现的?
  7. centos下yum安装mysql5.6后,无法启动 MySQL Daemon failed to start
  8. 1018: Give me the answer
  9. 配置SSIS 包部署
  10. getnumdevices.c && setgetdevicetype例程