奧推網

選單
科技

Qcon全球軟體開發大會 融雲分享SDK交付質量保障經驗

2021年5月29-31日,由極客邦科技旗下 InfoQ 中國主辦的綜合性技術盛會 QCon 全球軟體開發大會於北京召開。大會設定了包括“人工智慧驅動業務實踐”、“雲原生技術應用”、“大資料實時計算與分析”、“音影片體驗提升實戰”、“低程式碼實踐與應用”、“彈性工程及運維體系”等在內的 35 個技術專題,邀請業界頂級的技術專家,面向技術團隊負責人、架構師、工程總監、開發人員分享技術創新和實踐。

圖1:2021Qcon·北京站

在音影片服務解決方案專場中,全球網際網路通訊雲領先廠商融雲作為受邀嘉賓,重點解析了融雲音影片SDK的自動化測試鏈路探索與實踐,讓開發者瞭解了SDK 打包整合測試過程中的難點痛點,以及多樣性 SDK 自動化互動測試設計思路。

測試的終極目標是保證SDK質量

融雲自2014年創立以來,專注於通訊雲賽道,以提供SDK/API的方式,為數百種應用場景賦予通訊雲能力。為了不斷滿足開發者對產品功能的需求,成立7年來,融雲的SDK介面數量從279個增長到597個,服務端的API介面數量從36個增長到107個,並且適配Android、iOS、Web、Flutter、小程式、桌面版等全平臺。

同時,融雲還將眾多的SDK集合成不同型別的Demo,方便開發者呼叫,覆蓋了直播模式SealLive、即時通訊SealTalk、融雲課堂SealClass、實時音影片SealRTC、語音聊天室SealMic、影片會議SealMeeting等眾多場景。這些場景化的Demo和SDK已累計服務超過 30萬款App,SDK觸達50億使用者。

伴隨著SDK數量增長,和場景Demo的多樣化,開發者最關心的是融雲如何保障終端SDK的質量。會上,融雲自動化測試架構師陳沛傑發表了《融雲 SDK 交付質量保障探索及應用》的主題演講,從實戰經驗出發,為開發者答疑解惑。

圖2:融雲自動化測試架構師陳沛傑發表演講

目前,衡量音影片質量的指標眾多,分為直接與音影片相關的和與網路相關的兩大類。其中,直接與音影片相關的包括影片連通率、卡頓、清晰度、破圖、黑屏、首幀時間,以及音訊嘯叫抑制、回聲抵消、噪聲抑制等;而在網路傳輸中,弱網、丟包、延時、抖動和網路自適應調整,也會影響終端SDK質量。此外,CPU、記憶體、IO、流量、發熱等效能指標,與安全、相容相關的靜態程式碼掃描、安全工具分析,以及版本相容、裝置碎片化等,也都是影響終端SDK質量的因素。

因此,為交付有質量保證的SDK,融雲的做法就是兩個字:測試。只有透過測試,才能掌握這些指標,進而針對薄弱環節加以最佳化,確保SDK穩定性。在測試環節,融雲透過工具化、指令碼化的方式,實現Demo業務測試的自動化,透過對業務測試、專項測試、SDK 介面測試的快速迭代,來跟進和掌握相關指標資料。

基於業務的專項自動化測試實踐

融雲對Demo業務自動化測試的思考基於兩個維度:一個是如何實現業務自動化測試,保證終端 SDK 產品多樣性以及多端互動的穩定性?另一個是音影片專項測試是如何進行的?

在業務自動化測試實踐方面,融雲透過對終端業務自動化測試工具的選型,制定出科學的終端業務自動化測試流程。

圖3:終端業務自動化測試流程

透過這一流程,首先可以實現在大量的 Android 、Web、iOS 、Win、Mac 之間任意自由組合,進行多端互動、交叉測試。其次,利用外掛重點關注連通率、穩定性、畫面檢測(黑屏、綠屏等)、效能資料、弱網和抓包資料等重要質量指標。第三,完整儲存了終端過程資料。例如:日誌、真實終端渲染後音訊、影片畫面錄製等。

在音影片專項測試的實踐方面,測試需要實現端到端的整體覆蓋,包括採集、預處理、編碼,到網路傳輸,再進行解碼、後處理和渲染的整個傳輸過程。

圖4:音影片專項測試實踐

要完成這一過程,陳沛傑以音影片抗丟包自動化測試為例,介紹了主要步驟:

透過業務UI自動化平臺連結到網損儀路由;

由介面呼叫網損儀的相關引數傳輸至終端裝置,錄製終端畫面後,上傳至平臺。

第三, 自動或人工分析,完成音影片抗丟包自動化測試。

此外,融雲還可透過傳統手工+測試工具結合的方式,進行自動化測試,完成端到端的延時測試,以及透過工具實現效能資料統計等。

透過這些測試,最終可以掌握諸如CPU 佔用率、記憶體佔用值、耗電量、流量、FPS、卡頓等相關效能指標,以及影片、聲音延遲;影片、聲音質量;嘯叫距離、嘯叫抑制和音訊、影片通話抗丟包的測試資料。

融雲SDK介面自動化測試探索

所謂SDK介面自動化測試,就是要驗證SDK 介面欄位校驗覆蓋率、SDK 介面複雜呼叫的可測試性以及系統版本及裝置碎片化覆蓋率。目前,普遍使用的SDK介面測試方案有三種:SDK單元測試、UI自動化方法和註冊廣播方法。

圖5:SDK介面測試方案

在實踐中,融雲認為SDK自動化測試工具應具備以下能力:

第一,大部分 SDK 介面做到脫離 UI 可以快速迭代;

第二,可以對 SDK 介面欄位進行自由組合邏輯校驗;

第三,可以範圍性的開展 SDK 打包整合測試。

基於此,融雲對SDK自動化測試工具進行了兩次探索與迭代,第一版採用的是終端裝置微服務模式,SDK 介面繫結 URL 地址;第二版則透過 URL 動態反射介面,實現了引數動態反射序列化。

最後,陳沛傑強調:自動化測試要儘可能在短的測試周期內達到更高的覆蓋率,並且自動化測試儘量不以流程為中心,應適應場景快速變化的需要。

圖 6:開發者聆聽演講

結語

透過測試和最佳化,目前,融雲音訊最大抗丟包可達80%,影片最大抗丟包40%;語音延遲小於120 ms,影片延遲小於 200 ms,語音直播延遲小於350 ms,影片直播延遲小於350 ms,可保障端到端之間延遲無感知的實時互動。從陳沛傑的分享中也能夠看出,融雲之所以擁有卓越的音影片能力,源於融雲對於各項技術的嚴苛要求和不懈探索。過硬的指標,過硬的質量,永遠是融雲追求的方向。