【騰訊TMQ】TBS三方SDK自動化探索

作者:張佳

團隊:騰訊移動品質中心TMQ

【導讀】

對於非宿主的合作伙伴來說,在TBS接入環節,“共享和下載內核”的能力是最重要的,它從根本上決定着APP是否能夠使用預期的X5內核提供服務。一旦出現問題,會導致無法加載X5內核或者優化策略失效,從而降低X5佔比。但面臨的一個問題是,SDK是跟隨TBS版本持續優化的,每次SDK發佈,都會有大批小夥伴更新apk來提測。

【測試時機】

SDK發佈後,會有合作方陸續接入新SDK提測,比如:

2.4 SDK發佈:某某視頻+2.4SDK,某某會+2.4SDK、某某輸入法+2.4SDK、某某寶+2.4SDK 等 ;

2.5 SDK發佈:某某直播+2.5SDK,某二次封裝SDK+2.5SDK、某東+2.5SDK、某某音樂+2.5SDK等 ;

3.1 SDK發佈:某某新聞+3.1SDK,某某音樂+3.1SDK、某某微信+3.1SDK 等。

【測試內容】

上面可以看到,每次更新接入新SDK的小夥伴還是比較多的,而我們主要測試兩個功能點:

(1)接入是否成功 ;

(2)接入後的SDK邏輯是否符合預期 。

具體表現爲,新的SDK在各種場景下是否能正常使用到內核,比如:

首次安裝三方,能共享宿主已有的內核 ;

共享A宿主內核後,若宿主升級到更高版本,三方能跟隨升級;

已共享A主內核後,若B宿主升級到更高版本,三方能跟隨B升級 ;

下發強制下載後,三方能走強制下載 ;

強制下載後,若宿主有更高版本,三方能跟隨升級,等等。

怎麼樣?

有沒有蒙圈,but這還只是一小部分%>_<%!

【人工測試】

合作方的接入時間是不定期的,一般來說。

步驟一:模擬三大宿主場景 。

(1)後臺配置宿主內核版本 ;

(2)宿主下載、安裝 ;

(3)確認宿主下載成功 。

步驟二:配置三方後臺 。

第三步:結果檢查 。

(1)讀取三方內核版本號;

(2)判斷是否符合預期。

【自動化的思考】

1、是否重要?

是。前面有介紹,一旦SDK邏輯出問題,會導致TBS使用異常,X5佔比降低。

2、是不是重複工作?

用例可複用。因爲對於同個版本的SDK,不同app的接入邏輯是一致的,可複用(有人會問那爲什麼每個app都要測一遍?因爲人家的接入對我們是不可見的,只有個打包的apk給過來,到底SDK的調用對不對,有沒有問題,是未知的)。

3、結果是否可判斷?

是的。三方內核版本號保存在合作方目錄下,可讀取後跟預期結果對比。

【自動化過程分析】

我們對人工測試的各個步驟進行分析,統計上看,人工測試最大部分耗時集中在:

宿主環境模擬耗時佔比:70%以上 。

宿主環境作爲三方共享的前提條件,是非常重要的,一旦條件不符合預期,直接影響後面的測試結果。

方法一:模擬測試過程,後臺配置—>宿主下載—>宿主安裝—>共享檢查。

實踐結論:失敗率高,不可行。

說明:出於用戶的流量考慮,TBS宿主在邏輯上有後臺流控,異常保護等諸多限制,反覆測試情況下,經常出現無法下載、安裝失敗等問題,導致宿主環境異常,無法成功安裝預設內核。

方法二:接口層觸發宿主下載

實踐結論:對他人影響較大,不適合。

說明:配置過程可行,但有個問題是接口配置後是UI不可見的,校驗比較麻煩,還有一點,測試環境是三地共用的,不可見的配置有可能干擾其他同學的測試。

方法三:宿主環境MOCK化。

實踐結論:可行 。

說明:首先將高中低三個待測內核下載到本地,並拷貝出來備份,在需要某個環境時push進宿主目錄下,跳過“配置-下載-安裝”環節,直接模擬安裝成功後的宿主環境。

【三方配置方式】

解決了宿主的環境模擬問題,我們再來看看看三方如何配置環境。由於三方的後臺環境是基於終端的定製需求,因此我們三方測試時,實際要關注兩方面:

第一,後臺下發是否正常。後臺需要結合終端上報的情況,和預設的後臺配置,下發預期的內核版本號給終端。

第二,終端根據後臺返回的結果,是否能夠共享或下載指定內核並調起使用。

考慮到以上因素,我們選用UI自動化的測試方式,優點在於兼顧後臺和終端,並且通過記錄tbslog方便隔離分析。

我們用的是chrome driver,在測試頁面導入預設配置,並且對配置結果截圖校驗。

【自動化測試結果】

以下以“某某新聞”爲例,我們來看看測試效果。實際中,可以利用夜間時間跑自動化,大大提高了測試效率。


【持續優化】

1、重跑機制:考慮到環境的不穩定性,我們對fail用例設置重跑邏輯,即fail後自動重跑2次,以此規避異常環境干擾;

2、實時報告機制:這是聽了組內google分享的心得,不用等所有用例跑完再郵件同步結果,一旦出現fail立即報告,這在調試階段非常有效,可快速發現腳本適配等問題;

3、監控彈框:對常見文字用Watcher批量監控,比如“是否更新”、“是否反饋”,排除APP自身彈框干擾。

【時間投入分析】

1、不同app進webview的場景不同,要花時間做適配;

2、某些app可能出現彈框提醒等提示,影響腳本運行,要做定向處理(由於彈框文字不確定,目前只能對常用的做處理,無法全面規避);

3、日常維護和問題解決跟進。

另外:某些插件化和內置等特殊形式的SDK測試不適用。

【思考和總結】

1、做前思考:自動化是手段,不是目的,做之前多想想是否適合做自動化,投入產出如何,想清楚了再動手做;

2、過程PK:當一種方式難以實現時,集思廣益,嘗試其他的方法,綜合考慮尋求最優方案;

3、持續優化:先跑起來,在過程中發現問題、解決問題 ;

4、數據積累:自動化的前期投入往往比較高,注意在應用中收集數據,發揮最大價值。

最後,附上TBS的SDK官網 http://tbs.sparta.html5.qq.com/tbs/sdk.html

關注微信公衆號:騰訊移動品質中心TMQ,獲取更多測試乾貨!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章