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

HarmonyOS開發者社群發表於2023-03-03

HarmonyOS釋出了宣告式開發框架ArkUI,帶來了極簡高效的開發體驗,備受廣大開發者的青睞。那麼,我們在開發過程中,如何確保ArkTS應用的功能和介面滿足預期呢?ArkTS應用怎樣高效進行專項測試?接下來,有請我們本期的主角——自動化測試框架Hypium閃亮登場。

Hypium 測試框架介紹

想必大家對自動化測試框架Hypium並不陌生,此前有關於Hypium的詳細介紹 《HarmonyOS自動化測試框架—Hypium》 ,大家可自行查閱。下面,我們一起了解Hypium測試框架,主要涵蓋三個維度:

1、測試執行排程層

xDevice支援手機、平板、PC、穿戴、智慧屏、音響和車機等多裝置,助力應用跨裝置測試驗證。

2、測試框架層

涵蓋HTSUnit、HUITest、HCUnit與HCPPTest多層次測試框架,從應用的單元/介面層、到UI介面層、再到C/C++系統層,構建多維度測試服務保障。

3、測試能力庫

包含系統測試元件、UITestKit元件、專項測試元件,以及分散式測試元件,實現豐富的場景模擬能力和跨裝置分散式測試能力。

undefined

Hypium測試框架架構

Hypium測試框架以外掛形式整合到DevEco Studio中,使用非常便捷。今天,我們重點分享Hypium新版本支援ArkUI引擎,同時新增了測試能力庫,構建豐富的場景模擬能力和專項測試執行能力,全面使能ArkTS應用自動化測試。

豐富的場景模擬API,助力多層次測試

ArkTS應用採用了類似MVC經典結構1,包括View(檢視)、Model(模型)、Server(服務)三個部分。View(檢視)負責頁面元素定義生成頁面和一些基礎的頁面邏輯;Model(模型)是資料模型,負責儲存應用的資料;Server(服務)負責處理複雜的業務邏輯,包括網路、裝置硬體互動等。針對三個不同層次的測試場景,我們可以採用不同的測試方式,驗證應用的正確性。

1、View層: UI介面層,建議使用系統整合測試,驗證基礎功能和介面。

2、Model層:資料邏輯層,可以使用應用介面測試,驗證資料邏輯的正確性。

3、Server層:業務邏輯層,可以使用應用介面測試,驗證業務邏輯的正確性。

undefined

ArkTS應用多層次測試

在測試過程中,為了驗證應用的功能,我們需要構建不同的場景。例如,測試導航場景需要構建位置移動軌跡,測試重力感應遊戲需要構建重力感測器資料,測試低電量場景需要等到裝置電量低於5%等。但構建這些場景耗時費力,甚至部分無法實現自動化,只能依賴人工測試,基於這種情況,Hypium測試框架提供了通用的介面模擬能力,支援開發者模擬應用介面,快捷構建測試場景。

以下是單元測試模擬能力通用介面列表:

undefined

模擬能力通用介面

使用以上模擬介面,我們可以便捷地模擬任意介面的返回值,從而達到場景模擬效果,提升應用單元測試效率。但對於部分特殊場景,開發者模擬效率較低,通用模擬能力無法滿足特定的測試需求。別擔心,除了通用模擬能力,Hypium測試框架還提供了特殊場景模擬能力,包括裝置互動模擬、裝置環境模擬、雲端互動模擬。

1、裝置互動模擬:構建應用與裝置之間資料互動模擬能力,主要模擬裝置物理器件資料與應用的互動,包括不限於:物理位置模擬、重力感測器、加速度感測器等多種感測器資料模擬。基於裝置互動模擬能力可以構建多種場景,例如:導航、重力感應、接近光等。

2、裝置環境模擬:構建裝置狀態的模擬能力,包括不限於:系統電量、訊號強度、媒體播放、資源佔用等,基於裝置環境模擬能力可以構造裝置的不同狀態,例如:低電量、弱訊號、後臺媒體播放等。

3、雲端互動模擬:構建雲端模擬能力,模擬雲端伺服器的返回值,將應用與雲端服務解耦。

專項測試執行能力,使能多維度測試

ArkTS應用除了基礎的測試場景外,還面臨很多特殊的測試場景,例如:如何測試應用介面的效能?介面的引數型別比較多,如何實現全量覆蓋?測試某項場景時,如何避免執行全部測試用例,只執行相應部分測試用例?

針對這些特殊場景,Hypium測試框架從測試執行粒度、執行方式、執行排程等多維度提供壓力、資料驅動、篩選能力等場景的測試執行能力,進一步提升ArkTS應用測試執行效率。

1、壓力測試

適用於介面壓力測試場景,使用者可以自定義測試用例的執行次數。執行測試aa test測試命令帶上壓力引數即可,例如:

aa test –p xxxx –n xxxxx –s stress 10

引數

取值

含義

-s stress

正整數

測試用例執行次數

2、資料驅動測試

適用於介面引數型別比較多,無法透過測試用例直接覆蓋的場景。我們可以自定義配置引數快捷驅動測試用例的執行次數和每一次傳入的引數,使用時依賴data.json配置檔案,檔案內容如下:

{
               "suites": [{
                               "describe": ["actsAbilityTest"],
                               "stress": 2,
                               "params": {
                                              "suiteParams1": "suiteParams001",
                                              "suiteParams2": "suiteParams002"
                               },
                               "items": [{
                                              "it": "testDataDriverAsync",
                                              "stress": 2,
                                              "params": [{
                                                             "name": "tom",
                                                             "value": 5
                                              }, {
                                                             "name": "jerry",
                                                             "value": 4
                                              }]
                               }, {
                                              "it": "testDataDriver",
                                              "stress": 3
                               }]
               }]
}

配置引數說明:

undefined

3、測試用例篩選

Hypium支援根據用例屬性,篩選執行指定的測試用例,使用方式是先在測試用例上標記用例屬性後,再在測試應用的啟動shell命令後新增"-s ${Key} ${Value}"。

undefined

示例程式碼

import { describe, it, expect, TestType, Size, Level } from '@ohos/hypium';
export default function attributeTest() {
    describe('attributeTest', function () {
        it("testAttributeIt", TestType.FUNCTION | Size.SMALLTEST | Level.LEVEL0, function () {
            console.info('Hello Test');
        })
    })
}

示例命令

XX -s level 1 -s size small -s testType function

該命令的作用是:篩選測試應用中同時滿足a)用例級別是1 b)用例粒度是small c)用例測試型別是function 三個條件的用例執行。

4、測試套篩選

測試套與用例名稱使用“#”號連線,多個篩選規則使用“,”英文逗號分隔。

Key

含義說明

Value取值範圍

class

指定要執行的測試套&用例

${describeName}#${itName},${describeName} , 例如:-s class attributeTest#testAttributeIt

notClass

指定不執行的測試套&用例

${describeName}#${itName},${describeName} , 例如:-s notClass attributeTest#testAttributeIt

示例命令

XX -s class attributeTest#testAttributeIt,abilityTest#testAbilityIt

本期分享的自動化測試框架Hypium,你學會了嗎?快來上手試試吧!未來,我們還將繼續打磨演進Hypium測試能力,助力大家開發更卓越的應用產品,廣大開發者朋友敬請期待!

注:MVC結構即 Model 模型、View 檢視、Controller 控制器。

undefined


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70009402/viewspace-2938147/,如需轉載,請註明出處,否則將追究法律責任。

相關文章