應用開發過程中,要確保應用的功能和界面能滿足預期,往往需要通過測試來驗證。為此,我們研發了一套新的自動化測試框架,它支持以插件形式集成到DevEco Studio中,讓開發者在應用開發的過程中可以快速編寫和執行測試用例,實現應用的高效驗證。本期,我們就帶大家了解這個自動化測試框架——Hypium。
一、Hypium簡介
“Hypium”是“Hyper Automation + ium”的組合詞,“Hyper Automation”表示超級自動化, “ium”意指穩定、可靠的測試框架能力底座。從取名含義可以看出,我們想要為開發者打造一個以超級自動化測試為理想目標、且穩定可靠的測試框架。
自動化測試框架Hypium以插件形式集成到DevEco Studio中。開發者創建工程后,DevEco Studio會自動生成測試目錄、測試類和測試用例模板等,如圖1所示。開發者無需從零開始,讓測試更加簡單、高效。
圖1 Hypium
應用程序的自動化測試,從應用場景上主要分為兩類:一類主要測試程序的內部功能邏輯,聚焦在測試程序內的函數接口,用于開發人員自測試使用;另一類主要是所見即所得的界面測試,操作頁面并檢查頁面控件是否符合預期的端到端的測試,用于測試人員覆蓋全路徑的驗證測試。
針對上述兩種應用場景,自動化測試框架Hypium推出了單元測試框架和UI測試框架兩個子框架。
● 單元測試框架(HJsUnit):提供單元測試用例編寫的基礎接口,以及用于測試系統或應用的接口。支持開發者編寫和執行單元測試用例,并且生成對應的測試報告。
● UI測試框架(HUiTest):通過簡潔易用的API提供查找和操作界面控件的能力,支持開發基于界面操作的自動化測試腳本。
下面為大家一一介紹Hypium的單元測試框架和UI測試框架。
二、單元測試框架
HarmonyOS應用的多端部署、多語言開發等特點,使其在單元測試時面臨很大的挑戰,對單元測試框架也提出了高要求:
1. HarmonyOS作為面向萬物互聯時代的分布式智能操作系統,支持在手機、平板、智能座艙、智慧屏、輕量級設備(如智能穿戴)等多種終端設備上使用。開發者在開發HarmonyOS應用時,也需要考慮適配多種終端設備。這就要求測試框架能夠針對不同設備支持定制相應的測試能力。
2. HarmonyOS的開發框架支持開發者使用Java/JS/eTS等多種語言進行應用開發。這就要求測試框架在執行測試用例時需要考慮多語言以及語法兼容等。
為滿足以上要求,我們在設計階段就考慮到了單元測試框架需要具備多語言統一執行,語法兼容,空間占用最小化,功能可定制裁剪等能力。經過研發團隊的不懈努力,最終實現了具備語法統一、執行統一、可裁剪、輕量化特點的單元測試框架。
● 語法統一:ArkUI開發框架支持基于JS語言的類Web開發范式以及基于eTS語言的聲明式開發范式。針對不同的語言和開發范式,單元測試框架提供一套統一的測試用例開發接口。開發者可基于統一的接口,來開發支持不同語言和開發范式的測試用例。
● 執行統一:單元測試框架支持Java與JS/eTS的測試用例在同一個測試hap中運行,結果統一展示。
● 可裁剪:單元測試框架采用了標準的插件機制,除了核心的基礎用例運行與基礎接口部分,其余的擴展能力可以根據不同的需求而動態組合。開發者可以根據不同的設備能力和測試需求,動態地定制測試框架能力。
● 輕量化:單元測試框架內核部分的代碼量很少,打包編譯之后小于10KB,可用于開發在輕量化設備上執行的測試用例。
通過上面的介紹,大家對Hypium的單元測試框架有了初步的認識。下面就為大家揭曉單元測試框架的詳細架構。
圖2 單元測試框架架構圖
如圖2所示,單元測試框架由Core、EXT和SPE三個模塊組成:
● Core(核心模塊):包含測試用例執行需要的核心接口和邏輯,是運行測試用例所需的最小集合。對于輕量化設備,單元測試框架可以只包含Core模塊。
● EXT(擴展能力模塊):在核心模塊的基礎上增加測試框架常用的能力,支持自定義斷言,用例異常超時控制等。
● SPE(專項測試能力模塊):增加部分特殊測試能力,例如Mock模擬、數據驅動測試、壓力測試等。
三、UI測試框架
UI測試框架主要提供UI界面測試的能力,主要面臨以下兩大挑戰:
1. UI界面操作繁瑣,學習和使用成本高。
UI界面測試在行業內已廣泛應用,核心邏輯主要包含以下三個操作:
識別界面結構,獲取操作坐標 。
操作控件,注入UI操作事件,驅動事件響應。
檢查頁面響應,驗證是否符合操作邏輯 。
此外,UI界面測試通常還需要很多其他輔助操作,例如:設備連接(主要是連接系統的無障礙服務)、頁面刷新等待、頁面控件定位等。這些操作導致測試接口數量繁多、使用邏輯繁瑣,使得UI界面測試的成本高,上手困難。
2. WebView混合開發、多窗口等特性,給UI界面測試帶來很大難度。
在UI界面測試中,WebView混合開發、多窗口等特性,一直是UI界面測試的難點。
WebView混合開發沒有使用系統提供的開發框架,所以系統的無障礙服務無法獲取WebView中的控件信息,從而也無法進行UI界面測試。
多窗口是指窗口之間有層疊關系,無法做到所見即所得,需要開發者動態地指定窗口來獲取其在前臺顯示的頁面結構。如果發生窗口拖拽等窗口移動的情況,開發者所見的界面會有比較大的變化,但是多窗口頁面結構沒有變化,這種情況下UI界面測試腳本的編寫和穩定性都面臨很大的挑戰。
針對以上挑戰,Hypium的UI測試框架提供了相應的應對措施:
1. UI測試框架將所有操作封裝到UiDriver、By和UiComponent三個核心類中,每個類各司其職,語法一目了然,大大降低了學習使用成本。
圖3 UI測試框架的三個核心類
UiDriver:UI測試能力入口類,負責與設備(系統的無障礙服務)交互,提供頁面控件查找、檢查存在性以及注入按鍵等能力。
By:用于描述目標控件特性(文本、id、類型等)。UiDriver根據By描述的控件特征來查找控件。
UiComponent:根據UiDriver查找返回的控件對象,記錄控件相關屬性,并提供控件相關UI操作,例如點擊、滑動、雙擊等。
2. 針對WebView混合開發、多窗口等測試難點,UI測試框架提供了高效的解決方案。
針對WebView,UI測試框架引入了解析WebView頁面結構的引擎,從而徹底解決WebView的頁面結構顯示問題。
針對多窗口,UI測試框架將多窗口信息扁平化,層疊的窗口最終只保留用戶可見的部分,最終拼成一個完整的頁面返回給用戶。用戶不需要指定窗口,頁面結構所見即所得,操作簡化。
此外,UI測試框架也考慮了多語言和語法兼容,支持Java/JS/eTS三種語言。有的開發者小伙伴之前可能使用過UI測試框架提供的Java接口,最近新增的JS/eTS接口定義和語法與Java接口是一致的,開發者們可以無縫切換到JS/eTS語言來使用。
接下來再帶大家了解UI測試框架的詳細架構。
圖4 UI測試框架架構圖
UI測試框架主要分為三個部分:
● uitest-api:封裝提供應用UI測試場景的測試API。
● test-agent:提供跨應用UI測試場景設備端輔助測試模塊,通過uitest與系統核心庫對接。
● uitest:UI測試核心模塊,對接系統服務,提供控件樹獲取、解析、查找、操作等能力。
上面就是我們本期要介紹的內容了。未來我們還將繼續完善自動化測試框架Hypium的能力,助力開發者開發更卓越的產品,大家敬請期待!
-
接口
+關注
關注
33文章
8575瀏覽量
151015 -
開發者
+關注
關注
1文章
563瀏覽量
17005 -
單元測試
+關注
關注
0文章
42瀏覽量
3150
原文標題:HarmonyOS自動化測試框架—Hypium
文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論