• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種OpenHarmony操作系統(tǒng)的UI界面自動化測試方法

      2022-06-11 07:06:27孟斌
      電腦知識與技術(shù) 2022年13期

      摘要:基于最新發(fā)布的OpenHarmony 3.1 Release版本提出了一種OpenHarmony操作系統(tǒng)UI界面自動化測試與控制方法,包括如何獲得OpenHarmony的UI界面截圖及控件對象信息,如何在OpenHarmony上模擬點擊、滑動、按鍵等操作用于控制設(shè)備自動化測試。

      關(guān)鍵詞:OpenHarmony;UI界面自動化;控件識別;模擬輸入

      中圖分類號:TP3 ? ? ? ? ? ?文獻標識碼:A

      文章編號:1009-3044(2022)13-0128-04

      OpenHarmony是開放原子開源基金會多個孵化、運營的開源項目之一,是面向全連接、全場景時代,基于開源方式搭建的一個智能終端設(shè)備操作系統(tǒng)的框架和平臺[1]。2020年9月,開放原子開源基金會接受了捐贈的智能終端操作系統(tǒng)的基礎(chǔ)能力及相關(guān)代碼,之后開源了相關(guān)代碼[2]。其中系統(tǒng)類型包括輕量系統(tǒng)(mini system)、小型系統(tǒng)(small system)、標準系統(tǒng)(standard system)[1]。輕量系統(tǒng)面向MCU類處理器,可應(yīng)用于智能家居領(lǐng)域的傳感器設(shè)備、連接模組、穿戴類設(shè)備等;小型系統(tǒng)面向內(nèi)存1MiB以上應(yīng)用處理器,可應(yīng)用于智能家居領(lǐng)域的電子貓眼、IP Camera、路由器以及出行領(lǐng)域的行車記錄儀等;標準系統(tǒng)面向大于128MiB的應(yīng)用處理器,可應(yīng)用于高端家電的顯示屏、中控平板等,可以提供增強的3D GPU以及硬件合成能力,提供增強交互能力、更多控件以及動效更加豐富的圖形能力。OpenHarmony的功能框架和設(shè)計是在不斷演進的,隨著操作系統(tǒng)版本的升級,其功能架構(gòu)也在升級[3]。OpenHarmony的特性之一是分布式多設(shè)備協(xié)同,分布式軟總線是實現(xiàn)分布式能力的基礎(chǔ),是多設(shè)備互聯(lián)互通的基座,為設(shè)備間提供了統(tǒng)一的分布式通信能力[4]。

      2022年3月發(fā)布的OpenHarmony 3.1 Release版本,標準系統(tǒng)版本更新內(nèi)容包括了對基礎(chǔ)能力和應(yīng)用程序框架及系統(tǒng)應(yīng)用能力和分布式能力的增強,系統(tǒng)應(yīng)用構(gòu)建包括系統(tǒng)桌面、系統(tǒng)設(shè)置、SystemUI、圖庫、相機、聯(lián)系人、備忘錄等[5];分布式能力增強包括了分布式軟總線切換組網(wǎng)、流傳輸、P2P鏈接、藍牙等能力,支持資源共享、硬件互助等;測試子系統(tǒng)的增強具備了一定的應(yīng)用界面可測試能力;可以通過DevEco Studio開發(fā)OpenHarmony API為8的應(yīng)用及服務(wù)。

      GUI界面的自動化測試須實現(xiàn)程序?qū)υO(shè)備界面及返回內(nèi)容的判斷,以及使設(shè)備自動輸入模擬代替手工點擊或輸入[6]。如何對OpenHarmony標準系統(tǒng)的操作系統(tǒng)及應(yīng)用進行界面自動化測試?設(shè)備及應(yīng)用界面的識別能力是怎樣的?模擬點擊、滑動、按鍵等操作的能力是怎樣的?下面就針對OpenHarmony 3.1版本標準系統(tǒng)提供的相關(guān)能力做分析和介紹。

      1OpenHarmony的調(diào)測設(shè)備與環(huán)境

      根據(jù)OpenHarmony 3.1 Release版本發(fā)布的信息[5],提供了Hi3516、RK3568標準系統(tǒng)解決方案,Hi3516開發(fā)板的處理器是ARM Cortex A7@Max.900MHz;RK3568開發(fā)板的處理器是四核64位Cortex-A55,主頻最高2GHz,集成G52GPU。OpenHarmony 3.1 Release版本可以燒錄至這兩種開發(fā)板供開發(fā)調(diào)測,開發(fā)的應(yīng)用可以運行在這兩種設(shè)備上,其中RK3568的性能更高一些,運行效果更好一些。本篇以Hi3516開發(fā)板為設(shè)備環(huán)境做相關(guān)說明(圖1),相關(guān)內(nèi)容在RK3568開發(fā)板上也適用。開發(fā)板與PC之間采用USB連接。

      2 OpenHarmony的調(diào)試通道與基本調(diào)試命令

      OpenHarmony的應(yīng)用開發(fā)需要用到DevEco Studio,當(dāng)前其配套OpenHarmony 3.1版本標準系統(tǒng)的應(yīng)用開發(fā)的版本是DevEco Studio 3.0 Beta3 for OpenHarmony(3.0.0.900),安裝完后路徑下的toolchains下有一個hdc_std.exe,這是提供的Windows系統(tǒng)下的OpenHarmony的調(diào)測通道工具,另外也有Linux版的。在Windows下可以配置環(huán)境變量以便后續(xù)在cmd命令窗口中直接使用hdc_std命令。

      2.1 hdc_std的基本命令

      輸入hdc_std help可以顯示支持的命令及提示幫助信息,例如:hdc_std –v返回hdc版本,注意設(shè)備上的hdcd和調(diào)試PC側(cè)的hdc_std版本要一致或兼容;hdc_std list targets列舉所有連接的設(shè)備,有多臺設(shè)備時用-t來區(qū)分和唯一指定某一臺設(shè)備;hdc_std file send/recv是文件傳輸命令,加-z參數(shù)是以壓縮方式傳輸;hdc_std install/uninstall是安裝卸載App命令,加-r參數(shù)是替換已經(jīng)安裝存在的App,加-d參數(shù)是允許版本降級;hdc_std shell是進入shell命令,shell命令可以ls /system/bin來查看支持的詳細功能和命令(圖2)。

      2.2 hdc_std shell命令

      shell命令比較豐富,例如:bm為包管理命令(圖3),bm dump –a為列舉出當(dāng)前設(shè)備已安裝的包;aa為Abiliy元能力命令(圖4),元能力子系統(tǒng)實現(xiàn)對Ability的運行和生命周期進行統(tǒng)一管理和調(diào)度,應(yīng)用進程能支撐多個Ability,Ability具有跨應(yīng)用進程間和同一進程內(nèi)調(diào)用的能力,Ability管理服務(wù)統(tǒng)一管理和調(diào)度應(yīng)用中的各Ability,并對Ability的生命周期變更進行管理,aa dump –a為列舉元能力Ability清單和狀態(tài)等屬性信息;hidumper命令是hidumper組件提供的,為OpenHarmony開發(fā)、測試人員、IDE工具提供統(tǒng)一的系統(tǒng)信息獲取工具,幫助使用者分析和定位問題[7],進入shell命令行輸入hidumper –h可獲取基本信息介紹,功能語法介紹(圖5);hilog是HiLog組件提供的命令,是OpenHarmony日志系統(tǒng),提供給系統(tǒng)框架、服務(wù),以及應(yīng)用打印日志,記錄用戶操作、系統(tǒng)運行狀態(tài)等[8],hilog –h返回日志幫助命令。

      hidumper-lc可獲得系統(tǒng)信息分類列表;hidumper-c獲取系統(tǒng)base、system等所有分類信息;輸入hidumper-c[base system]可按base或system分類獲取系統(tǒng)簇信息;hidumper-ls可獲取系統(tǒng)中元能力列表;當(dāng)hidumper返回信息過長耗時過久時,可結(jié)合grep縮短返回時間和找到想要的返回信息字段,比如輸入hidumper -c base | grepBuildId來獲取設(shè)備軟件版本BuildId號。

      hilog-k是kernel日志讀取開關(guān),on為打開讀取kernel日志,off則關(guān)閉讀取kernel日志;hilog -L為指定級別的日志(D/I/W/E/F);hilog -t為指定類型的日志(例如:-t app core init);hilog –T為指定tag。

      3 OpenHarmony獲取設(shè)備及應(yīng)用界面對象信息

      做UI界面自動化測試,首先要能感知、識別和獲取被測對象界面,當(dāng)前的OpenHarmony3.1版本提供了截圖能力,Page類型的Ability頁面提供了aa dump獲取界面控件信息的能力。

      3.1 獲取設(shè)備界面截圖

      獲取設(shè)備整屏截圖的命令為shell snapshot_display(圖6),-i參數(shù)是指如果設(shè)備有多個顯示屏的情況下指定多顯示屏中的哪一個,如果只有一個顯示屏則不必使用-i參數(shù);-f指定本地設(shè)備保存路徑,比如/data/lastscreen.png;-w、-h可指定截屏的寬高分辨率,不帶這兩個參數(shù)則按設(shè)備默認當(dāng)前顯示分辨率來截屏,指定則按指定的新的寬高對截屏進行拉伸縮放。

      指定本地路徑截屏使用snapshot_display -f /data/lastscreen.png,使用hdc_std file recv /data/lastscreen.png d:\tmp\lastscreen.png則可以將截屏文件傳輸?shù)秸{(diào)試PC的路徑中,方便在調(diào)試PC上查看或判斷。指定分辨率截屏舉例:snapshot_display -f /data/lastscreenWH.png -w 240 -h 480,則截屏的分辨率為240 × 480像素。

      3.2 獲取設(shè)備界面控件對象信息

      獲取設(shè)備界面控件對象信息需要用到元能力Ability命令aa dump,在shell輸入aa dump –a列出所有的Ability信息(圖7),其中com.ohos.setting為包名,而com.ohos.setting.MainAbility為元能力Ability名,ability type為Abiliy元能力類型,這里設(shè)置界面為PAGE類,app state為#FOREGROUND表示設(shè)置界面當(dāng)前為置前狀態(tài),如果為#BACKGROUND則為非置前顯示狀態(tài)。

      然后輸入aa dump -i 29-inspector-c > /data/lastinspector.txt,將頁面控件信息保存到本地設(shè)備txt文本,然后用hdc_std file recv /data/lastinspector.txt d:\tmp導(dǎo)出到調(diào)試PC的d盤tmp文件夾下。這里-i是指定的AbilityRecord ID,由上一條aa dump –a查詢獲得。需要注意的是,要獲得控件對象信息需要提前輸入shell param set persist.ace.testmode.enabled 1打開開關(guān),這樣新繪制的Page頁面才能dump出控件信息,否則dump出的控件信息inspector.txt文本只有前面aa dump的信息沒有控件對象信息,該設(shè)置設(shè)備重啟依然有效??丶畔丶腎D、text文本、坐標left、top、width、height,坐標單位是像素,設(shè)置界面控件信息示意如圖8。

      另外aa dump還有-element、-render方式導(dǎo)出,可展示控件其他的屬性。

      4 OpenHarmony的模擬輸入能力

      OpenHarmony 3.1 Release版本提供了模擬點擊、滑動、按鍵、鼠標等操作的能力,shell輸入input可查看支持的模擬輸入命令(圖9)。

      設(shè)備觸屏的模擬點擊為input -T,例如:點擊屏幕坐標200,200的位置為shell input -T -d 200 200 -u 200 200,其中-T表示為觸摸屏模擬輸入,-d模擬按下,-u模擬按下后的抬起事件;橫向滑動為input -T m 400 510 80 510,其中-m表示move即模擬輸入滑動,從400,510滑動到80,510,這些操作如果是設(shè)備界面上有可點擊的控件、可滑動的頁面,便可以觸發(fā)點擊和滑動事件生效。

      設(shè)備模擬按鍵為input -K,例如:模擬按Back返回鍵為input -K -d 2 -u 2,模擬按電源Power鍵為input -K -d 18 -u 18,模擬按音量+為input -K -d 16 -u 16,模擬按音量-為input -K -d 17 -u 17,模擬輸入a為input -K -d 2017 -u 2017,模擬輸入b為input -K -d 2018 -u 2018,模擬按回車是input -K -d 2054 -u 2054,模擬輸入Left光標左移為input -K -d 2014 -u 2014,模擬輸入Right光標右移為input -K -d 2015 -u 2015,具體鍵盤鍵值與功能對應(yīng)關(guān)系在源碼multimodalinput_input/frameworks/proxy/events/src/key_event.cpp可以查詢到[9](注意當(dāng)前OpenHarmony 3.1版本并非所有模擬按鍵都實現(xiàn)了)(圖10)。

      設(shè)備模擬鼠標為input -M,例如:鼠標移動到坐標100,100的位置為shell input -M -m 100 100,其中-M表示為鼠標模擬輸入,-m表示模擬鼠標移動,-d表示鼠標按鍵事件,0表示鼠標左鍵,1表示鼠標中鍵,2表示鼠標右鍵。

      5 OpenHarmony的UI界面自動化測試方法

      有了上述OpenHarmony調(diào)試通道基本命令以及獲取設(shè)備截圖、獲取設(shè)備界面控件對象信息和模擬輸入能力,便具備了在PC上搭建UI界面自動化測試的基礎(chǔ)??梢栽赑C上采用腳本語言封裝調(diào)試命令通道,然后利用上述獲取設(shè)備截圖、獲取設(shè)備界面控件對象屬性信息和模擬觸屏點擊滑動、模擬按鍵、模擬鼠標操作事件的可測試能力,編寫UI界面自動化測試程序。并且在PC上編寫程序做UI界面自動化的方式對OpenHarmony這種支持分布式多設(shè)備協(xié)同互動的系統(tǒng)更方便。另外還有一種方法是開發(fā)一個OpenHarmony應(yīng)用,調(diào)用相關(guān)對象識別能力和模擬輸入能力的API接口來驅(qū)動設(shè)備自動化測試,這種方式的好處是在安裝好該測試應(yīng)用后,不連接PC的情況下也能運行,需要熟悉OpenHarmony應(yīng)用開發(fā)的知識??紤]到OpenHarmony的分布式多設(shè)備系統(tǒng)特點,在PC上調(diào)用調(diào)試通道的設(shè)備,獲取和模擬輸入的可測試能力命令通道做UI界面自動化測試,在分布式跨設(shè)備流轉(zhuǎn)、協(xié)同場景具備一定的便利性。對于資源占用類性能測試,可以利用上述調(diào)試通道hidumper提供的資源占用的能力,對于用戶體驗感知角度的時延類性能測試[10],可以利用調(diào)試通道aa start、aa stop-service來輔助。

      6 結(jié)束語

      本文分析和介紹了OpenHarmony操作系統(tǒng)3.1 Release版本的可測試能力,包括OpenHarmony調(diào)試通道基本命令、截屏、獲取OpenHarmony界面對象以及模擬用戶進行點擊、滑動、按鍵、鼠標操作的輸入,并對如何對OpenHarmony設(shè)備進行界面自動化測試做了說明。隨著OpenHarmony版本的演進,相應(yīng)的可測試能力也會隨之演進,可作為后續(xù)的研究方向。

      參考文獻:

      [1] 開放原子開源基金會.OpenHarmony項目介紹[EB/OL].https://docs.openharmony.cn/about,2021.12.

      [2] 歐建深.開源開放地構(gòu)建OpenHarmony[J].軟件和集成電路,2021(6):28-29.

      [3] 李傳釗.OpenHarmony的功能架構(gòu)——深入淺出OpenHarmony架構(gòu)、內(nèi)核、驅(qū)動及應(yīng)用開發(fā)全棧[M].北京:中國水利水電出版社,2021.

      [4] 張榮超.鴻蒙應(yīng)用開發(fā)實戰(zhàn)[M].北京:人民郵電出版社,2021.

      [5] Mamingshuai.OpenHarmony 3.1版本概述[EB/OL]. https://gitee.com/openharmony/docs/blob/OpenHarmony-3.1-Release/zh-cn/release-notes/OpenHarmony-v3.1-release.md,2022.

      [6] 仲光亮.GUI界面自動化測試的核心技術(shù)[J].電腦編程技巧與維護,2013(3):65-72.

      [7] 盧韜.HiDumper組件說明[EB/OL].https://gitee.com/openharmony/hiviewdfx_hidumper,2022.3.

      [8] Buzhenwang.HiLog組件說明[EB/OL].https://gitee.com/openharmony/hiviewdfx_hilog,2022.3.

      [9] Mayunteng.多模輸入子系統(tǒng)[EB/OL]. https://gitee.com/openharmony/multimodalinput_input/blob/master/frameworks/proxy/events/src/key_event.cpp,2022.3.

      [10] 孟斌.一種移動智能終端性能流暢評測方法[J].電子測試,2020(16):80-83,124.

      【通聯(lián)編輯:張薇】

      舟曲县| 乌鲁木齐市| 合山市| 凤翔县| 桦甸市| 浦江县| 沂水县| 永胜县| 长海县| 监利县| 三穗县| 喀喇| 蒲城县| 子洲县| 天水市| 佛坪县| 油尖旺区| 盐池县| 新晃| 个旧市| 谢通门县| 竹北市| 吉木乃县| 班玛县| 宜宾市| 红原县| 新安县| 余干县| 松滋市| 饶河县| 海宁市| 都兰县| 城市| 含山县| 邯郸市| 临武县| 西乌| 昆明市| 安康市| 卢湾区| 浮梁县|