0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

Hypium的單元測試框架和UI測試框架

HarmonyOS開發(fā)者 ? 來源:HarmonyOS開發(fā)者 ? 作者:HarmonyOS開發(fā)者 ? 2022-08-10 09:26 ? 次閱讀

應用開發(fā)過程中,要確保應用的功能和界面能滿足預期,往往需要通過測試來驗證。為此,我們研發(fā)了一套新的自動化測試框架,它支持以插件形式集成到DevEco Studio中,讓開發(fā)者在應用開發(fā)的過程中可以快速編寫和執(zhí)行測試用例,實現(xiàn)應用的高效驗證。本期,我們就帶大家了解這個自動化測試框架——Hypium。

一、Hypium簡介

“Hypium”是“Hyper Automation + ium”的組合詞,“Hyper Automation”表示超級自動化, “ium”意指穩(wěn)定、可靠的測試框架能力底座。從取名含義可以看出,我們想要為開發(fā)者打造一個以超級自動化測試為理想目標、且穩(wěn)定可靠的測試框架。

自動化測試框架Hypium以插件形式集成到DevEco Studio中。開發(fā)者創(chuàng)建工程后,DevEco Studio會自動生成測試目錄、測試類和測試用例模板等,如圖1所示。開發(fā)者無需從零開始,讓測試更加簡單、高效。

66005eb8-1849-11ed-ba43-dac502259ad0.png

圖1 Hypium

應用程序的自動化測試,從應用場景上主要分為兩類:一類主要測試程序的內(nèi)部功能邏輯,聚焦在測試程序內(nèi)的函數(shù)接口,用于開發(fā)人員自測試使用;另一類主要是所見即所得的界面測試,操作頁面并檢查頁面控件是否符合預期的端到端的測試,用于測試人員覆蓋全路徑的驗證測試。

針對上述兩種應用場景,自動化測試框架Hypium推出了單元測試框架和UI測試框架兩個子框架。

● 單元測試框架(HJsUnit):提供單元測試用例編寫的基礎接口,以及用于測試系統(tǒng)或應用的接口。支持開發(fā)者編寫和執(zhí)行單元測試用例,并且生成對應的測試報告。

● UI測試框架(HUiTest):通過簡潔易用的API提供查找和操作界面控件的能力,支持開發(fā)基于界面操作的自動化測試腳本。

下面為大家一一介紹Hypium的單元測試框架和UI測試框架。

二、單元測試框架

HarmonyOS應用的多端部署、多語言開發(fā)等特點,使其在單元測試時面臨很大的挑戰(zhàn),對單元測試框架也提出了高要求:

1. HarmonyOS作為面向萬物互聯(lián)時代的分布式智能操作系統(tǒng),支持在手機、平板、智能座艙、智慧屏、輕量級設備(如智能穿戴)等多種終端設備上使用。開發(fā)者在開發(fā)HarmonyOS應用時,也需要考慮適配多種終端設備。這就要求測試框架能夠針對不同設備支持定制相應的測試能力。

2. HarmonyOS的開發(fā)框架支持開發(fā)者使用Java/JS/eTS等多種語言進行應用開發(fā)。這就要求測試框架在執(zhí)行測試用例時需要考慮多語言以及語法兼容等。

為滿足以上要求,我們在設計階段就考慮到了單元測試框架需要具備多語言統(tǒng)一執(zhí)行,語法兼容,空間占用最小化,功能可定制裁剪等能力。經(jīng)過研發(fā)團隊的不懈努力,最終實現(xiàn)了具備語法統(tǒng)一、執(zhí)行統(tǒng)一、可裁剪、輕量化特點的單元測試框架。

● 語法統(tǒng)一:ArkUI開發(fā)框架支持基于JS語言的類Web開發(fā)范式以及基于eTS語言的聲明式開發(fā)范式。針對不同的語言和開發(fā)范式,單元測試框架提供一套統(tǒng)一的測試用例開發(fā)接口。開發(fā)者可基于統(tǒng)一的接口,來開發(fā)支持不同語言和開發(fā)范式的測試用例。

● 執(zhí)行統(tǒng)一:單元測試框架支持Java與JS/eTS的測試用例在同一個測試hap中運行,結(jié)果統(tǒng)一展示。

● 可裁剪:單元測試框架采用了標準的插件機制,除了核心的基礎用例運行與基礎接口部分,其余的擴展能力可以根據(jù)不同的需求而動態(tài)組合。開發(fā)者可以根據(jù)不同的設備能力和測試需求,動態(tài)地定制測試框架能力。

● 輕量化:單元測試框架內(nèi)核部分的代碼量很少,打包編譯之后小于10KB,可用于開發(fā)在輕量化設備上執(zhí)行的測試用例。

通過上面的介紹,大家對Hypium的單元測試框架有了初步的認識。下面就為大家揭曉單元測試框架的詳細架構。

662d074c-1849-11ed-ba43-dac502259ad0.jpg

圖2 單元測試框架架構圖

如圖2所示,單元測試框架由Core、EXT和SPE三個模塊組成:

● Core(核心模塊):包含測試用例執(zhí)行需要的核心接口和邏輯,是運行測試用例所需的最小集合。對于輕量化設備,單元測試框架可以只包含Core模塊。

● EXT(擴展能力模塊):在核心模塊的基礎上增加測試框架常用的能力,支持自定義斷言,用例異常超時控制等。

● SPE(專項測試能力模塊):增加部分特殊測試能力,例如Mock模擬、數(shù)據(jù)驅(qū)動測試、壓力測試等。

三、UI測試框架

UI測試框架主要提供UI界面測試的能力,主要面臨以下兩大挑戰(zhàn):

1. UI界面操作繁瑣,學習和使用成本高。

UI界面測試在行業(yè)內(nèi)已廣泛應用,核心邏輯主要包含以下三個操作:

識別界面結(jié)構,獲取操作坐標 。

操作控件,注入UI操作事件,驅(qū)動事件響應。

檢查頁面響應,驗證是否符合操作邏輯 。

此外,UI界面測試通常還需要很多其他輔助操作,例如:設備連接(主要是連接系統(tǒng)的無障礙服務)、頁面刷新等待、頁面控件定位等。這些操作導致測試接口數(shù)量繁多、使用邏輯繁瑣,使得UI界面測試的成本高,上手困難。

2. WebView混合開發(fā)、多窗口等特性,給UI界面測試帶來很大難度。

在UI界面測試中,WebView混合開發(fā)、多窗口等特性,一直是UI界面測試的難點。

WebView混合開發(fā)沒有使用系統(tǒng)提供的開發(fā)框架,所以系統(tǒng)的無障礙服務無法獲取WebView中的控件信息,從而也無法進行UI界面測試。

多窗口是指窗口之間有層疊關系,無法做到所見即所得,需要開發(fā)者動態(tài)地指定窗口來獲取其在前臺顯示的頁面結(jié)構。如果發(fā)生窗口拖拽等窗口移動的情況,開發(fā)者所見的界面會有比較大的變化,但是多窗口頁面結(jié)構沒有變化,這種情況下UI界面測試腳本的編寫和穩(wěn)定性都面臨很大的挑戰(zhàn)。

針對以上挑戰(zhàn),Hypium的UI測試框架提供了相應的應對措施:

1. UI測試框架將所有操作封裝到UiDriver、By和UiComponent三個核心類中,每個類各司其職,語法一目了然,大大降低了學習使用成本。

6644a0fa-1849-11ed-ba43-dac502259ad0.png

圖3 UI測試框架的三個核心類

UiDriver:UI測試能力入口類,負責與設備(系統(tǒng)的無障礙服務)交互,提供頁面控件查找、檢查存在性以及注入按鍵等能力。

By:用于描述目標控件特性(文本、id、類型等)。UiDriver根據(jù)By描述的控件特征來查找控件。

UiComponent:根據(jù)UiDriver查找返回的控件對象,記錄控件相關屬性,并提供控件相關UI操作,例如點擊、滑動、雙擊等。

2. 針對WebView混合開發(fā)、多窗口等測試難點,UI測試框架提供了高效的解決方案。

針對WebView,UI測試框架引入了解析WebView頁面結(jié)構的引擎,從而徹底解決WebView的頁面結(jié)構顯示問題。

針對多窗口,UI測試框架將多窗口信息扁平化,層疊的窗口最終只保留用戶可見的部分,最終拼成一個完整的頁面返回給用戶。用戶不需要指定窗口,頁面結(jié)構所見即所得,操作簡化。

此外,UI測試框架也考慮了多語言和語法兼容,支持Java/JS/eTS三種語言。有的開發(fā)者小伙伴之前可能使用過UI測試框架提供的Java接口,最近新增的JS/eTS接口定義和語法與Java接口是一致的,開發(fā)者們可以無縫切換到JS/eTS語言來使用。

接下來再帶大家了解UI測試框架的詳細架構。

665200c4-1849-11ed-ba43-dac502259ad0.png

圖4 UI測試框架架構圖

UI測試框架主要分為三個部分:

● uitest-api:封裝提供應用UI測試場景的測試API。

● test-agent:提供跨應用UI測試場景設備端輔助測試模塊,通過uitest與系統(tǒng)核心庫對接。

● uitest:UI測試核心模塊,對接系統(tǒng)服務,提供控件樹獲取、解析、查找、操作等能力。

上面就是我們本期要介紹的內(nèi)容了。未來我們還將繼續(xù)完善自動化測試框架Hypium的能力,助力開發(fā)者開發(fā)更卓越的產(chǎn)品,大家敬請期待!

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8777

    瀏覽量

    152421
  • 開發(fā)者
    +關注

    關注

    1

    文章

    601

    瀏覽量

    17175
  • 單元測試
    +關注

    關注

    0

    文章

    44

    瀏覽量

    3218

原文標題:HarmonyOS自動化測試框架—Hypium

文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發(fā)者】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    鴻蒙OS開發(fā)實戰(zhàn):【自動化測試框架】使用指南

    為支撐HarmonyOS操作系統(tǒng)的自動化測試活動開展,我們提供了支持JS/TS語言的單元UI測試框架,支持開發(fā)者針對應用接口進行
    的頭像 發(fā)表于 04-08 14:49 ?1681次閱讀
    鴻蒙OS開發(fā)實戰(zhàn):【自動化<b class='flag-5'>測試</b><b class='flag-5'>框架</b>】使用指南

    如何搭建嵌入式C語言單元測試自動化框架

    關于嵌入式C語言單元測試自動化框架的搭建思路
    發(fā)表于 12-15 07:35

    HarmonyOS自動化測試框架Hypium

    是所見即所得的界面測試,操作頁面并檢查頁面控件是否符合預期的端到端的測試,用于測試人員覆蓋全路徑的驗證測試。針對上述兩種應用場景,自動化測試
    發(fā)表于 08-10 17:13

    Hypium框架使能ArkTS應用高效測試

    ,助力應用跨設備測試驗證。 2、測試框架層 涵蓋HTSUnit、HUITest、HCUnit與HCPPTest多層次測試框架,從應用的
    發(fā)表于 03-03 19:00

    HamronyOS自動化測試框架使用指南

    概述 為支撐 HarmonyOS 操作系統(tǒng)的自動化測試活動開展,我們提供了支持 JS/TS 語言的單元UI 測試框架,支持開發(fā)者針對應用
    發(fā)表于 12-19 10:26

    java單元測試的好處

    單元測試是編寫測試代碼,應該準確、快速地保證程序基本模塊的正確性。好的單元測試的標準,JUnit是Java單元測試框架,已經(jīng)在Eclipse
    發(fā)表于 12-21 14:24 ?4024次閱讀

    Python單元測試框架是什么?及如何使用詳細代碼說明

    本文檔的主要內(nèi)容詳細介紹的是Python單元測試框架是什么?及如何使用詳細代碼說明包括了:使用PyUnit構建自己的測試 ,通過PyUnit復用舊測試代碼 ,在JPython和Jyth
    發(fā)表于 09-19 14:49 ?2次下載

    Catch2單元測試框架

    /details/89449029 一、Catch簡介 Catch是一個很時尚的,C++原生的框架,只包含一個頭文件,用于單元測試,TDD測試驅(qū)動開發(fā)和BDD行為驅(qū)動開發(fā)。 在catch的文檔指出,對于C++
    發(fā)表于 11-20 23:03 ?3246次閱讀

    什么是單元測試,為什么要做單元測試

    單元測試是整個軟件開發(fā)過程中的一個重要環(huán)節(jié) ,執(zhí)行一個完備的單元測試方案能夠提高整個開發(fā)過程的時間效率,確保軟件的實際功能與詳細設計說明的一致性,使軟件開發(fā)的效率和軟件產(chǎn)品的質(zhì)量得到最好的保障
    的頭像 發(fā)表于 04-28 17:21 ?9936次閱讀

    RT-Thread上的單元測試:什么是單元測試?單元測試的作用是什么?

    RT-Thread上的單元測試:什么是單元測試單元測試的作用是什么? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 16:06 ?1806次閱讀
    RT-Thread上的<b class='flag-5'>單元測試</b>:什么是<b class='flag-5'>單元測試</b>?<b class='flag-5'>單元測試</b>的作用是什么?

    2022 RT-Thread全球技術大會:單元測試框架是什么

    RT-Thread上的單元測試框架是什么?RTT的單元測試框架是什么樣的?
    的頭像 發(fā)表于 05-27 16:12 ?1354次閱讀
    2022 RT-Thread全球技術大會:<b class='flag-5'>單元測試</b><b class='flag-5'>框架</b>是什么

    RT-Thread全球技術大會:RT-Thread上的單元測試框架與運行測試用例

    RT-Thread全球技術大會:RT-Thread上的單元測試框架與運行測試用例 ? ? ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 16:21 ?1708次閱讀
    RT-Thread全球技術大會:RT-Thread上的<b class='flag-5'>單元測試</b><b class='flag-5'>框架</b>與運行<b class='flag-5'>測試</b>用例

    Hypium框架使能ArkTS應用高效測試

    和界面滿足預期呢?ArkTS應用怎樣高效進行專項測試?接下來,有請我們本期的主角——自動化測試框架Hypium閃亮登場。 Hypium?
    的頭像 發(fā)表于 03-11 13:10 ?1104次閱讀

    用在嵌入式開發(fā)中的單元測試框架

    單元測試框架在面向?qū)ο蟮木幊淌澜缰蟹浅A餍?。JUnit(用于 Java)、SUnit(用于 Smalltalk)和 CppUnit(用于 C++)等框架提供了豐富的功能集。 但是,對于想要
    的頭像 發(fā)表于 03-27 10:08 ?1183次閱讀

    OpenHarmony自動化測試框架開發(fā)指南

    OpenHarmony 自動化測試框架是 OpenHarmony 提供的支持 JS/TS 語言的單元UI 測試
    的頭像 發(fā)表于 05-15 09:35 ?1554次閱讀
    OpenHarmony自動化<b class='flag-5'>測試</b><b class='flag-5'>框架</b>開發(fā)指南