一次 Linux 桌面自動化測試工具的試用經歷分享
最近老闆提出桌面應用要上自動化測試,讓我研究研究。研究了一陣,這裡做一下分享。
我們公司是國產化平臺的軟體企業,主要做國產Linux系統平臺的產品。本公司產品主要是Qt做的,跨平臺地圖應用,也包括國產平臺,如銀河麒麟,搜了一下國內外軟體。國外有一家Squish能做,國內有CukeTest能做。但因為是國產化平臺,所以找了國內的這家。申請CukeTest試用版,看官方的說明是支援全平臺的自動化工具。今天分享一下試用心得。
背景介紹
公司環境主要是銀河麒麟、中標麒麟和Ubuntu。我試用電腦上裝了Ubuntu 18.04,環境裡面除了從apt安裝的預設qt4.8跟5.9,另外手動安裝了最新版的qt 5.15用於開發桌面應用。
安裝
申請了Linux完整版試用,拿到了CukeTest 1.5.14.deb
安裝包,直接使用dpkg -i
命令安裝上去,開啟了介面如下:
示例學習
初見
在歡迎介面右下角提供了幾個示例,但是一個個點開看過去都是Web跟API的示例,而我要的是Qt也就是桌面自動化的示例,似乎這裡還沒有提供。好在官網裡面提供了不少Linux平臺Qt測試的文件跟視訊,照著視訊教程裡面提供的示例程式碼,從github拷了一份到電腦準備跑一跑學習一下。
選擇了提供的Qt table的示例,看描述是針對表格應用的,恰好公司應用裡面也涉及到很多表格的正確性測試。示例專案內容如下:
專案的結構如下:
因為沒看到專案檔案之類的可以直接關聯開啟專案的檔案,只有一個package.json
檔案,檢查了一下里面是版權資訊跟模版之類的內容。所以直接從CukeTest介面開啟table示例所在的資料夾,開啟後如下所示:
試著點選一下工具欄上的執行按鈕,CukeTest就最小化進入執行狀態了,彈出一個應用,執行時似乎還有字幕顯示。因為很快就執行完了,總共跑了十幾秒,執行結束以後跳出了一個圖表,應該就是描述剛剛的執行情況了。
仔細看了一下跟專案,至少我大概明白了這個軟體的測試方式,也就是它根據這一個個場景與步驟的定義來執行,如果步驟的執行有問題,就會呈現在這個報表上,好讓測試人員檢視。
模型管理器
接著看教程視訊,瞭解到這個軟體還有一個管理控制元件識別的模組,叫作模型管理器,用於把要操作的控制元件加進去以便進行自動化,而儲存這些控制元件資訊的檔案就叫作模型檔案,位於專案中的features/step_definitions/*.tmodel
檔案中。雙擊該檔案開啟了模型管理器,如下:
第一次啟動的用模型管理器偵測控制元件時,我從CukeTest的安裝目錄下找到了被測的表格應用,就是Qt自帶的樣例Dock Widget。手動把它開啟了,但是卻出現了控制元件識別不到的問題: 識別應用中的控制元件沒有識別到。高亮模型管理器中已有的控制元件都不生效,會出現了錯誤1003: 無法找到匹配的應用
:
接著看視訊,找到了問題的所在,是由於自動化的機制決定了要通過特殊的方式啟動被測應用,這裡我們通過模型管理器啟動一下這個表格應用,之後才能識別到。因為它會在被測應用中載入一個名為Qt Agent
的服務。之後才看到這篇文件中有講解:啟動應用。
完美解決了問題!識別跟高亮功能都能正常的運作,如下所示:
並且在模型管理器左下角也出現了被測應用的資訊:
![應用資訊
接著在識別到的控制元件中控制元件操作
標籤頁,看到了提供的一些自動化操作,而且工具看起來是針對不同的控制元件都有不一樣的操作方法,文件中也提供了這些操作方法的參考手冊物件操作API。下面是用工具提供的set
方法修改單元格資料的結果:
好了,現在我覺得我已經部分掌握了自動化桌面軟體的基礎了,讓我開始來試試完整的自動化流程。
編寫自動化
補課
開啟主要的程式碼檔案definition1.js
,剛瞭解了一下CucumberJS框架,所以這個程式碼也比較容易看懂,大致就是每個場景的步驟對應一個函式。裡面有好多async/await的關鍵字,之前瞭解Node.js的語法時好像沒看到這部分。為了看懂這些程式碼,我又把Node.js中的非同步呼叫一章看了一下,主要是Promise和async/await的用法,node果然很先進啊,async/await可以完成非同步呼叫,相當於是通過這種方式實現多執行緒的效果,這下漲經驗了。
再次回去複習了視訊教程,發現裡面提到了,表格控制元件因為是複雜控制元件,CukeTest提供了額外的自動化方法來應對不同的自動化場景,這裡實際上只要再掌握一個getItem
操作方法就可以應對了。
getItem
操作方法能夠根據傳入的行列資訊獲取目標位置的單元格物件(類似Excel中定位單元格的方式),獲取到這個物件以後再去執行它的操作方法即可。更多內容可以檢視錶格的參考手冊。
自己動手豐衣足食
看完視訊,腦子說:噢我會了,手說:你會了個啥?這大概是自己模仿視訊教程寫一個自動化專案的真實感受了。建立專案的第一步就栽了個跟頭,做到後面發現我這專案怎麼沒有.tmodel
檔案呢?回頭看了下視訊發現沒改模版,選擇了Basic模版,又趕忙重新建了一個,選擇Qt模版。
這回建立的味兒對了:
接著是我自己寫的一個簡單的自動化流程,或者說自動化劇本,總體上是跟示例專案的結構一致的,自己只新建了一個hooks.js
檔案。
開始執行
在執行的過程中,因為表格比較長,其中一個步驟要執行很久(因為我在步驟裡面遍歷了整個表),以至於誤觸了超時時間。在hooks.js
檔案中設定了超時時間為30秒,所以當執行某個步驟時超過了這個時間,就會觸發timeout
的錯誤然後退出。按照文件超時裡的方法,把hooks.js
檔案中設定的超時時間調為-1來禁用掉超時(雖然官方不建議這麼做)來完整的執行完自動化。
自動化的結果如下:
執行結束後獲得了一個執行報告:
總結
這次的試用體驗總體來說還不錯,尤其是現在Linux平臺的自動化測試工具還沒有流行的軟體,CukeTest算是Linux平臺做桌面自動化測試的一種選擇。而且去了解了一下這個工具的背景,它其實一直都是支援全平臺的,但是桌面自動化這一塊原先是在Windows平臺耕耘了很久,在不久前才正式宣佈支援Linux平臺的Qt桌面自動化,但是從體驗上來說已經具有相當的成熟的機制跟體系了。在我用的國產軟體中算是不錯的水平,可以贊一下。後面如果再有些試用心得再跟大家分享。
相關文章
- python 桌面應用自動化測試Python
- Windows桌面自動化測試工具:WinAppDriverWindowsAPP
- Linux GUI自動化測試工具LinuxGUI
- 軟體自動化測試工具的歷史演進
- 自動化測試的理想境界:AppCrawler自動遍歷工具APP
- 面經-自動化測試
- 國產自動化測試工具
- 自動化測試工具QTPQT
- 自動化測試系列 —— UI自動化測試UI
- 實用測試技能分享:jmeter+Jenkins效能測試自動化搭建JMeterJenkins
- 基於Dubbo的http自動測試工具分享HTTP
- 軟體測試工程師如何從功能測試轉成自動化測試?經驗分享篇工程師
- 自動化測試經驗的悖論
- 基於LangChain手工測試用例轉Web自動化測試生成工具LangChainWeb
- 基於LangChain手工測試用例轉介面自動化測試生成工具LangChain
- 基於LangChain手工測試用例轉App自動化測試生成工具LangChainAPP
- 【自動化測試】移動端測試輔助工具 - adb
- 自動化測試:Monkey工具實踐應用~
- iOS自動化測試驅動工具探索iOS
- bats-Bash自動化測試工具BAT
- 微軟自動化測試工具palywright微軟
- 在我有限的軟體測試經歷裡,一段專職的自動化測試經驗總結
- 【自動化測試入門】自動化測試思維
- 滲透測試與自動化安全測試工具比較
- 自動化裝置測試與自動化測試的區別
- 手工測試用例與自動化測試用例的區別
- iOS自動化測試之KIF使用分享iOS
- 介面自動化測試工程實踐分享
- 工作5年,一位來自廣西測試妹子學習《自動化測試》經驗分享
- Web自動化-Selenium自動化測試-4-編寫測試用例Web
- 軟體測試:自動化測試
- 如何學習自動化測試?從手工測試到自動化測試的過程…
- 功能測試、自動化測試、效能測試的區別
- 測者的測試技術手冊:自動的自動化EvoSuite 自動生成JUnit的測試用例UI
- airtest自動化測試工具快速入門AI
- 效能自動化測試工具Loadrunner篇
- 自動的自動化:EvoSuite 自動生成JUnit的測試用例UI
- 談軟體自動化測試工具的評測方法