一个美好的周日晚上,我们最喜欢的电视剧带着最新一季回归,我们准备抢先观看这部备受期待的剧集,避免被剧透。在消费者看来,拿起手机在移动应用程序或网页应用上观看内容变得异常简单。只需几次点击和轻点即可访问流媒体。打开应用并点击播放。简单、快速且即时,是吧?
点播视频和直播流媒体消费已在全球范围内普及。大家纷纷告别DVD、有线电视服务商,转而订阅点播视频流媒体服务。随着需求的爆炸性增长,一致的高性能和质量成为关注焦点。没有任何点播平台愿意看到用户获得平淡的体验。但为了确保用户能够无缝观看流媒体,减少缓冲,提供最高质量,我们必须对这些媒体内容进行负载测试,针对分布在不同地理位置的大量用户,长时间播放内容。即使是最细微的延迟或质量下降,都会影响客户体验,甚至流失用户群。
流媒体和关键负载测试指标
首先让我们讨论影响流媒体性能的关键指标。
比特率
比特率通常通过传输给用户的平均字节数来计算。较高的比特率意味着用户能享受高分辨率的音视频内容。有时,当内容获取的服务器(流媒体服务器)与用户所在的地理位置相距较远时,会出现延迟,影响整体比特率。
播放率
播放率用于计算实际播放视频的用户数或百分比。如果比特率较低,播放率通常也会较低。这两个指标息息相关。如果内容在最初30秒内未加载完成,用户往往会关闭流媒体服务,导致播放率显著下降。
缓冲时间
缓冲时间是内容加载所花费的时间,取决于网络延迟和用户的数据下载速度。缓冲时间的计算告诉我们用户等待内容加载所花费的时间。缓冲时间的增加会破坏整体用户体验,若超过一定阈值,用户甚至可能停止观看。播放视频时也会产生缓冲,通常缓冲完成后媒体开始播放,缓冲内容与媒体播放之间的时间称为延迟长度。延迟长度在流媒体播放中非常重要,延迟长度增加会影响整体流畅度。
播放时长
播放时长是用户消费内容所花费的时间,有助于了解平均用户在平台上的停留时间,也反映用户对流媒体内容的整体兴趣和体验。如果播放时长下降,就需要改进平台上的媒体内容了。
延迟比率
延迟比率是缓冲时间占实际内容观看时间的比例,用于衡量流媒体的整体质量。这个比例应接近零,但无法达到零。总会有初始延迟,但应保持流媒体的稳定性和连续性,以获得更长的播放时长。
正如我们上面讨论的这些指标,帮助我们监控媒体应用在负载下的表现,也用作提升整体性能的依据。
为什么需要从不同地理位置测试?
在回答为什么要从不同地理位置进行测试之前,让我们用通俗的语言了解请求的处理过程。当用户点击播放按钮时,一个请求被发送到用户的互联网服务提供商(ISP)。ISP再将请求转发至处理该网站的专用服务器,服务器回复响应,该响应传回用户电脑,形成结果。对于流媒体服务的巨头来说,因需传输数百万小时的视频内容,需构建更庞大的服务器网络以维持性能。
但如果用户位于洛杉矶,而服务器却位于亚洲,则会增加延迟,影响总体媒体性能。为了解决这个问题,流媒体供应商使用内容分发网络(CDN),它将原始网站及其媒体内容复制到全球数百台服务器上。这样,当用户在布达佩斯登录时,会连接到距离布达佩斯最近的CDN服务器的副本,而非美国的主服务器,从而大幅降低延迟——请求与响应之间的时间,加载速度也更快。
我的流媒体能承载多少用户?
在真正用户进入平台之前,我们希望对流媒体进行负载测试,以推断在不同地点分布的多少用户基础下,我们的流媒体能够保持最高比特率、播放率以及最低缓冲和延迟比率。为了得出用户数量,我们需要一段脚本,起始于x个用户浏览流媒体,并逐渐增加用户数,直到出现连接超时或平均比特率下降。增加并发用户数并追踪连接超时,将展示我们当前基础设施可承载的最高用户数量。
规划并创建一个模拟接近真实用户行为的流媒体脚本,是获取准确结果的重要环节。我们还需要一款专用工具来生成负载,确保脚本稳固不崩溃。接下来我们将看看LoadView,它如何帮助测试超过100种不同的媒体流编解码器。
现在我们需要负载测试这些CDN的执行和速度,看是否存在由此产生的延迟,同时以大量并发用户运行流媒体。这样有助于我们理解,当用户基数和地理位置增加时,相比服务器内容所在位置,测试性能指标得出的接近实时场景。
LoadView及其功能
LoadView是一款软件即服务(SaaS)应用,提供负载测试工具和支持,可运行基于云的负载测试,面向网页、流媒体、后端API服务器及其它复杂的网络应用。
为帮助我们管理并运行流媒体性能测试,LoadView提供基础设施和测试脚本,帮助负载测试流媒体,了解基础设施可承载的并发流数量。它支持100多种媒体流监测编解码器及媒体流文件格式,覆盖基于被测试媒体的各种音频、视频编解码器。
LoadView提供多种测试流媒体的选项,包括专用测试,我们需输入流媒体URI;还有利用EveryStep Web Recorder录制整体浏览器用户会话及媒体,帮助录制器创建脚本,并在负载测试时大规模重放。
LoadView功能
连接时间
提供实时报告及连接超时计数,展示当前并发用户数下基础设施的表现。
帧率
提供帧率详情,确保视频中图像显示的速率正常,无闪烁或观看错误。
缓冲时间
帮助理解跳出率和观看时间与缓冲时间阈值及预警之间的关系。
平均每秒字节数
LoadView监控流媒体输出的视频质量,分享比特率等数据,反映用户的内容消耗情况。
使用LoadView负载测试流媒体
如前所述,LoadView提供两种选项来负载测试流媒体,一种是通过输入静态媒体URL运行专用URI测试,另一种是使用脚本录制器捕捉真实浏览器使用媒体的交互,录制用户操作生成脚本。该录制脚本用于大规模负载测试时的回放。
我们将逐步介绍两种方式的设置,以及如何使用LoadView执行流媒体负载测试,LoadView支持所有主流媒体流文件格式。
LoadView流媒体配置
创建流媒体负载测试脚本时,需要指定目标流媒体进行重负载验证。需输入流媒体URL及协议路径,也即媒体资源URI。在测试场景中需指定这两个参数。负载测试运行流程包括以下步骤:
流媒体配置:步骤1
用户输入流媒体URL和媒体类型。
流媒体配置:步骤2
根据被测媒体,负载生成器尝试从流媒体URL获取内容。
流媒体配置:步骤3
流媒体具有多种属性,如质量、编解码器、视频和音频,测试过程中会从服务器获取这些数据并计算各项指标。
流媒体配置:步骤4
测试场景中会设置连接超时阈值,如果流媒体服务器未能在规定时间内发送内容,将生成错误并显示在测试结果中。
LoadView媒体流性能测试设置
让我们看看运行流媒体负载测试需要的步骤。
创建新测试
打开LoadView测试首页。点击新建测试开始创建新负载测试。

选择负载测试类型
页面显示LoadView支持的负载测试类型,包括网页应用、网页、流媒体、HTTP/S等。以本次用例为例,选择流媒体进行测试。

流媒体配置任务
选择流媒体后,需输入被测应用的详细信息,如媒体类型和流媒体URL。还需填写应用响应超时。如果应用无响应,LoadView将等待设定时长后结束测试,并提供错误详情。填写完毕后点击创建设备。

测试场景配置
设备配置成功后,页面跳转到测试场景,提供多种配置选项,如并发用户、加速时间、加速速度、预热时间和地理分布,可根据负载测试需求调整。


流媒体并发用户
测试场景页上需添加所需的并发用户数。负载注入器将根据负载和并发用户数启动。测试成功完成后,将生成详细的分析报告,帮助识别性能瓶颈及系统表现。
连接时间
连接时间是启动流式播放与播放第一帧之间的时间差,这个时间被计入前面提到的延迟比率指标。
持续时间
持续时间为用户消费内容的总时间,也描述引擎捕捉内容所需时间。
质量
质量通过用户消耗的比特率计算,反映流媒体的视觉表现。
每秒帧数
每秒帧数帮助计算测试期间下载的帧数。
用EveryStep Web Recorder负载测试流媒体
本节介绍如何对包含流媒体的真实浏览器会话进行负载测试。LoadView配备的EveryStep Web Recorder可创建基于真实用户行为的测试场景,涵盖带有音视频内容的网页应用,包括视频播放/暂停、紧凑或扩展的视频播放器流媒体。脚本录制器记录所有操作,帮助在更大规模环境重放用户体验,获取接近真实的性能结果。该录制器支持所有主流浏览器,方便根据浏览器差异得出负载测试结果。录制脚本可根据需求修改配置。支持Flash、JavaScript、WebSockets、HTML5、Java、PHP、Ruby、Silverlight等多种技术。设置类似上文,但使用EveryStep Web Recorder时略有不同。脚本录制负载测试设置步骤如下:
- 在LoadView创建新测试并选择网页应用。
- 跳转到录制窗口,选择浏览器和应用URL。填写应用详情并点击录制。
- 录制完成后,可像最终用户一样浏览网页,脚本录制器会生成可重复播放的脚本。
- 可在脚本最后一行右键设置延迟,帮助测试场景等待媒体加载。
- 完成后点击创建脚本,跳转至测试场景,设置测试所需的地理位置、并发用户数及加速/减速速度。


结论:如何进行流媒体负载测试:服务器、脚本及更多
随着视频和直播流媒体需求的增长及大量流量,这对行业提出了提供最佳服务和质量的挑战,以保持竞争力。提前对流媒体施加压力测试是必需且不可忽视的。我们展示了如何一步步设置测试场景及使用LoadView运行流媒体负载测试,LoadView为各类音视频编解码器及多种媒体格式提供广泛支持。我们还探讨了按需负载测试应用的方法。LoadView支持使用EveryStep Web Recorder及专用流媒体URI负载测试,为流媒体内容负载测试提供了全面支持。
了解更多关于流媒体负载测试的信息,并注册免费试用,最多可免费运行5次负载测试。