zoukankan      html  css  js  c++  java
  • 利用kite对视频流应用进行压力测试

    1. 前言

    工作中使用到了视频流服务,在前期的选型中,苦于无法测试视频服务的稳定性,扩展性,经过一番尝试终于测试成功,特此记录下来。

     

    2. 使用工具

    OPENVIDU:视频服务平台

    FFMPEG:多媒体视频处理工具,用于切割视频流,音频流

    KITE:WEBRTC测试引擎

    ZABBIX:服务器监控软件

    INTELLIJIDEA:JAVA开发工具,用于编写自己的测试用例

     

    3. 使用

    前期的安装工作就不在此赘述了,主要梳理一下我遇到的几个坑

    1.openvidu的安装中,最好使用Ubuntu16.04,Ubuntu Bionic18.04会存在一些限制,因为Ubuntu Bionic18.04不支持使用OpenCV过滤器.这样就无法使用音视频过滤器。

    2.视频流使用最好用y4m格式,音频流最好使用wav格式,因为后续利用到Google浏览器的handless模式,该模式支持这2中格式较好。选取好对应分辨率的视频原文件后,利用ffmpeg切割出相应格式的流媒体文件。命令是:

     

      

    值得注意的是y4m格式都比较大,像我这个源视频才32MB,但是y4m格式是8.19G,需要预留出足够的空间。

    3.Kite的安装简单,但在构建部署,kite会下载google浏览器的驱动文件,由于国内的环境限制,要么FQ下载,要么事先下载好再放到如下位置:

     

     

    4. 需要统一测试浏览器的版本和相对应的驱动版本,不一致的情况下是无法调用成功的。地址见:http://chromedriver.storage.googleapis.com/index.html

    5. 测试用例的基本逻辑是利用selenium模拟人操作被测应用,用准备好的视频流,音频流充当应用的视频音频来源,接着使用ZABBIX来监控服务器资源的占用,测试出服务器极限。

    5.1 测试用例配置文件分析:

     

    Grids:指定selenium grids的地址

     

    tests:测例列表主要关注的是

    tupleSize: 浏览器的实例数量,数量设置10时,代表测试会开启10个浏览器实例,selenium默认开启5个实例,可通过修改启动项(localGridchromestartNode.bat)改变。

    testImpl: 测例入口文件

    payload: 自定义键值对数据,可以传递到测例中供测试使用

     

    client: 测试浏览器的配置,在这里就可指定上述的视频流,音频流位置,也可以指定使用的浏览器(browserName),浏览器模式(headless)等配置

    5.2 Java测例运行时的调用栈

    Engine.java main

    Engine.java runInterop

    TestRunThread.java call

    MatrixRunner.java run

    TestManager.java call

    KiteBaseTest.java execute

    KiteBaseTest.java testInParallel

    TestRunner.java call

    TestStep.java processTestStep

    TestStep.java execute

    TestStep.java step

    而我们编写的测例入口就是实现KiteBaseTest中的payloadHandling方法和populateTestSteps方法,前者可以解析config中payload中内容,后者则可以添加我们实现的Step子类实例

    比如下面截图中就有实现的步骤,可根据具体的软件来编写具体的步骤:

     

    比如第一个打开页面

     

    继承TestStep,实现step方法,通过webDriver对象打开浏览器输入并访问测试地址,并等待页面元素的出现。

    其他的步骤就不一一说明了,总的来说就是在step里面通过操作被测软件的页面元素来模拟人的操作(点击,输入字符等),用代码来实现功能的测试流程。

    5.3 由于使用的selenium grids,selenium框架提供了docker镜像,可方便的在云上使用。

     

    4. 结束语

    关于视频服务压力测试,这次的分享就到这里咯。还请各位观众老爷多多交流指正哦。

  • 相关阅读:
    html图片预览
    网易DBA私享会分享会笔记2
    网易DBA私享会分享会笔记1
    centos6.5适用的国内yum源:网易、搜狐
    如何去除 ckeditor 上传图片后在原码中留下的 style="width: 100%;height:100px"之类的代码呢?
    关于json.ajax ,php的那点事
    去掉所有的html标签
    about JNI
    some knowledge of maven {maven实战}
    What is Proguard?
  • 原文地址:https://www.cnblogs.com/eflypro/p/14363489.html
Copyright © 2011-2022 走看看