本次測試的是文件下載接口,文件是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、如果要判斷文件是否下載完整,可以通過添加斷言來判斷



