原標題:案例 | 民生銀行基于AI的UI自動化測試實踐 文 / 中國民生銀行信息科技部?徐大琦 劉晨東 隨著互聯(lián)網和5G的全面發(fā)展,客戶對于線上渠道和“非接觸式”服務的需求越來越高,...
原標題:案例 | 民生銀行基于AI的UI自動化測試實踐
文 / 中國民生銀行信息科技部?徐大琦 劉晨東
隨著互聯(lián)網和5G的全面發(fā)展,客戶對于線上渠道和“非接觸式”服務的需求越來越高,疫情期間,這種需求更加凸顯。中國銀行業(yè)協(xié)會發(fā)布的報告顯示,2022年銀行業(yè)平均電子渠道分流率為96.99%。為了適應客戶需求和市場變化,各家銀行都在采用敏捷模式建設線上渠道,通過手機銀行、網銀、微信銀行等線上平臺多端聯(lián)動、持續(xù)迭代、不斷提升客戶旅程體驗。在此背景下,測試團隊如何有效支持敏捷模式、保證線上渠道交付質量是商業(yè)銀行面臨的重要挑戰(zhàn)。民生銀行從2018年開始基于原有的APP和WEB自動化測試能力,在自研的云測試平臺基礎上搭建了基于AI的UI自動化測試體系,通過五大關鍵能力,實現(xiàn)了端到端的UI自動化測試,在測試效能、優(yōu)化測試資源配置、交付質量等方面有了進一步提升。
研究背景
民生銀行2018年起啟動云測試平臺建設并基于Appium搭建APP自動化測試子系統(tǒng),WEB自動化方面使用Selenium和RPA流程機器人進行測試探索。隨著自動化逐步推廣,APP自動化和WEB自動化測試在腳本兼容性、腳本維護成本等方面逐漸暴露出一些瓶頸問題。
APP自動化測試方面,由于機型眾多、操作系統(tǒng)版本差異大,瀏覽器內核不統(tǒng)一,APP控件多種多樣,使得現(xiàn)有的基于頁面控件識別的APP自動化測試越來越依靠定制化開發(fā)才能完成控件操作和腳本編制,腳本維護成本高;APP兼容性測試方面,適配各種機型往往要錄制多套腳本,大規(guī)模機型的兼容性測試由于腳本的不適配不得不采取人工對各機型逐一操作,測試工作量大,測試效率難以提升。
WEB自動化測試方面,當前基于頁面對象技術的WEB自動化測試系統(tǒng)在兼容性測試、各類頁面控件支持、腳本維護成本等方面也出現(xiàn)與APP自動化測試相同的瓶頸問題。尤其是在腳本開發(fā)方面,因被測系統(tǒng)頁面DOM結構復雜、UI框架升級、控件ID不固定等原因導致腳本的開發(fā)工作量大、可讀性差、復用率低。
為解決APP自動化和WEB自動化測試的痛點問題,民生銀行測試團隊經過深入調研分析決定引入AI能力,基于云測試平臺打造UI自動化測試系統(tǒng),涵蓋APP、WEB、PC自動化測試。將傳統(tǒng)的基于控件的對象識別和操作,轉換為基于AI自然語言處理的圖像、文字識別與操作。通過AI技術的對象識別可以突破很多頁面控件的難題,實現(xiàn)跨操作系統(tǒng)、跨瀏覽器的自動化測試,有效降低腳本的開發(fā)和維護成本。
UI自動化測試技術發(fā)展歷程
1.UI自動化測試介紹。UI自動化測試(User Interface Automation Testing)是對被測軟件用戶界面(UI)進行自動執(zhí)行測試的一種方法,使用專門的測試軟件來模擬用戶與應用程序界面的交互,以驗證其功能和性能是否符合預期。UI自動化測試根據(jù)面向的軟件主要分為三類:APP自動化、WEB自動化、PC自動化。
2.UI自動化測試技術的發(fā)展歷程。以APP、WEB、PC自動化為視角,UI自動化技術上的演進過程大致如圖1所示。
圖1 UI自動化測試技術發(fā)展歷程
UI自動化測試技術的發(fā)展是軟件測試領域不斷進步和創(chuàng)新的一個重要表現(xiàn)。從早期的基礎工具到現(xiàn)代的復雜框架和解決方案,UI自動化測試技術經歷了從初期錄制回放、腳本化,到跨平臺和移動測試、云測試、人工智能和機器學習,未來的UI自動化測試將更加注重智能化和用戶體驗。
3.民生銀行UI自動化測試技術的發(fā)展過程。2018年以前主要使QTP/Selenium等WEB自動化工具進行簡單自動化執(zhí)行和數(shù)據(jù)準備。2018年民生銀行自主研發(fā)了云測試平臺,同時開發(fā)實現(xiàn)了基于控件識別的APP自動化和WEB自動化。2019—2022年APP自動化測試和WEB自動化測試在重要系統(tǒng)進行推廣。2022年中旬啟動UI自動化測試系統(tǒng)建設項目,2023年初開始實施,經過一年的時間完成了UI自動化測試系統(tǒng)的建設并與云測試平臺對接。
民生銀行UI自動化測試體系
民生銀行提出基于AI的UI自動化測試目標時,重點考慮了五個方面,即安全運維的自動化、效能提升的自動化、實時監(jiān)測的自動化、對外賦能的自動化、自主可控的自動化。
安全運維方面,考慮到APP自動化所需的移動設備真機運行,手機長時間不斷電運轉導致的過熱、電池鼓包進而引發(fā)火情等安全隱患一直存在,因此民生銀行定制了手機專用屏蔽機柜(如圖2所示)。機柜具有屏蔽外界信號(內置AP)、防火防爆、大功率風扇,溫度、濕度、煙感等監(jiān)測手段,并配有監(jiān)控大屏及告警機制(如圖3所示),手機溫度也可實時監(jiān)測(限Android,iOS不提供API),極大提升了運維環(huán)境的安全性。
圖2 手機專用機柜
圖3 監(jiān)控大屏
效能提升方面,為解決腳本開發(fā)效率問題,云測試平臺引入自然語言、OCR、圖像識別等AI能力,AI腳本編寫門檻低,業(yè)務、開發(fā)、測試崗位人員都可以快速上手。由于無控件識別的兼容性問題,一套腳本即可覆蓋Android、iOS或不同瀏覽器之間的測試,降低了腳本開發(fā)周期。
實時監(jiān)測方面,當UI自動化大面積推廣時,執(zhí)行機的腳本執(zhí)行監(jiān)控與管理尤為重要,例如自動化任務中的腳本分發(fā)情況、任一設備的腳本執(zhí)行進度、實時畫面,這些對自動化測試的故障排查、設備資源合理分配起到重要作用。民生銀行開發(fā)了APP、WEB、PC執(zhí)行機旁觀者模式(如圖4所示),任一自動化人員都可遠程實時觀察設備執(zhí)行情況,可按機柜及設備層、自動化項目、自動化任務等維度監(jiān)控,也提供多維度搜索執(zhí)行機精準監(jiān)測。
圖4 調度執(zhí)行可視化
對外賦能方面,AI自動化任務調度執(zhí)行的服務除了開放給云測試平臺以外,還提供給DevOps流水線,作為版本介質部署后的質量門禁調度執(zhí)行,承擔了上線前投產介質的自動化驗證。
自主可控方面,除了支持英偉達GPU顯卡和x86架構AI服務器外,還適配了華為昇騰AI處理器310和海光Z100LGPU顯卡,具備了自主可控的能力。
UI自動化測試平臺架構
UI自動化測試系統(tǒng)包括八個核心模塊:AI腳本管理、AI數(shù)據(jù)管理、AI智能服務、UI自動化引擎、UI自動化任務管理、測試報告管理、管理中心、監(jiān)控大屏等。重點介紹以下幾個模塊。
1.AI腳本管理。AI腳本支持自然語言語法,支持聯(lián)想輸入,支持語法合規(guī)檢查、相對定位、關鍵詞轉義、參數(shù)傳遞、密碼鍵盤、手勢密碼、短信驗證、數(shù)據(jù)庫JDBC查詢、接口調用等,支持for、if嵌套、正則表達式、斷言,此外還支持自然語言腳本和基于控件識別的腳本混合語法。支持手寫腳本和頁面錄制自然語言腳本。在自定義操作方面,支持局部OCR和圖像識別、支持操作力度設置等。
2.AI數(shù)據(jù)管理。包括自動化數(shù)據(jù)準備,數(shù)據(jù)集、圖像標注等。自動化數(shù)據(jù)準備已涵蓋民生銀行零售、對公、直銷銀行、信用卡、海外核心以及眾多產品系統(tǒng)快速造數(shù),UI自動化任務可添加自動化數(shù)據(jù)集,數(shù)據(jù)集支持反復使用和消耗型使用兩種模式,并可根據(jù)使用情況自動觸發(fā)數(shù)據(jù)補足。圖像標注支持在UI自動化腳本錄制時框選頁面圖片并命名,通過自然語言語法操作。此外,系統(tǒng)支持圖標訓練,將APP和WEB系統(tǒng)的各系統(tǒng)化圖標通過深度學習訓練,無需每次圖像標注即可默認識別。
3.AI智能服務。提供OCR、圖像識別等AI能力,部署在民生銀行大數(shù)據(jù)AI中臺,是UI自動化的核心能力。
4.UI自動化引擎。針對APP、WEB、PC自動化提供多種執(zhí)行調度模式,例如:APP執(zhí)行可按設備型號、操作系統(tǒng)類型、操作系統(tǒng)版本、頁面尺寸等設備信息調度,也可按照空閑程度、串行/并行和執(zhí)行次數(shù)調度。WEB執(zhí)行可按瀏覽器類型、版本號調度。PC機可按操作系統(tǒng)類型調度。
5.UI自動化任務管理。包括APP、WEB、PC自動化任務、APP兼容性測試任務,APP群控混控任務的管理,可實時查看任務執(zhí)行狀態(tài)、腳本執(zhí)行狀態(tài)、腳本執(zhí)行步驟完成情況等。
UI自動化測試AI能力
民生銀行UI自動化測試(如圖5所示)主要使用了OCR和圖像識別的AI能力來代替原有控件識別,通過約定的自然語言語法使得腳本編寫更加規(guī)范,語義識別更加準確,AI腳本執(zhí)行設計過程如下。
圖5 UI自動化執(zhí)行過程
以自然語言腳本【點擊確定】步驟為例:①上位機/執(zhí)行機先進行分詞,分為【點擊】和【確定】。其中【點擊】為關鍵字,被判斷定動作,而【確定】是目標文本。②確定UI自動化測試系統(tǒng)中是否存在【確定】的同名標注,如果有,將相應的標注樣圖取出。③截取設備屏幕,將設備截圖、目標文本【確定】、圖片標注樣圖(如果有),發(fā)給AI服務。④AI服務對截圖上的全部文本進行識別,定位到目標文本【確定】,如果找不到相應的文本,則使用【標注】進行識別,定位到目標圖片,將文本位置坐標或圖片位置坐標返回給上位機/執(zhí)行機。⑤上位機/執(zhí)行機將坐標和前面分詞得到的動作【點擊】轉化為針對設備的操作命令,發(fā)送到設備,完成執(zhí)行【點擊確定】的操作。
下面具體介紹AI相關能力。
1.自然語言(NLP)。自然語言腳本主要實現(xiàn)思路是:定義語法規(guī)則文件,編寫語法分析器功能,進行關鍵詞的提取,將行為關鍵詞和對象關鍵詞轉化為頁面操作指令。
自然語言語法庫中包含了常用的前端操作行為以及視覺邏輯判斷,結合APP、WEB、PC被測系統(tǒng)的實際情況,在頁面對象的選擇上不但支持方位、還支持順序判斷,具體情況如下。
支持的具體操作類型包括:點擊、雙擊、長按、等待、滑動、拖拽、輸入、手勢密碼、安全鍵盤、變量賦值。
支持的具體的語義邏輯包括:如果目標對象存在,則點擊目標對象;如果目標對象不存在,則點擊目標對象。操作對象支持:文字、圖標、圖片,并支持以變量作為參數(shù)。
操作支持關聯(lián)的方位詞和順序:上/下/左/右,表示實際操作的是對象關聯(lián)的方位詞方向上的對象,并支持指定操作方位詞方向上的第幾個對象。
對象查找策略:按照指定的類型查找,如未指定類型則按照文本/圖片/圖標的優(yōu)先級順序進行查找。超時時間:支持在任意操作后面添加超時時間選項。
除支持上述語法外,還支持自定義滑動,可調整滑動位置和力度(長短)、自定義操作區(qū)域(可調整對目標對象的查找范圍)、映射屏操作模式(點擊即錄制,自動生成腳本)。
2.OCR。OCR是AI賦能UI自動化底層最重要的控件定位識別技術。它采用深度學習和傳統(tǒng)CV技術,UI自動化測試系統(tǒng)中的OCR主要分為文本檢測和文本識別兩個步驟。經過檢驗,OCR在手機APP端的識別精度為99%以上;在WEB和PC桌面應用中識別精度98.79%。
在APP自動化方面,OCR技術實現(xiàn)了任意類型(例如九宮格、全鍵盤、數(shù)字鍵盤、密碼鍵盤等)的有序和無序鍵盤識別,在WEB自動化方面,OCR技術實現(xiàn)了密集小字體識別、密集表單識別、多層次表單識別。
3.圖像識別。在UI自動化測試中,有文字的控件定位,可以用OCR識別解決。對于沒有文字的控件則需要用以圖找圖來解決。以圖找圖是保存一個控件的樣圖,在腳本執(zhí)行時用樣圖定位控件的位置,然后進行相應的操作。
以圖找圖的難點在于:不同設備上同一個圖標的大小不同,而且與設備尺寸變化比例不一定一致;圖標大部分是簡約的線條設計,特征點很少;圖標背景隨場景變化而變化。
為解決上述問題,圖像識別使用了模板匹配算法,將源圖縮放形成與目標圖匹配的模板圖,減少匹配的次數(shù);同時為解決多模板圖搜索效率問題,結合源圖所在位置進行局部搜索,提高匹配速度。為了避免誤識別,由模板匹配算法識別到的結果與模板進行相似度計算。相似度計算由CNN模型實現(xiàn),目前正例精度為98.35%,反例精度為99.15%。
4.深度學習。下面主要從以下兩個方面來介紹。
(1)通用圖標識別。每個APP應用和WEB應用都會設計專屬的圖標,有些圖標樣式具有通用性和相似性,例如“齒輪”代表設置、“電話”代表聯(lián)系方式、“放大鏡”代表搜索、“垃圾桶”代表刪除等,這些圖標已經是約定俗成的,人們在操作程序時,不需要有文字說明,就能很自然地理解它們的意義。
通過深度學習,建立圖標識別模型,可以定位并識別程序界面上的常見圖標,并把它們語義化,配合自然語言,完成更流暢的自動化腳本編寫。通用圖標無需再進行圖片標注和以圖找圖,目前圖標識別模型支持80類常見圖標的識別,識別精度為96.08%。
(2)UI智能識別。UI智能識別主要應用于真機群控和混控上,即操作一個設備,其他設備跟著一起操作,可以利用群控混控實現(xiàn)快速的多設備兼容性驗證。它的底層實現(xiàn)是利用孿生網絡,使用純圖像的特征判斷控件的相似性,達到定位控件目的。
實踐成果
UI自動化測試系統(tǒng)自2023年初建設以來,在民生手機銀行、個人網銀、企業(yè)網銀、柜面系統(tǒng)、移動運營系統(tǒng)、零售風控系統(tǒng)、非零售風控系統(tǒng)等對客系統(tǒng)進行了一期推廣。重點覆蓋TOP100場景的主交易,不斷積累自動化案例庫。經過實踐,在以下幾個方面取得了一些成果。
1.測試效能提升。腳本開發(fā)方面,由于自然語言學習門檻低、可以快速上手,加速實現(xiàn)了全員UI自動化。AI腳本解決了APP自動化、WEB自動化腳本兼容性問題,錄制一套腳本即可在iOS、Android、鴻蒙系統(tǒng)手機執(zhí)行,也可以在Chrome、IE、Firefox等瀏覽器上執(zhí)行,維護成本減少了2/3,且不存在定制化開發(fā)的工作,解放了測試開發(fā)人員生產力。腳本錄制從每天5—10條提升到每天15—30條,編寫效率提升200%。由于基于AI的腳本依賴圖像和文字識別,界面元素識別不受限,測試場景覆蓋率提升了近40%。
人效分析方面,以手機銀行為例,每2周進行一次全量回歸測試,全年累計進行25次左右。每次使用10—14臺Android+iOS設備,通過AI賦能UI自動化可以幫助手機銀行測試組減少8.86人年人員投入。與手工測試相比,人效提升2.36倍左右。
2.質量保證。自動化執(zhí)行方面,UI自動化實現(xiàn)了端到端的測試,覆蓋全鏈路的系統(tǒng);對前端頁面、前后端調用、頁面兼容性、客戶端兼容性、瀏覽器兼容性等方面的測試提供了有效補充;常態(tài)化回歸執(zhí)行APP自動化腳本和WEB自動化腳本,有效發(fā)現(xiàn)影響性分析不足導致的開發(fā)測試遺漏。
以手機銀行為例,針對不同測試專題執(zhí)行基于AI的UI自動化測試任務,包括:機型適配性測試、安全工具測試、場景入口測試、客戶端版本迭代測試、版本部署驗證測試,以及首次安裝/覆蓋安裝等兼容性測試等。不同專題制定不同執(zhí)行計劃、調度不同數(shù)量機型,確保執(zhí)行的時效性。
3.自主可控。在自主可控方面,基于AI的UI自動化測試已適配信創(chuàng)GPU顯卡及AI服務器,PC自動化支持信創(chuàng)操作系統(tǒng),做到完全自主掌控,執(zhí)行效率高于控件識別。
4.對外賦能。UI自動化測試與Devops流水線集成,實現(xiàn)了投產前每次部署介質的自動化驗證,確保投產介質對重要場景交易無影響。
云真機服務通過將手機放置專用機柜中集中管理,遠程操作,提升了測試資源的復用率,目前在線設備已達248臺,日均在線活躍人數(shù)115人,累計申請次數(shù)達35萬次,累計使用時長近30萬小時,完成4.2萬次自動化任務執(zhí)行。
未來,民生銀行將繼續(xù)利用UI自動化測試工具,大力推廣端到端的自動化回歸測試,重點提升APP自動化、WEB自動化測試場景覆蓋率、交易覆蓋率,保障系統(tǒng)快速迭代的交付質量。
(此文刊發(fā)于《金融電子化》2024年3月上半月刊)返回搜狐,查看更多
責任編輯: