<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天內不再提示

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

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-08 14:49 ? 次閱讀

概述

為支撐HarmonyOS操作系統的自動化測試活動開展,我們提供了支持JS/TS語言的單元及UI測試框架,支持開發者針對應用接口進行單元測試,并且可基于UI操作進行UI自動化腳本的編寫。

本指南重點介紹自動化測試框架的主要功能,同時介紹編寫單元/UI自動化測試腳本的方法以及執行過程。

簡介

HarmonyOS自動化測試框架arkxtest,作為HarmonyOS工具集的重要組成部分,提供了HarmonyOS自動化腳本編寫和運行的基礎能力。編寫方面提供了一系列支持測試腳本編寫的API,包括了基礎流程API、斷言API以及UI操作相關的API,運行方面提供了識別測試腳本、調度執行測試腳本以及匯總測試腳本執行結果的能力。

實現原理

框架重要分為兩大部分:單元測試框架和UI測試框架。

  • 單元測試框架
    單元測試框架是測試框架的基礎底座,提供了最基本的用例識別、調度、執行及結果匯總的能力。主要功能如下圖所示:
    image.png
    單元測試腳本的基礎運行流程如下圖所示,依賴aa test命令作為執行入口,該命令可具體參考。
    image.png
  • UI測試框架
    UI測試框架主要對外提供了[UiTest API]供開發人員在對應測試場景調用,而其腳本的運行基礎還是上面提到的單元測試框架。
    UI測試框架的主要功能如下圖所示:
    image.png

約束與限制

  • UI測試框架的能力在HarmonyOS 3.0 release版本之后方可使用,歷史版本不支持使用。
  • 單元測試框架的部分能力與其版本有關。

更多鴻蒙開發應用知識已更新[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]參考前往。

環境準備

[docs.qq.com/doc/DUmN4VVhBd3NxdExK]

搜狗高速瀏覽器截圖20240326151547.png

環境要求

或者添加mau123789是v喔記住添加

自動化腳本的編寫主要基于DevEco Studio,并建議使用3.1.0.400之后的版本進行腳本編寫。

腳本執行需要PC連接HarmonyOS設備,如JAD等。

搭建環境

DevEco Studio可參考其官網介紹進行下載,并進行相關的配置動作。

新建測試腳本

  1. 在DevEco Studio中新建應用開發工程,其中ohos目錄即為測試腳本所在的目錄。
  2. 在工程目錄下打開待測試模塊下的ets文件,將光標置于代碼中任意位置,單擊 右鍵 > Show Context Actions> Create Ohos Test或快捷鍵 Alt+enter> Create Ohos Test創建測試類。

編寫單元測試腳本

import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'
import abilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry'

const delegator = abilityDelegatorRegistry.getAbilityDelegator()
export default function abilityTest() {
  describe('ActsAbilityTest', function () {
    it('testUiExample',0, async function (done) {
      console.info("uitest: TestUiExample begin");
      //start tested ability
      await delegator.executeShellCommand('aa start -b com.ohos.uitest -a MainAbility').then(result = >{
        console.info('Uitest, start ability finished:' + result)
      }).catch(err = > {
        console.info('Uitest, start ability failed: ' + err)
      })
      await sleep(1000);
      //check top display ability
      await delegator.getCurrentTopAbility().then((Ability)= >{
        console.info("get top ability");
        expect(Ability.context.abilityInfo.name).assertEqual('MainAbility');
      })
      done();
    })

    function sleep(time) {
      return new Promise((resolve) = > setTimeout(resolve, time));
    }
  })
}復制

單元測試腳本需要包含如下基本元素:

1、依賴導包,以便使用依賴的測試接口。

2、測試代碼編寫,主要編寫測試代碼的相關邏輯,如接口調用等。

3、斷言接口調用,設置測試代碼中的檢查點,如無檢查點,則不可認為一個完整的測試腳本。

編寫UI測試腳本

UI測試腳本是在單元測試框架的基礎上編寫,主要就是增加了UI測試框架提供的接口調用,實現對應的測試邏輯。

下面的示例代碼是在上面的測試腳本基礎上增量編寫,首先需要增加依賴導包,如下示例代碼所示:

import {Driver,ON,Component,MatchPattern} from '@ohos.UiTest

然后是具體測試代碼編寫,場景較為簡單,就是在啟動的應用頁面上進行點擊操作,然后增加檢查點檢查用例。

export default function abilityTest() {
  describe('ActsAbilityTest', function () {
    it('testUiExample',0, async function (done) {
      console.info("uitest: TestUiExample begin");
      //start tested ability
      await delegator.executeShellCommand('aa start -b com.ohos.uitest -a MainAbility').then(result = >{
        console.info('Uitest, start ability finished:' + result)
      }).catch(err = > {
        console.info('Uitest, start ability failed: ' + err)
      })
      await sleep(1000);
      //check top display ability
      await delegator.getCurrentTopAbility().then((Ability)= >{
        console.info("get top ability");
        expect(Ability.context.abilityInfo.name).assertEqual('MainAbility');
      })
      //ui test code
      //init driver
      var driver = await Driver.create();
      await driver.delayMs(1000);
      //find button by text 'Next'
      var button = await driver.findComponent(ON.text('Next'));
      //click button
      await button.click();
      await driver.delayMs(1000);
      //check text
      await driver.assertComponentExist(ON.text('after click'));
      await driver.pressBack();
      done();
    })

    function sleep(time) {
      return new Promise((resolve) = > setTimeout(resolve, time));
    }
  })
}

說明

只支持應用內使用。暫不支持應用外的場景實現自動化,例如與權限彈窗和SystemUi上的控件進行交互。

執行測試腳本

執行測試腳本可以直接在DevEco Studio中通過點擊按鈕執行,當前支持以下執行方式:

1、測試包級別執行即執行測試包內的全部用例。

2、測試套級別執行即執行describe方法中定義的全部測試用例。

3、測試方法級別執行即執行指定it方法也就是單條測試用例。

image.png

查看測試結果

測試執行完畢后可直接在DevEco Studio中查看測試結果,如下圖示例所示:

image.png

常見問題

單元測試用例常見問題

1、用例中增加的打印日志在用例結果之后才打印

問題描述

用例中增加的日志打印信息,沒有在用例執行過程中出現,而是在用例執行結束之后才出現。

可能原因

此類情況只會存在于用例中有調用異步接口的情況,原則上用例中所有的日志信息均在用例執行結束之前打印。

解決方法

當被調用的異步接口多于一個時,建議將接口調用封裝成Promise方式調用。

2、執行用例時報error:fail to start ability

問題描述

執行測試用例時候,用例執行失敗,控制臺返回錯誤:fail to start ability。

可能原因

測試包打包過程中出現問題,未將測試框架依賴文件打包在測試包中。

解決方法

檢查測試包中是否包含TestRunner.abc文件,如沒有則重新編譯打包后再次執行測試。

3、執行用例時報用例超時錯誤

問題描述

用例執行結束,控制臺提示execute time XXms錯誤,即用例執行超時

可能原因

1.用例執行異步接口,但執行過程中沒有執行到done函數,導致用例執行一直沒有結束,直到超時結束。

2.用例調用函數耗時過長,超過用例執行設置的超時時間。

解決方法

1.檢查用例代碼邏輯,確保即使斷言失敗場景認可走到done函數,保證用例執行結束。

2.可在IDE中Run/Debug Configurations中修改用例執行超時配置參數,避免用例執行超時。

UI測試用例常見問題

1、失敗日志有“Get windows failed/GetRootByWindow failed”錯誤信息

問題描述

UI測試用例執行失敗,查看hilog日志發現日志中有“Get windows failed/GetRootByWindow failed”錯誤信息。

可能原因

系統ArkUI開關未開啟,導致被測試界面控件樹信息未生成。

解決方法

執行如下命令,并重啟設備再次執行用例。

hdc shell param set persist.ace.testmode.enabled

2、失敗日志有“uitest-api dose not allow calling concurrently”錯誤信息

問題描述

UI測試用例執行失敗,查看hilog日志發現日志中有“uitest-api dose not allow calling concurrently”錯誤信息。

可能原因

1.用例中UI測試框架提供異步接口沒有增加await語法糖調用。

2.多進程執行UI測試用例,導致拉起多個UITest進程,框架不支持多進程調用。

解決方法

1.檢查用例實現,異步接口增加await語法糖調用。

2.避免多進程執行UI測試用例。

3、失敗日志有“dose not exist on current UI! Check if the UI has changed after you got the widget object”錯誤信息

問題描述

UI測試用例執行失敗,查看hilog日志發現日志中有“dose not exist on current UI! Check if the UI has changed after you got the widget object”錯誤信息。

可能原因

在用例中代碼查找到目標控件后,設備界面發生了變化,導致查找到的控件丟失,無法進行下一步的模擬操作。

解決方法

重新執行UI測試用例。

審核編輯 黃宇

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

    關注

    0

    文章

    174

    瀏覽量

    26790
  • 框架
    +關注

    關注

    0

    文章

    328

    瀏覽量

    17080
  • HarmonyOS
    +關注

    關注

    79

    文章

    1876

    瀏覽量

    29330
  • 鴻蒙OS
    +關注

    關注

    0

    文章

    140

    瀏覽量

    4290
收藏 人收藏

    評論

    相關推薦

    OPhone自動化測試技術概述

    上可采用的幾種自動化測試技術進行介紹,并對每種技術的優缺點做簡要的總結。OPhone臺除了為應用程序開發提供豐富的API外,也為開展自動化測試
    發表于 05-06 08:58

    基于LAN的自動化測試系統開放指南

    自動化測試開發指南
    發表于 09-02 12:34

    【北京】獵頭推薦職位:自動化測試開發工程師

    獵頭推薦職位:自動化測試開發工程師工作職責:1. 對其他小組內人員在技術方面的帶動指導;2. 負責對自動化測試系統的框架設計及優化;3. 負
    發表于 07-03 14:56

    自動化測試框架思想和構建

    自動化測試一般是指軟件測試自動化,軟件測試就是在預設條件下運行系統或應用程序,評估運行結果,預先條件應包括正常條件和異常條件。本文介紹的是
    發表于 07-18 06:52

    請問數據驅動的自動化測試框架結構是怎么構成的?

    自動化測試為什么會出現?相比手工測試,自動化測試有哪些優勢?自動化
    發表于 04-15 06:55

    HarmonyOS自動化測試框架—Hypium

    ??,點擊鏈接查看更多技術內容。 應用開發過程中,要確保應用的功能和界面能滿足預期,往往需要通過測試來驗證。為此,我們研發了一套新的自動化測試框架
    發表于 08-10 17:13

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

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

    常用軟件測試自動化框架

    自動化測試框架無疑是企業實施自動化測試的一個必然的發展方向,它對于產生成功的測試
    發表于 04-21 11:39 ?4855次閱讀

    基于Web的自動化測試框架的研究

    根據web系統測試的特點,為提高軟件測試自動化腳本的可重用性,結合在實際項目中軟件自動化測試的實踐,提出基于Web的
    發表于 11-07 15:58 ?0次下載
    基于Web的<b class='flag-5'>自動化</b><b class='flag-5'>測試</b><b class='flag-5'>框架</b>的研究

    Python接口測試框架實戰自動化進階視頻教程免費下載

    本文檔的主要內容詳細介紹的是Python接口測試框架實戰自動化進階視頻教程免費下載主要包括了:第1章 接口測試基礎回顧,第2章 fiddl
    發表于 08-28 15:32 ?75次下載
    Python接口<b class='flag-5'>測試</b><b class='flag-5'>框架</b><b class='flag-5'>實戰</b>與<b class='flag-5'>自動化</b>進階視頻教程免費下載

    什么是自動化測試框架?

    這些優勢可以是不同的形式,如易于編寫腳本、可伸縮性、模塊化、可理解性、過程定義、可重用性、成本、維護等。因此,為了能夠獲得這些好處,建議開發人員使用一個或多個自動化測試框架。此外,當有
    的頭像 發表于 11-03 10:33 ?3920次閱讀

    HarmonyOS測試技術與實戰-華為ArkUI開發框架和場景測試

    HDC 2021華為開發者大會HarmonyOS測試技術與實戰-華為ArkUI開發框架和場景測試
    的頭像 發表于 10-23 15:16 ?1617次閱讀
    HarmonyOS<b class='flag-5'>測試</b>技術與<b class='flag-5'>實戰</b>-華為ArkUI<b class='flag-5'>開發</b><b class='flag-5'>框架</b>和場景<b class='flag-5'>測試</b>

    自動化測試框架unittes詳解

    測試框架,不妨“軟為硬用”。這里就基于python的自動化測試框架unittest來實現一個簡單的自動
    的頭像 發表于 05-20 14:47 ?2482次閱讀

    什么是自動化測試框架

    自動化測試框架,即是應用于自動化測試所用的框架。按照框架
    發表于 04-18 14:44 ?607次閱讀

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

    OpenHarmony 自動化測試框架是 OpenHarmony 提供的支持 JS/TS 語言的單元及 UI 測試框架,支持
    的頭像 發表于 05-15 09:35 ?748次閱讀
    OpenHarmony<b class='flag-5'>自動化</b><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>