天天看點

螞蟻金服終端實驗室演進之路

作者:周力(問瑾),螞蟻金服技術專家。本文将從支付寶業務特性出發,深度解析無線實驗叢集在支付寶的演進與發展,并探讨 IoT 與人機如何互動并提供真正落地的時間方案。

現場視訊(複制位址到浏覽器中打開):

http://t.cn/AiKDZg5G

0. 背景

作為國民級 App,支付寶用戶端需要為億級使用者提供多元化的服務,是以應用的穩定性與可靠性面臨巨大的挑戰,需要不斷地完善和優化。

今天,讓我們站在服務品質的全方位監控與優化的角度,從螞蟻終端實驗室的演進之路展開探讨,從借助使用開源的自動化方案,到自研并逐漸完善無線實驗叢集技術體系,支付寶内部經曆了怎樣的業務場景演練,以及相應的技術架構如何借助移動開發平台 mPaaS 對外輸出。

1. 發展曆程

總的來說, 螞蟻終端實驗室從誕生到現在,一共經曆過三個階段(工具化、服務化以及中台化),其每個階段都有特點和意義:

  • 工具化階段:

該階段主要以使用市面上主流開源軟體為主,如用戶端開源軟體 Appium, 其覆寫的端為 Android 和 iOS;通過這種開源工具和 App 測試流程結合的方式,快速滿足業務方的提測需求,進而幫助業務方完成一般意義上的自動化測試工作(如基本的功能測試、相容性測試等)。

  • 服務化階段:

服務化階段存在一個重要的背景:支付寶着手前後端研發流程分離,并逐漸沉澱出獨立的 App 端研發流程系統(研發協作流程與 App 建構流程)。在獨立的 App 研發流程和系統的基礎上,終端實驗室以一種服務化的形式支撐 App 的研發和協作, 處理滿足日常使用者自動化工作外,同時還擔當着持續內建、日常釋出前自動驗包工作等; 另外在日常釋出釋出提供品質資料支援,如用戶端代碼覆寫率統計等。

  • 中台化階段:

伴随着終端實驗室的能力不斷提升優化以及測試規模的逐漸擴大,服務上不僅需要滿足螞蟻金服體系 App(支付寶、口碑、網商銀行等)日常測試需求,而且還需要将能力擴散覆寫到整個阿裡巴巴集團的業務。

随之而來的是實驗室需要面臨多樣化的業務方需求和定制化功能,如何在多元複雜的業務環境中,與業務方或者說上遊系統完成能力共建?帶着這個問題,終端實驗室逐漸沉澱并着手建設中台化平台:一方面讓通用服務不斷下沉,另一方面抽象出标準 SDK 的方式,讓業務方根據自身業務特點建設特定的能力。

此外,在建設平台化的同時,終端實驗室貼合支付寶業務場景的發展,建構如網絡實驗室、掃碼實驗室等一系列真實實驗室的能力。

經曆了幾年的不斷發展,終端實驗室逐漸完成了中台化的轉變,其端上覆寫了 Android、iOS 以及 IoT 裝置,服務上覆寫了通用能力、小程式準入、研發流程建設、真機租用以及用例管控等。

2. 技術生态

在了解完終端實驗室的曆程之後,我們能夠對其提供的服務有一個全面的認識。當我們去總結和分析這些服務時,可以把這些具體能力分為三大塊:平台服務能力、用戶端SDK 以及 實驗室能力。

  • 平台服務能力

平台服務能力的目标是聚焦“如何把螞蟻實驗室建構成一個更為開放的平台”,是以我們需要考慮到如何讓更多的業務方和上遊系統一起參與能力共建,進而将平台的建設思路分為 2 大部分:裝置實驗叢集和開放SDK。

1. 裝置叢集

螞蟻實驗室不僅包含數以千計的公用終端裝置,覆寫市面絕大多數手機終端,幫助業務同學完成日常自動化測試工作,而且提供了使用者自建實驗室的方式:使用者隻需要根據自身業務場景特性進行裝置采購、實驗室部署,便具備在自有平台上運作自有裝置的能力。

從平台的開放性與部署動态化角度看,目前裝置叢集能保證裝置歸屬和業務場景做到充分隔離,保證各業務在平台使用上能互相獨立。另外,面對阿裡巴巴集團衆多研發中心,裝置叢集在部署上也支援多地部署、互相隔離。

2. 開放SDK

為了給上遊系統和使用者提供更為開放的能力,幫助業務方根據自身需求完成能力建設。終端實驗室提供開放的 SDK 能力:上遊系統隻需在自己服務上接入 SDK,就能夠完成任務建構鍊路,從用例管理、裝置選擇、任務執行,到執行結果回調,在此基礎上使用者就能夠根據自身業務特點将業務資料進行多元度組合,形成自己的能力輸出。

  • 用戶端 SDK

終端實驗室經過幾個階段的發展,不僅提供 UI 自動化架構能力,而且在一些複雜場景做了深入研究和落地的工作。在這裡我們以令大家頭痛的“App 相容性驗證”作為切入點,結合目前常用的幾種機器學習方案,分析方案的優缺點,最終形成了終端實驗室的解決方案。

一方面伴随着移動網際網路的快速發展,目前市面上手機的品牌和型号層出不窮,如何快速準确的驗證 App 的功能在不同類型手機上運作有效性與穩定性,的确是件困難的事情;另一方面,目前針對圖檔的機器學習技術日益成熟,其圖識别的準确性也完全能夠滿足日常相容性的要求。

通常來說相容性測試會采用兩種方式:1.圖像相似度計算;2. 無監督的異常點聚類。 這兩種方式在使用方式和結果輸出都有其優缺點:

  • 對于“圖像相似度計算”來說,其異常圖檔的識别成功率非常高,但其前提條件比較苛刻:使用者需要對每一版 App 以及每一個業務點進行圖檔搜集和上傳,而往往每條用例可能會包含少則幾張圖檔多則十幾張圖檔,對于幾百、甚至幾千條測試用例來說,就算是一版 App 的期望圖檔搜集工作都是巨大的,何況目前移動網際網路普遍都是快速疊代釋出,是以導緻了這種預先處理圖檔的方式是不太可行的,下圖是一般意義以圖搜圖的資料流:
  • 另一種常用的方案是直接将同一業務場景下不同手機的一組截圖交給無監督的異常點聚類算法處理,這種方案的優點比較明顯:對于使用者和平台來說,沒有增加的額外的工作量,操作簡單,但帶來的問題是,計算出來的結果并不完全可信,特别是在一些極端情況下(如某一類異常圖檔總數較多的情況),少數正常的圖檔反而會被識别成異常圖檔,告知給業務方。

對比以上兩種技術方案,終端實驗室在相容性異常圖檔發現上采用了更加靈活的方案,通過手機端“異常目标檢測”和服務端“異常點聚類”相結合的方式完成目标。

首先,平台搜集常見異常圖檔,并訓練成模型,植入手機端。

其次,當使用者執行相容性測試的時候,在手機端完成一部分“常見異常圖檔”的發現工作。

再次,當任務執行完後,服務端将剩下一部分圖檔交給““異常點聚類”處理,并進一步是被不同的圖檔。

最後,在整個執行任務結束後,平台就能有效識别異常圖檔,另外當異常圖檔未被有效識别的情況下,又可以在平台上快速送出異常圖檔,并交給算法邏輯繼續學習,形成新的模型,進而在下一次任務執行過程中,就能把這種新發現的異常捕獲住。

通過這種靈活的方案,一方面大大提升了異常圖檔檢測結果的準确度,另一方面在整個異常圖檔的發現上形成了閉環,大大提升的相容性測試的效能。

  • 實驗室能力

為了應對日益複雜的使用者使用環境和不穩定的運作環境,終端實驗室不斷去建構各種專項實驗室,盡可能在實驗室環境裡就把問題發現并推動研發流程去解決。同時伴随着 IoT 時代的到來,面對種類繁多的終端裝置,如何能夠通過實驗技術的手段幫助研發同學提升效能,是一個新問題也是一個比較有挑戰的問題:終端實驗室通過托管 IoT 裝置的方式,讓使用者快速友善尋找裝置,并進行功能驗證。具體技術方案是在原有的 Android/iOS 真機租用方案的基礎上做了能力更新。

第一, 将終端實驗室上某一款手機和 IoT 裝置做關聯,保證當浏覽器通過 WS 遠端操作手機打開攝像頭就能夠看到對應的 IoT 裝置;

第二,通過 WS 讀取 IoT 序列槽的 trace 資訊,并将資料以 WS 的形式推送到使用者浏覽器端;

第三,在主控端上內建 IoT 裝置操作的 SDK,保證主控端能夠通過指令行或者 HTTP 方式操控 IoT 裝置;

第四,主控端內建語音轉文字 SDK,這樣當 IoT 裝置發出聲音時,就能夠在頁面上以文字的方式告訴用例。

通過這種遠端 IoT 租用的方式,使用者就能夠快速做作一台遠端裝置,另外在給 IoT 裝置發送指令的同時,可以看到裝置的相應資訊(視覺展示、聲音展示以及實時日志資訊),進而達到快速驗證的目的。

  • 機械臂掃碼測試:

  • 智能機櫃支援真機雲測

3. 借助 mPaaS 對外輸出

以上介紹的螞蟻金服終端實驗室相應能力的建構與實踐,目前已經通過移動開發平台 mPaaS 對外輸出一部分能力。

在 mPaaS 平台上,我們将自動化測試架構,真機排程管理,場景化測試方案以及詳盡的測試報告方案整合外部客戶的現有業務場景和系統,進而覆寫 App 開發期的各個階段,確定應用上線前擷取充分測試,發現 bug,減少線上問題,提高整體使用者體驗。

目前,終端實驗室不僅對内服務了包括螞蟻金服體系下的支付寶 App、網商銀行、口碑商家等,同時借助 mPaaS 與大量生态合作夥伴一同共建能力,包括常熟農商行、西安銀行、泰隆銀行等。由于篇幅限制,很多技術要點我們無法一一展開,歡迎大家通過技術文檔或點選“閱讀原文”進一步了解 mPaaS :

https://tech.antfin.com/docs/2/49549

| 活動推薦:MTSC 2019 測試開發大會

MTSC2019 第五屆中國移動網際網路測試開發會将于 6 月 28-29 日在北京國際會議中心舉行,50+ 來自 Google,BAT,TMD 等一線網際網路企業的測試大咖分享精彩議題,涵蓋移動自動化測試、服務端測試、品質保障 QA、高新測試技術(AI+、大資料測試、IoT 測試)等專題。

螞蟻金服多位技術專家将在大會上分享精彩議題,解密螞蟻金服内部移動測試 2.0+ 演進之路、代碼實時染色系統如何完成代碼覆寫率檢測等,期待與你交流。

往期閱讀 《開篇 | 螞蟻金服 mPaaS 服務端核心元件體系概述》 《螞蟻金服 mPaaS 服務端核心元件:億級并發下的移動端到端網絡接入架構解析》 《mPaaS 核心元件:支付寶如何為移動端産品建構輿情分析體系?》 《mPaaS 服務端核心元件:移動分析服務 MAS 架構解析》 《螞蟻金服面對億級并發場景的元件體系設計》 《自動化日志收集及分析在支付寶 App 内的演進》

關注我們公衆号,獲得第一手 mPaaS 技術實踐幹貨

釘釘群:通過釘釘搜尋群号“23124039”

期待你的加入~

繼續閱讀