Jmeter video播放压力测试
测试场景:现在需要对视频播放进行压力测试,测试的难点怎么判断在并发播放视频的,怎么判断每个用户都能正常播放视频,并没有出现卡顿的情况;
我们了解到视频播放的接口返回的信息中是一个文件流,我们通过判断在视频播放结束时间点时返回的文件流转换成文件是否是一个完整的视频就断定是否是否可以正常播放;大致思路已经明确了,以下为脚本编写步骤
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