融云為2021 Qcon·北京站分享終端SDK質(zhì)量保障的最佳實(shí)踐

2021年5月29-31日,由極客邦科技旗下 InfoQ 中國(guó)主辦的綜合性技術(shù)盛會(huì) QCon 全球軟件開(kāi)發(fā)大會(huì)于北京召開(kāi)。大會(huì)設(shè)置了包括“人工智能驅(qū)動(dòng)業(yè)務(wù)實(shí)踐”、“云原生技術(shù)應(yīng)用”、“大數(shù)據(jù)實(shí)時(shí)計(jì)算與分析”、“音視頻體驗(yàn)提升實(shí)戰(zhàn)”、“低代碼實(shí)踐與應(yīng)用”、“彈性工程及運(yùn)維體系”等在內(nèi)的 35 個(gè)技術(shù)專題,邀請(qǐng)業(yè)界頂級(jí)的技術(shù)專家,面向技術(shù)團(tuán)隊(duì)負(fù)責(zé)人、架構(gòu)師、工程總監(jiān)、開(kāi)發(fā)人員分享技術(shù)創(chuàng)新和實(shí)踐。

融云為2021 Qcon·北京站分享終端SDK質(zhì)量保障的最佳實(shí)踐

圖1:2021Qcon·北京站

在音視頻服務(wù)解決方案專場(chǎng)中,全球互聯(lián)網(wǎng)通信云領(lǐng)先廠商融云作為受邀嘉賓,重點(diǎn)解析了融云音視頻SDK的自動(dòng)化測(cè)試鏈路探索與實(shí)踐,讓開(kāi)發(fā)者了解了SDK 打包集成測(cè)試過(guò)程中的難點(diǎn)痛點(diǎn),以及多樣性 SDK 自動(dòng)化交互測(cè)試設(shè)計(jì)思路。

測(cè)試的終極目標(biāo)是保證SDK質(zhì)量

融云自2014年創(chuàng)立以來(lái),專注于通信云賽道,以提供SDK/API的方式,為數(shù)百種應(yīng)用場(chǎng)景賦予通信云能力。為了不斷滿足開(kāi)發(fā)者對(duì)產(chǎn)品功能的需求,成立7年來(lái),融云的SDK接口數(shù)量從279個(gè)增長(zhǎng)到597個(gè),服務(wù)端的API接口數(shù)量從36個(gè)增長(zhǎng)到107個(gè),并且適配Android、iOS、Web、Flutter、小程序、桌面版等全平臺(tái)。

同時(shí),融云還將眾多的SDK集合成不同類型的Demo,方便開(kāi)發(fā)者調(diào)用,覆蓋了直播模式SealLive、即時(shí)通訊SealTalk、融云課堂SealClass、實(shí)時(shí)音視頻SealRTC、語(yǔ)音聊天室SealMic、視頻會(huì)議SealMeeting等眾多場(chǎng)景。這些場(chǎng)景化的Demo和SDK已累計(jì)服務(wù)超過(guò) 30萬(wàn)款A(yù)pp,SDK觸達(dá)50億用戶。

伴隨著SDK數(shù)量增長(zhǎng),和場(chǎng)景Demo的多樣化,開(kāi)發(fā)者最關(guān)心的是融云如何保障終端SDK的質(zhì)量。會(huì)上,融云自動(dòng)化測(cè)試架構(gòu)師陳沛杰發(fā)表了《融云 SDK 交付質(zhì)量保障探索及應(yīng)用》的主題演講,從實(shí)戰(zhàn)經(jīng)驗(yàn)出發(fā),為開(kāi)發(fā)者答疑解惑。

融云為2021 Qcon·北京站分享終端SDK質(zhì)量保障的最佳實(shí)踐

圖2:融云自動(dòng)化測(cè)試架構(gòu)師陳沛杰發(fā)表演講

目前,衡量音視頻質(zhì)量的指標(biāo)眾多,分為直接與音視頻相關(guān)的和與網(wǎng)絡(luò)相關(guān)的兩大類。其中,直接與音視頻相關(guān)的包括視頻連通率、卡頓、清晰度、花屏、黑屏、首幀時(shí)間,以及音頻嘯叫抑制、回聲抵消、噪聲抑制等;而在網(wǎng)絡(luò)傳輸中,弱網(wǎng)、丟包、延時(shí)、抖動(dòng)和網(wǎng)絡(luò)自適應(yīng)調(diào)整,也會(huì)影響終端SDK質(zhì)量。此外,CPU、內(nèi)存、IO、流量、發(fā)熱等性能指標(biāo),與安全、兼容相關(guān)的靜態(tài)代碼掃描、安全工具分析,以及版本兼容、設(shè)備碎片化等,也都是影響終端SDK質(zhì)量的因素。

因此,為交付有質(zhì)量保證的SDK,融云的做法就是兩個(gè)字:測(cè)試。只有通過(guò)測(cè)試,才能掌握這些指標(biāo),進(jìn)而針對(duì)薄弱環(huán)節(jié)加以優(yōu)化,確保SDK穩(wěn)定性。在測(cè)試環(huán)節(jié),融云通過(guò)工具化、腳本化的方式,實(shí)現(xiàn)Demo業(yè)務(wù)測(cè)試的自動(dòng)化,通過(guò)對(duì)業(yè)務(wù)測(cè)試、專項(xiàng)測(cè)試、SDK 接口測(cè)試的快速迭代,來(lái)跟進(jìn)和掌握相關(guān)指標(biāo)數(shù)據(jù)。

基于業(yè)務(wù)的專項(xiàng)自動(dòng)化測(cè)試實(shí)踐

融云對(duì)Demo業(yè)務(wù)自動(dòng)化測(cè)試的思考基于兩個(gè)維度:一個(gè)是如何實(shí)現(xiàn)業(yè)務(wù)自動(dòng)化測(cè)試,保證終端 SDK 產(chǎn)品多樣性以及多端交互的穩(wěn)定性?另一個(gè)是音視頻專項(xiàng)測(cè)試是如何進(jìn)行的?

在業(yè)務(wù)自動(dòng)化測(cè)試實(shí)踐方面,融云通過(guò)對(duì)終端業(yè)務(wù)自動(dòng)化測(cè)試工具的選型,制定出科學(xué)的終端業(yè)務(wù)自動(dòng)化測(cè)試流程。

融云為2021 Qcon·北京站分享終端SDK質(zhì)量保障的最佳實(shí)踐

圖3:終端業(yè)務(wù)自動(dòng)化測(cè)試流程

通過(guò)這一流程,首先可以實(shí)現(xiàn)在大量的 Android 、Web、iOS 、Win、Mac 之間任意自由組合,進(jìn)行多端交互、交叉測(cè)試。其次,利用插件重點(diǎn)關(guān)注連通率、穩(wěn)定性、畫(huà)面檢測(cè)(黑屏、綠屏等)、性能數(shù)據(jù)、弱網(wǎng)和抓包數(shù)據(jù)等重要質(zhì)量指標(biāo)。第三,完整保存了終端過(guò)程數(shù)據(jù)。例如:日志、真實(shí)終端渲染后音頻、視頻畫(huà)面錄制等。

在音視頻專項(xiàng)測(cè)試的實(shí)踐方面,測(cè)試需要實(shí)現(xiàn)端到端的整體覆蓋,包括采集、預(yù)處理、編碼,到網(wǎng)絡(luò)傳輸,再進(jìn)行解碼、后處理和渲染的整個(gè)傳輸過(guò)程。

融云為2021 Qcon·北京站分享終端SDK質(zhì)量保障的最佳實(shí)踐

圖4:音視頻專項(xiàng)測(cè)試實(shí)踐

要完成這一過(guò)程,陳沛杰以音視頻抗丟包自動(dòng)化測(cè)試為例,介紹了主要步驟:

通過(guò)業(yè)務(wù)UI自動(dòng)化平臺(tái)鏈接到網(wǎng)損儀路由;

由接口調(diào)用網(wǎng)損儀的相關(guān)參數(shù)傳輸至終端設(shè)備,錄制終端畫(huà)面后,上傳至平臺(tái)。

第三, 自動(dòng)或人工分析,完成音視頻抗丟包自動(dòng)化測(cè)試。

此外,融云還可通過(guò)傳統(tǒng)手工+測(cè)試工具結(jié)合的方式,進(jìn)行自動(dòng)化測(cè)試,完成端到端的延時(shí)測(cè)試,以及通過(guò)工具實(shí)現(xiàn)性能數(shù)據(jù)統(tǒng)計(jì)等。

通過(guò)這些測(cè)試,最終可以掌握諸如CPU 占用率、內(nèi)存占用值、耗電量、流量、FPS、卡頓等相關(guān)性能指標(biāo),以及視頻、聲音延遲;視頻、聲音質(zhì)量;嘯叫距離、嘯叫抑制和音頻、視頻通話抗丟包的測(cè)試數(shù)據(jù)。

融云SDK接口自動(dòng)化測(cè)試探索

所謂SDK接口自動(dòng)化測(cè)試,就是要驗(yàn)證SDK 接口字段校驗(yàn)覆蓋率、SDK 接口復(fù)雜調(diào)用的可測(cè)試性以及系統(tǒng)版本及設(shè)備碎片化覆蓋率。目前,普遍使用的SDK接口測(cè)試方案有三種:SDK單元測(cè)試、UI自動(dòng)化方法和注冊(cè)廣播方法。

融云為2021 Qcon·北京站分享終端SDK質(zhì)量保障的最佳實(shí)踐

圖5:SDK接口測(cè)試方案

在實(shí)踐中,融云認(rèn)為SDK自動(dòng)化測(cè)試工具應(yīng)具備以下能力:

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

第二,可以對(duì) SDK 接口字段進(jìn)行自由組合邏輯校驗(yàn);

第三,可以范圍性的開(kāi)展 SDK 打包集成測(cè)試。

基于此,融云對(duì)SDK自動(dòng)化測(cè)試工具進(jìn)行了兩次探索與迭代,第一版采用的是終端設(shè)備微服務(wù)模式,SDK 接口綁定 URL 地址;第二版則通過(guò) URL 動(dòng)態(tài)反射接口,實(shí)現(xiàn)了參數(shù)動(dòng)態(tài)反射序列化。

最后,陳沛杰強(qiáng)調(diào):自動(dòng)化測(cè)試要盡可能在短的測(cè)試周期內(nèi)達(dá)到更高的覆蓋率,并且自動(dòng)化測(cè)試盡量不以流程為中心,應(yīng)適應(yīng)場(chǎng)景快速變化的需要。

融云為2021 Qcon·北京站分享終端SDK質(zhì)量保障的最佳實(shí)踐

圖 6:開(kāi)發(fā)者聆聽(tīng)演講

結(jié)語(yǔ)

通過(guò)測(cè)試和優(yōu)化,目前,融云音頻最大抗丟包可達(dá)80%,視頻最大抗丟包40%;語(yǔ)音延遲小于120 ms,視頻延遲小于 200 ms,語(yǔ)音直播延遲小于350 ms,視頻直播延遲小于350 ms,可保障端到端之間延遲無(wú)感知的實(shí)時(shí)互動(dòng)。從陳沛杰的分享中也能夠看出,融云之所以擁有卓越的音視頻能力,源于融云對(duì)于各項(xiàng)技術(shù)的嚴(yán)苛要求和不懈探索。過(guò)硬的指標(biāo),過(guò)硬的質(zhì)量,永遠(yuǎn)是融云追求的方向。

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。 )