天天看點

TICA 2019 移動端App側的智能化測試實踐

導讀:“AI是一種技術通用解法”,“AI不是未來,AI已來”,AI已經應用于我們日常生活的方方面面。螞蟻金服國際技術品質及技術風險工程效能部鄧艾老師為我們介紹,當AI應用于測試領域,在移動端APP的智能化測試實踐中,又遇到了什麼非常特别的難題,以及是如何解決的。

TICA 2019 移動端App側的智能化測試實踐

同學們好,坐了一下午比較辛苦,我想說接下來的内容非常精彩,千萬不要錯過。今天我過來是有兩個身份在這裡,第一個身份是國際技術的無線品質和控制效能這個部分,我會分享我們在過去三年當中是怎麼做移動端智能化的測試。第二個部分是經濟體智能化測試小組的成員之一,這一塊給大家分享是關于在體系化領域當中如何利用AI。

首先AI是一種技術,可以解決各個領域當中的問題,是一種通用解法,隻要有資料。沒有資料怎麼辦?那就造資料。接下來我會講在移動端的測試領域當中怎麼利用AI解決痛點和難點。第三個部分對于一個部門和一個組織而言怎麼用體系化的技術解決測試領域的痛點問題,組織級的提升效能,最後是一個簡單的小結和展望。

1. AI是技術通用解法

TICA 2019 移動端App側的智能化測試實踐

AI是技術通用解法,無論是日常生活當中多多少少感受到所謂的行業裡面的AI的應用,一部分是我們會想這些AI技術能不能夠應用在測試領域當中。我們想象一下現在每天的生活,早上上班打卡的時候刷臉過門禁,口渴了去超市買飲料,用支付寶刷臉支付,下班回家的時候,自動駕駛帶你回家,回到家以後刷淘寶,刷抖音,會自動給你推薦你喜歡的商品,你喜歡的内容,你喜歡的小姐姐,你喜歡的小哥哥。

TICA 2019 移動端App側的智能化測試實踐

所有這些行業的應用,我将他歸為這麼幾類。

  • 第一類是識别類,比如說,人臉識别,貓臉識别,豬臉識别
  • 第二類是預測類,銷售預測,偏好預測
  • 第三類在預測的基礎上做商品推薦,内容推薦,文章推薦,各種推薦
  • 第四類是規劃類,比如說,自動駕駛。

這幾類應用在大家日常生活有所體驗,說明AI在一些領域成功大規模的商用,跟我們測試領域的測試同學有什麼關系,這些AI的技術能不能夠應用到測試領域當中呢?這是可以的。

怎麼應用呢?這裡我套用南門的一句話,叫做這是釘子和錘子的問題,什麼錘子,AI技術,什麼是釘子,測試領域當中的痛點和難點,我們既可以拿釘子找錘子,也可以拿錘子找釘子。舉一個例子,很多同學都是做QA的,一定踩過無數的坑,這些經驗可以用于代碼掃描,監控報警等等,我們測試中的痛難點之一,有大規模的自動化做得非常好,但是它的通過率不是這麼高,很難達到100%,大規模的自動化再加上通過率承接起來就是一個相當可觀數量的資料,本質上面是缺陷診斷的問題,這是聚類和分類的問題,這兩塊的應用後面有案例。

2. AI用于測試痛難點解決

TICA 2019 移動端App側的智能化測試實踐

接下來這個部分會講在移動端的測試過程當中,怎麼從一個一個的問題到一個體系化的解決,我們是怎麼做的。開始之前我想大概了解一下在座有多少同學使用過,這是對安卓和IOS原生架構做了封裝,核心原理是說我整個APP有一系列UI,能夠做到根據這些元素的屬性對這些判定他是否存在,是否存在和他對不對這是兩件事情,對于圖像類圖中的小圖示是一個LOGO,首先是一張圖檔,圖檔裡面有LOGO,也有可能有文案,怎麼驗證是對還是不對?這是一個難點。

怎麼解決呢?圖像識别,算法,提到圖像識别算法一定繞不開OpenCV,我們選用的是SIFT算法,核心就是提取出圖檔當中的一些關鍵特征,這些特征在不同的機型,在不同的分辨率下面有很好的适應性。使用SIFT算法用來做小圖示的驗證,我們用下來的結果大概有100萬次的調用,成功率在80%,為什麼是80%,還有20%?我告訴大家是超小圖示,他本身的特征非常少,即使SIFT不能滿足我們的驗證工作的需要,大家感受一下超小圖示,例如文本協定下面非常小的矩形框,比如說選擇座位的時候,空白座位背景全部都是白色,也是很細的一個座位的輪廓,怎麼樣能夠準确識别出來,他是一個空座位。SIFT算法已經不夠用。

TICA 2019 移動端App側的智能化測試實踐

用CNN,為什麼用CNN?大家知道CNN是比較适合在圖形圖像處理領域非常迅速的架構,今天這個案例的關鍵要點在于對于超小圖示,我們是反過來使用,怎麼過來使用,你可以說我有很多APP,我每個APP都有很多新版本,有很多新的小圖示,我事先把所有的超小圖示取出來打标和訓練,我們發現有變化,我們對于新識别出來的超小圖示進行泛化,用工具進行各種扭曲拉伸變形,然後打出一批資料放到模型裡面訓練,我們最終發現它的最終率99%以上,準确率非常高。

TICA 2019 移動端App側的智能化測試實踐

解決了小圖示的問題,超小圖示的問題,接下來就是數字鍵盤的問題,為了支付類的問題,為了确定安全,他有數字鍵盤,應用難題就是左側這個數字鍵盤,他是N個超小圖示構成的,他是一個構成,如果用SIFT算法隻能識别10個數字當中的1個,如果用OCR的結構識别文字的部分,數字部分無法識别。

TICA 2019 移動端App側的智能化測試實踐

用兩張網絡混合解決,一張是OCR的網絡,我們自己自研發的網絡,對于鍵盤的數字部分,用模型物體檢測網絡實作,最後将這兩個識别的結果做一個混合。實際上,這個物體識别的網絡,我們實作了并且做了孵化,在各個BU有複用。累計有700多萬次的調用,準确率達到99%以上。

TICA 2019 移動端App側的智能化測試實踐

解決了小圖示的問題,超小圖示的問題,接下來是維護成本的問題。關于這一塊我想要講幾個點,第一個點我所在的無線品質部門是橫向部門,我們所有的都要做測試,不僅說我們有十幾條的業務線,每一條業務線在過去幾年當中都是井噴式的發展,業務發展非常快。在人員規模沒有增長的情況下,必然帶來一個問題,怎麼樣能夠做到又快又好,怎麼樣使得效率數倍的提升。第二點在過去幾年當中整個國際技術有一項非常大的挑戰,就是國際化的挑戰,這意味着我們要輸出我們的技術,在東南亞幫助我們的合資公司,發展出他們本地的支付寶,能夠為當地帶來一些美好而微小的改變。現實的問題說,我們進去一看,由于各種原因,曆史的原因,發展水準的原因,合資公司的QA的技術水準跟我們有一定的差距,大家想象一下原始社會,PD開發測試30個人在一起圍一圈拿手機測試,測試完就可以上市,大家可以想象得到發版的品質是怎麼樣子。

從另外一個層面來說,奔着要幫助業務成功的角度來說,我們理論上面可以幫助他們做兜底,所有的測試我們可以來做,但是現實情況不允許,因為我們的QA的人數是他們QA人數的幾分之一,可能四分之一或者是五分之一,是以這一條做不到,應該怎麼辦?

TICA 2019 移動端App側的智能化測試實踐
TICA 2019 移動端App側的智能化測試實踐
TICA 2019 移動端App側的智能化測試實踐

大家都知道傳統的自動化技術維護成本相當高,我們應該怎麼解決呢,大概是在兩年前的這個時候我們下了一個決心,一定要用新的技術繞開object技術,用圖像識别的技術,意味着不需要依賴這麼重操作每個UIobject技術,文本和位置資訊,對文本和位置資訊做一層封裝,類似于用自然語言的指令和驅動操作指令驅動之間建立影射關系。其中smatch實作文本和位置識别,最後做出來的效果,你要寫自動化,隻要你會寫單詞,你就可以寫自動化,另外一個好處是說,我們将UI自動化成功左移到DEMO出來之後,等開發傳遞第一個版本直接跑版本,有問題就修複。

我們做過橫向的對比,平均下來寫 + 調試跑通,大概是8-10條,寫到12條已經很厲害,用Smatch正常是40-50條,整體上面來說效能有4-5倍的提升。我們是怎麼應用這個技術幫助我們的合資公司的小夥伴實作低成本的部署到本地。好處是說教育訓練之後,本地的小夥伴掌握了用Smatch的經驗,在我們撤出之後他們自動化的品質沒有降低。

TICA 2019 移動端App側的智能化測試實踐

解決了小圖示的問題,超小圖示的問題,解決架構自動化維護成本的問題,那麼還有什麼問題?我要講三個點,第一個就是說在座有多少同學負責的項目或者是産品出現過故障,大部分都有,大家都經曆過複盤,複盤一定有一種結論是這樣的,開發分析的時候遺漏的,測試分析的時候也遺漏,你問他為什麼遺漏了,他說就是遺漏,有沒有一種技術可以屏蔽掉他不知道自己不知道導緻的問題。

有一個PM過來問我說,你們的Smatch應用AI的技術已經這麼牛,為什麼做測試的時候還要他們去寫腳本,寫腳本也是要花時間的,能不能做到測試項目測試APP的時候不需要寫腳本,我思考幾秒鐘,可以的,你等我三個月。實際上,三個月之後第一個版本出來了,但是到後面不斷打磨使用上一年左右時間。第三個點,最近幾年在行業裡面,AI領域發生幾件大事,首先是Google的阿爾法狗打敗圍棋,還有就是遊戲裡面星際領域裡面打敗人類,既然AI的技術可以打遊戲,能不能用于APP的測試當中,我認為可以。為什麼呢?說白了遊戲所有的狀态是割裂的,所有的操作序列是有限可列的,我們的APP也是這樣的,除非你設計出反人類的APP是無限狀态的,我們的APP都是一個有限狀态機,它的狀态是有限可列的,操作路徑是有限可列的,基于這個想法我們成立一個項目。開始研究怎麼樣使用smartbot。有同學來問,你可以證明他覆寫所有的操作路徑,這些操作路徑是不是人類的操作路徑,有一些很傻無意義的操作路徑在裡面,我們稱之為第二個階段,我們使用NPR的技術。

它的核心原理是說我們的業務場景每一個APP裡面的業務場景是有限可列的,對于支付類的APP來說就是幾十個場景,這幾十個場景打标,打完标之後,使得他可以感受到自己在哪個業務場景的上下文中,他會選擇跟目前場景,目前業務場景的結果相關的獎勵值最高的一個方向去走。這樣我們就得出了和業務場景密切相關的一個操作序列,把無效無意義的操作路徑給跑掉了。

中間這個圖是我們拿一個業務場景做的覆寫之後的效果,這是他做所有的有意義的操作覆寫的一個有效圖,右邊同樣是這個圖,它的序列圖的展現模式。事實上這是很複雜的,通常有一種觀念說UI自動化也好或者怎麼樣也好,是沒有技術含量的,這是很簡單的事情,實際上這個序列圖和有向圖出來之後還是蠻震撼的,用智能技術用UI的測試是不簡單的。

這裡插入一個問題,有同學會問,你為什麼做UI的自動化?我的思考是這樣的,我們在移動端的測試是分層的,總體上面分兩層,一層是我們叫做CI991,我做到這個程度就足夠嗎,還是不夠的,我們的APP在實際應用場景當中涉及到多個的BU,人員需要一定規模的UI自動化。

解決了場景規劃的問題,最後還有一個問題,大家知道在移動端的測試領域裡面無論你線下測試無論是灰階還是生産,可能随時随地每時每刻都在報它的數量是巨大的,類型是複雜的,最關鍵的問題是說,怎麼能夠把這些問題去重,不要重複報,怎麼把這些問題分類到具體的開發同學,到底是應用層面的問題,還是運作容器的問題,怎麼能夠做到快速的報給開發。

為什麼用CNN,我們是用CNN網絡來分析,替代人工分析分析,錯誤堆棧的過程,CNN網絡對于抽象特征有非常好的表達和抽象能力,為什麼用RNN,是因為RNN本身具備一定的記憶能力,非常适合用于解決複雜的上下文關系當中的裡面的分類。無論是線下還是線上,出現問題要盡快修複,否則變成故障。

TICA 2019 移動端App側的智能化測試實踐
TICA 2019 移動端App側的智能化測試實踐
TICA 2019 移動端App側的智能化測試實踐
TICA 2019 移動端App側的智能化測試實踐

從最早的手動測試,大家想象一下我們合作的合資公司的小夥伴們,到UIobject的測試,智能化測試的能力,我們有一個産品叫做移動端的解決方案,這一套能力是國際無限品質團隊自然發展出來的,就有一個問題,這個問題是說,現在具備一定程度上面的體系化,也應用了很多AI的技術,在智能和效能上面有明顯的提升,當我作為一個管理者或者有想法的同學,我想要把這些經驗複制到一個部門或者是一個公司的時候,有沒有一套體系化的方法,能夠幫助到我。能夠體系化應用AI技術到整個部門,提高組織級的效能,有的。

我要隆重介紹一下經濟體的智能化小組,在這一塊邁出了一步,有一個智能化的測試标準,後面我會講,我相信這個智能化的測試标準在某種程度上面幫助到大家。在第三個部分開始之前,我們的SmartX左邊這個圖是如何做場景分類,我們選擇10%用人工打标,打标完之後放到模型裡面直接訓練,訓練完之後我們再去人工糾錯,最後看下來的效果需要糾錯的分類場景數量是在100-200之間,這個準确率和識别率非常高,右邊這兩張動圖我們應用在小程式和小遊戲裡面,他可以自動檢測出來出現什麼問題,自動報bug。

3. 體系化的使用AI技術來解決問題

TICA 2019 移動端App側的智能化測試實踐

我主要講兩個點,第一個點講釘子和錘子的問題,我們有錘子是指用的AI的技術,釘子是指我們日常工作當中測試領域裡面的各種痛點難點問題。釘子和錘子的問題,說白了我現在知道AI的技術有這些,這些技術怎麼能夠應用到測試領域當中去呢?另外一個在測試領域當中有痛難點,我應該去選擇?經驗規則算不算AI技術,我們認為算是,在智能化小組裡面有争議,最後我們認為是算的,他可以證明是有效的,維護成本比較高,每一條經驗規則需要人來維護。他可以做缺陷掃描,核對和報警。第二類是算法,聚類和分類和規劃,除了做前面經驗規則所能解決的問題,他還解決經驗規則無法解決的問題,随機操作覆寫,另外做排程類簡單曲線的定位,還可以做缺陷修複和缺陷檢測他就是一堆算法的應用,最後的準确率還是不錯的。機器學習能夠做的工作更多,特點是說強依賴算力和資料規模的。這裡我沒有把上面已經解決的都列入進來,他和一般意義上面的算法和經驗規則相比,他能夠做更加複雜的問題,複雜的場景降噪等等。

最後一塊是說屬于AI技術裡面比較前沿部分,就是學習如何去學習?這一塊舉一個例子,什麼叫自學習,大家知道Google的阿爾法狗非常強大,隻是用于下圍棋,這是它的局限性的問題,我們的自學習就是自己學習相關領域的知識和經驗,學術界是比較熱的一個方向。

TICA 2019 移動端App側的智能化測試實踐

第二個部分就是說,當我想在一個部門或者是一個組織裡面或者是多個組織裡面體系化的應用AI技術解決測試領域的問題,組織級提升效能的時候我應該怎麼做?智能化小組給出了一個參考,總體上面智能化标準,我們分為三層,第一層不僅對測試活動裡面每個具體測試活動給出了參考和指引,而且左側做了擴充,測試活動的左側做了擴充,測試活動的右側做了拓展。不僅僅是測試活動,他建構的對于整個品質體系的覆寫,不僅僅是檢測能力,包括預防,包括生産環境的檢測,都涵蓋在這個體系之内。第二個點針對每個緯度測試主體的6個緯度和左右側的兩個緯度,從L0到L5的劃分,主要是參考用什麼技術,第二他達到的效果是什麼樣的?第三個緯度是說,我有一個産品或者有一個工具或者是一個平台,想要達到初級智能化的水準,這是很困難的,因為他要求覆寫中間測試活動主體中6個緯度中的至少4個都達到L3的标準,才能被評定為L3。L4是說整個所有加起來8個緯度當中的6個都達到或者是超過L4的要求,才能被評估為L4。那L5就是8個當中的8個,這是一個理想當中的中台,無論是技術上面還是度量要求上面,難度都是非常高的。

TICA 2019 移動端App側的智能化測試實踐

總體來說,從L0-L5的分級裡面,首先從我們從衡量的效果和緯度來講,橫軸是效能的提升,品質的提升,對降低成本,對于量化的要求。還有一個點是規模化應用的程度,縱軸就是對AI的應用。無論是規則也好,算法也好,基于深度學習,強化學習,不同級别之間的差别是什麼。L0不用說,原始社會,L1工具輔助測試,部分工具替代了手工。從場景規劃一直到局限修複,L3我們認為他定位是初級的智能化的測試,錄制回放技術利用生産的流量到線下環境和老代碼去做一個對比,發現其中的缺陷,就是在L2的基礎上邁出一大步。對于回歸來說不需要規劃場景,用生産的流量用生産的場景替代人的思考和分析。那麼他為什麼沒有達到L4呢,因為L4要要求不僅是回歸場景,不需要人工的介入就可以達到覆寫,L5是無人值守,整個過程沒有人介入,從開發送出代碼到上線,一直到線上的日常的運維都不需要人。

有同學可能會問,每一個等級裡面的具體量化标準是怎麼定義出來的,我們是參考學術界,參考的工業具體落地的情況,稍微拔高的一點,從AI技術在各個行業的應用到他在測試領域當中應用的可能性,再到國際品質使用AI技術去解決一系列痛難點問題,到測試架構的無成本降低,場景規劃到缺陷診斷。我們核心是說AI技術是一種技術,是可以用來解決問題的,而且在測試領域當中也是可以應用的。

TICA 2019 移動端App側的智能化測試實踐

當一個組織希望系統化體系化的應用AI技術去解決問題,提升效能的時候可以參考經濟體智能化小組的智能化标準。AI是用來解決問題的,他是普遍解法,怎麼解決,釘子和錘子的問題,大家既可以拿着AI技術去找适合的應用場景和領域,也可以從測試的痛難點出發去找有哪些AI技術可以用,我們可以繼續細化,解決得到底怎麼樣?可以參考經濟體智能小組的智能化等級标準,無論是效果上面還是應用基礎上。

對于智能化的标準,我們希望說在技術的發展上面給大家一個牽引,大家知道AI不是未來,AI已來。我們給出每個詳細的标準裡面,我們給出了可參考的一些技術方向的指引。第二個對于智能化的标準我們希望在經濟體的範疇内能夠有一個牽引之外,能夠有一個融合和促進,比如說,在smartX團隊和支付寶的團隊有合作共建,另外就是能夠将這些應用和智能化标準評估之後的産品,能夠樹立一個又一個的标杆,能夠促進融合,以後會對外釋出。

4. 回顧和展望

TICA 2019 移動端App側的智能化測試實踐

展望這一塊也是分為兩塊,第一塊是說AI技術本身,我個人判斷是說這三大技術,NLP,GNN,L2L,這是比較重要的技術,包括我今天的演講,大家的日常溝通,包括寫代碼,代碼也是一種語言,大量的經驗和積累都在語言中。為什麼是GNN?因為GNN可以表征更加複雜的事物之間的聯系和關系。為什麼是L2L?剛才講過就是Google圍棋的例子,希望一張網可以幹更多的事情。對于智能技術,短期和中期我的判斷是這樣的,對于測試的智能化來講,三個關鍵領域,場景規劃,缺陷診斷和缺陷修複,在這三塊在集團層面和業界來講,學術界到工業界能夠規模化落地看到的執行個體不是很多,這三個點真正進一步提升效能和降低成本的關鍵技術。

随着AI技術的大規模的使用,規模化的落地之後,智能化的工程化的問題,會逐漸地凸顯出來。舉一個例子,圖像識别大家知道一個截圖有好幾兆,幾萬的規模持續不斷跑的時候,通訊成為一個難點。另外一個有一個GPU的叢集,GPU的運作效率和使用率會成為難點,因為需要確定整個網絡消耗在GPU上面,而不是消耗在通訊上面。

比如說,大規模的智能技術的應用在測試領域之後,這個模型什麼時候更新,離線上的資料什麼時候更新,後續都會成為比較重要的點。

鄧老師的分享到此結束,

文章來源: 鄧艾 阿裡巴巴技術品質

繼續閱讀