提供 Web 会议服务的 Web 浏览器应用程序(例如远程检查、网络摄像头检查或在线视频会议 Web 工具)的性能测试可能很复杂。

例如,您可能想要检查当超过 100 名参与者连接到您的在线视频会议平台并同时通话和流式传输时系统的行为方式。 虽然手动测试可能是偶尔检查或小型负载测试的一种选择,但当您的测试人员和硬件数量有限时,很难涵盖所有方案并实现连续监视和负载测试。 为了简化此任务,Dotcom 监视器引入了新的网络摄像头和麦克风仿真功能,该功能允许在浏览器窗口中进行 Web 会议负载测试和监视,以提供最真实的测试结果。

在本文中,我们将学习如何使用Dotcom-Monitor的每个 步骤脚本工具桌面 将音频和视频流仿真功能添加到测试脚本中。

工作原理

简而言之,每次目标 Web 应用程序请求访问最终用户设备上的网络摄像头和麦克风时,Dotcom 监视器都会在浏览器中模拟视频和音频流。 为此,我们会在 Chrome 浏览器中运行预先录制的用户交易序列,并使用自定义音频/视频文件来传递预先录制的媒体。

Dotcom 监视器没有本地可用存储。 在执行媒体流步骤之前,您需要将媒体文件从在线公开可用的文件存储传递到脚本。 每次执行脚本时,Dotcom 监视器都会将文件从提供的 URL 下载到我们的系统,并在浏览器窗口中播放它以模拟视频和音频捕获硬件。

如果您对测试媒体文件没有特殊要求,我们建议使用可从 Dotcom 监视器 CDN 存储直接下载到脚本的测试文件:

音频文件 视频文件
30 秒 https://d149yd38g6ldk.cloudfront.net/30sec.wav https://d149yd38g6ldk.cloudfront.net/WebCam30s.y4m
1 分钟 https://d149yd38g6ldk.cloudfront.net/1min.wav https://d149yd38g6ldk.cloudfront.net/WebCam1m.y4m

使用自定义媒体文件

对于负载测试,请确保要在测试中使用的文件存储系统具有足够的容量来维持测试运行期间的负载。 否则,在测试执行期间可能会出现与文件下载相关的错误。 对于 Web 性能监视方案,使用非常可靠的存储系统来确保无缝访问测试媒体和快速加载时间也很重要。

作为优化媒体文件传递到 Dotcom 监视器的最佳做法,在运行负载测试或监视时,我们建议将测试媒体文件上传到可靠的 CDN 存储。

支持的文件格式和大小限制

媒体文件大小限制为 20 MB。

我们目前支持以下媒体文件格式用于测试目的。

对于视频文件:

YUV4MPEG2 (a.k.a. Y4M)

您可以在此处找到有关文件格式的更多信息: http://wiki.multimedia.cx/index.php?title=YUV4MPEG2

对于音频文件:

WAV

录制脚本分步指南

首先,下载桌面版本的“每个步骤脚本工具”。 请参阅我们 wiki 的“ 使用每个步骤脚本工具桌面” 一文中有关如何安装和使用该工具的方法。

在桌面版本的“每个步骤记录器”中,记录到目标 Web 会议应用程序的导航并启动媒体流会话(例如,单击“开始视频”或“允许访问网络摄像头”)。 然后保存脚本。

若要添加媒体流模拟步骤,请在 Web 应用导航行之前添加以下方法:

tab0.Download (string  wavFileName, string wavFileURL);
tab0.Download (string  y4mFfileName, string y4mFileURL);
UseFileForFakeMediaCapture (MediaType.Microphone, string  wavfileName); 
UseFileForFakeMediaCapture (MediaType.Camera, string  y4mFileName);

参数定义

wav文件名 字符串 – 用于音频仿真的.wav文件名

y4m文件名 字符串 – 用于视频仿真的.y4m文件名

wav文件网址 字符串 – 音频文件网址

y4m文件网址 字符串 – 视频文件网址

确保文件名在整个脚本中保持一致。

若要为媒体流步骤保留更多时间,请在媒体流步骤末尾添加 延迟 行。

找到下面的脚本示例。

// script_version=3.0; everystep_version=0; date=9/29/2022; Chrome=91.0.4472.77
Tabs.SetSize (1820, 471);
DMBrowser tab0 = null;
Step (1, "Index of /video/derf/y4m - https://media.xiph.org/video/derf/y4m/");
tab0 = Tabs.NewTab ();
//Download a test audio file
tab0.Download ("sample3.wav", "https://filesamples.com/samples/audio/wav/sample3.wav");
//Download a test video file
tab0.Download ("bus_qcif_7.5fps.y4m", "https://media.xiph.org/video/derf/y4m/bus_qcif_7.5fps.y4m");
//Emulate a webcam video stream and mic audio
UseFileForFakeMediaCapture (MediaType.Microphone, "sample3.wav");
UseFileForFakeMediaCapture (MediaType.Camera, "bus_qcif_7.5fps.y4m");
tab0.GoTo ("https://media.xiph.org/video/derf/y4m");
//Click a button to allow access to webcam
tab0.Button ("//BUTTON[normalize-space()=\"Init\"]", "//BUTTON[normalize-space(text())=\"Init\"]", "//DIV//BUTTON").Click ();
Delay ("10sec".ToDuration ());