測試場景:現在需要對視頻播放進行壓力測試,測試的難點怎么判斷在並發播放視頻的,怎么判斷每個用戶都能正常播放視頻,並沒有出現卡頓的情況;
我們了解到視頻播放的接口返回的信息中是一個文件流,我們通過判斷在視頻播放結束時間點時返回的文件流轉換成文件是否是一個完整的視頻就斷定是否是否可以正常播放;大致思路已經明確了,以下為腳本編寫步驟
1.首先找到視頻播放的接口
這個接口中 Response Headers 中 Content-Length: 2639013 很重要,這個值返回的是文件的總大小,可以作為借口斷言的依據
2.在Jmeter線程中加一個http 請求,請求接口地址為步驟1的地址
點擊“Advanced” 在timeouts 下有個respones ,這個配置項意味着響應等待超時時間,我們這里設置這個值為點擊播放按鈕后到視頻播放完成所需時間(這個值怎么算以及為什么要設置這個值見文章末尾)
3.添加響應斷言,這里斷言的是整個視頻文件大小
4.添加后置處理器,將接口返回的轉換成文件保持至本地
代碼:
import java.io.*; byte[] result = prev.getResponseData(); String file_name = "F:/mv/${index}.mp4"; File file = new File(file_name); FileOutputStream out = new FileOutputStream(file); out.write(result); out.close();
4.運行腳本查看效果
檢查本地下載的視頻文件,是否是一個完整的文件,是否可以正常播放
-----------------------------------------------------------------------------------------------------------------------------------------------
前面說到的響應等待超時時間這個值如何設置?我們只知道視頻有一個屬性叫做“碼率”,視頻碼率就是數據傳輸時單位時間傳送的數據位數;只要單位時間內的碼率能達到這個值就說明視頻可以正常播放;如果我們知道了視頻的碼率、視頻大小、就可以得到視頻播放時間;我們只要判斷在播放時間之內接口返回的文件流大小能達到視頻文件的大小就說明視頻可以正常播放的。
可以通過工具 MediaInfo20.03.exe 來查看視頻的碼率,比如測試中視頻的大小為:844kb/s
視頻的大小為 2639013 字節
從而得到視頻的播放時間為24428ms