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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

Hypium的單元測(cè)試框架和UI測(cè)試框架

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

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

一、Hypium簡(jiǎn)介

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

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

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

圖1 Hypium

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

針對(duì)上述兩種應(yīng)用場(chǎng)景,自動(dòng)化測(cè)試框架Hypium推出了單元測(cè)試框架和UI測(cè)試框架兩個(gè)子框架。

● 單元測(cè)試框架(HJsUnit):提供單元測(cè)試用例編寫(xiě)的基礎(chǔ)接口,以及用于測(cè)試系統(tǒng)或應(yīng)用的接口。支持開(kāi)發(fā)者編寫(xiě)和執(zhí)行單元測(cè)試用例,并且生成對(duì)應(yīng)的測(cè)試報(bào)告。

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

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

二、單元測(cè)試框架

HarmonyOS應(yīng)用的多端部署、多語(yǔ)言開(kāi)發(fā)等特點(diǎn),使其在單元測(cè)試時(shí)面臨很大的挑戰(zhàn),對(duì)單元測(cè)試框架也提出了高要求:

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

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

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

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

● 執(zhí)行統(tǒng)一:?jiǎn)卧獪y(cè)試框架支持Java與JS/eTS的測(cè)試用例在同一個(gè)測(cè)試hap中運(yùn)行,結(jié)果統(tǒng)一展示。

● 可裁剪:?jiǎn)卧獪y(cè)試框架采用了標(biāo)準(zhǔn)的插件機(jī)制,除了核心的基礎(chǔ)用例運(yùn)行與基礎(chǔ)接口部分,其余的擴(kuò)展能力可以根據(jù)不同的需求而動(dòng)態(tài)組合。開(kāi)發(fā)者可以根據(jù)不同的設(shè)備能力和測(cè)試需求,動(dòng)態(tài)地定制測(cè)試框架能力。

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

通過(guò)上面的介紹,大家對(duì)Hypium的單元測(cè)試框架有了初步的認(rèn)識(shí)。下面就為大家揭曉單元測(cè)試框架的詳細(xì)架構(gòu)。

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

圖2 單元測(cè)試框架架構(gòu)圖

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

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

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

● SPE(專(zhuān)項(xiàng)測(cè)試能力模塊):增加部分特殊測(cè)試能力,例如Mock模擬、數(shù)據(jù)驅(qū)動(dòng)測(cè)試、壓力測(cè)試等。

三、UI測(cè)試框架

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

1. UI界面操作繁瑣,學(xué)習(xí)和使用成本高。

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

識(shí)別界面結(jié)構(gòu),獲取操作坐標(biāo) 。

操作控件,注入U(xiǎn)I操作事件,驅(qū)動(dòng)事件響應(yīng)。

檢查頁(yè)面響應(yīng),驗(yàn)證是否符合操作邏輯 。

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

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

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

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

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

針對(duì)以上挑戰(zhàn),Hypium的UI測(cè)試框架提供了相應(yīng)的應(yīng)對(duì)措施:

1. UI測(cè)試框架將所有操作封裝到UiDriver、By和UiComponent三個(gè)核心類(lèi)中,每個(gè)類(lèi)各司其職,語(yǔ)法一目了然,大大降低了學(xué)習(xí)使用成本。

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

圖3 UI測(cè)試框架的三個(gè)核心類(lèi)

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

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

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

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

針對(duì)WebView,UI測(cè)試框架引入了解析WebView頁(yè)面結(jié)構(gòu)的引擎,從而徹底解決WebView的頁(yè)面結(jié)構(gòu)顯示問(wèn)題。

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

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

接下來(lái)再帶大家了解UI測(cè)試框架的詳細(xì)架構(gòu)。

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

圖4 UI測(cè)試框架架構(gòu)圖

UI測(cè)試框架主要分為三個(gè)部分:

● uitest-api:封裝提供應(yīng)用UI測(cè)試場(chǎng)景的測(cè)試API。

● test-agent:提供跨應(yīng)用UI測(cè)試場(chǎng)景設(shè)備端輔助測(cè)試模塊,通過(guò)uitest與系統(tǒng)核心庫(kù)對(duì)接。

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

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

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

    關(guān)注

    33

    文章

    8254

    瀏覽量

    149942
  • 開(kāi)發(fā)者
    +關(guān)注

    關(guān)注

    1

    文章

    527

    瀏覽量

    16912
  • 單元測(cè)試
    +關(guān)注

    關(guān)注

    0

    文章

    37

    瀏覽量

    3122

原文標(biāo)題:HarmonyOS自動(dòng)化測(cè)試框架—Hypium

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙OS開(kāi)發(fā)實(shí)戰(zhàn):【自動(dòng)化測(cè)試框架】使用指南

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

    如何搭建嵌入式C語(yǔ)言單元測(cè)試自動(dòng)化框架

    關(guān)于嵌入式C語(yǔ)言單元測(cè)試自動(dòng)化框架的搭建思路
    發(fā)表于 12-15 07:35

    HarmonyOS自動(dòng)化測(cè)試框架Hypium

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

    Hypium框架使能ArkTS應(yīng)用高效測(cè)試

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

    HamronyOS自動(dòng)化測(cè)試框架使用指南

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

    java單元測(cè)試的好處

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

    Python單元測(cè)試框架是什么?及如何使用詳細(xì)代碼說(shuō)明

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

    Catch2單元測(cè)試框架

    /details/89449029 一、Catch簡(jiǎn)介 Catch是一個(gè)很時(shí)尚的,C++原生的框架,只包含一個(gè)頭文件,用于單元測(cè)試,TDD測(cè)試驅(qū)動(dòng)開(kāi)發(fā)和BDD行為驅(qū)動(dòng)開(kāi)發(fā)。 在catch的文檔指出,對(duì)于C++
    發(fā)表于 11-20 23:03 ?3021次閱讀

    什么是單元測(cè)試,為什么要做單元測(cè)試

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

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

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

    2022 RT-Thread全球技術(shù)大會(huì):單元測(cè)試框架是什么

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

    RT-Thread全球技術(shù)大會(huì):RT-Thread上的單元測(cè)試框架與運(yùn)行測(cè)試用例

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

    Hypium框架使能ArkTS應(yīng)用高效測(cè)試

    和界面滿(mǎn)足預(yù)期呢?ArkTS應(yīng)用怎樣高效進(jìn)行專(zhuān)項(xiàng)測(cè)試?接下來(lái),有請(qǐng)我們本期的主角——自動(dòng)化測(cè)試框架Hypium閃亮登場(chǎng)。 Hypium?
    的頭像 發(fā)表于 03-11 13:10 ?837次閱讀

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

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

    OpenHarmony自動(dòng)化測(cè)試框架開(kāi)發(fā)指南

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