利用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. 結束語
關于視頻服務壓力測試,這次的分享就到這里咯。還請各位觀眾老爺多多交流指正哦。
總結
以上是生活随笔為你收集整理的利用kite对视频流应用进行压力测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 没有域可以加文件服务器吗,文件服务器没有
- 下一篇: 全球服务器系统市场份额,IDC发布201