<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

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

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

一、Hypium簡介

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

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

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

圖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的單元測試框架有了初步的認識。下面就為大家揭曉單元測試框架的詳細架構。

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

圖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三個核心類中,每個類各司其職,語法一目了然,大大降低了學習使用成本。

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

圖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測試框架的詳細架構。

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

圖4 UI測試框架架構圖

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

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

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

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

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

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

    關注

    33

    文章

    7859

    瀏覽量

    149008
  • 開發者
    +關注

    關注

    1

    文章

    512

    瀏覽量

    16649
  • 單元測試
    +關注

    關注

    0

    文章

    35

    瀏覽量

    3093

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

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

收藏 人收藏

    評論

    相關推薦

    鴻蒙OS開發實戰:【自動化測試框架】使用指南

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

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

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

    HarmonyOS自動化測試框架Hypium

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

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

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

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

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

    java單元測試的好處

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

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

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

    Catch2單元測試框架

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

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

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

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

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

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

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

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

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

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

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

    用在嵌入式開發中的單元測試框架

    單元測試框架在面向對象的編程世界中非常流行。JUnit(用于 Java)、SUnit(用于 Smalltalk)和 CppUnit(用于 C++)等框架提供了豐富的功能集。 但是,對于想要
    的頭像 發表于 03-27 10:08 ?734次閱讀

    OpenHarmony自動化測試框架開發指南

    OpenHarmony 自動化測試框架是 OpenHarmony 提供的支持 JS/TS 語言的單元UI 測試
    的頭像 發表于 05-15 09:35 ?800次閱讀
    OpenHarmony自動化<b class='flag-5'>測試</b><b class='flag-5'>框架</b>開發指南
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>