一次Linux桌面自動化測試工具的試用經(jīng)歷分享

最近老板提出桌面應(yīng)用要上自動化測試狞贱,讓我研究研究。研究了一陣郎仆,這里做一下分享只祠。

我們公司是國產(chǎn)化平臺的軟件企業(yè),主要做國產(chǎn)Linux系統(tǒng)平臺的產(chǎn)品扰肌。本公司產(chǎn)品主要是Qt做的抛寝,跨平臺地圖應(yīng)用,也包括國產(chǎn)平臺曙旭,如銀河麒麟盗舰,搜了一下國內(nèi)外軟件。國外有一家Squish能做桂躏,國內(nèi)有CukeTest能做钻趋。但因?yàn)槭菄a(chǎn)化平臺,所以找了國內(nèi)的這家剂习。申請CukeTest試用版蛮位,看官方的說明是支持全平臺的自動化工具。今天分享一下試用心得鳞绕。

背景介紹

公司環(huán)境主要是銀河麒麟失仁、中標(biāo)麒麟和Ubuntu。我試用電腦上裝了Ubuntu 18.04们何,環(huán)境里面除了從apt安裝的默認(rèn)qt4.8跟5.9萄焦,另外手動安裝了最新版的qt 5.15用于開發(fā)桌面應(yīng)用。

安裝

申請了Linux完整版試用冤竹,拿到了CukeTest 1.5.14.deb安裝包拂封,直接使用dpkg -i命令安裝上去茬射,打開了界面如下:

安裝界面

示例學(xué)習(xí)

初見

在歡迎界面右下角提供了幾個(gè)示例,但是一個(gè)個(gè)點(diǎn)開看過去都是Web跟API的示例烘苹,而我要的是Qt也就是桌面自動化的示例躲株,似乎這里還沒有提供。好在官網(wǎng)里面提供了不少Linux平臺Qt測試的文檔跟視頻镣衡,照著視頻教程里面提供的示例代碼霜定,從github拷了一份到電腦準(zhǔn)備跑一跑學(xué)習(xí)一下。

選擇了提供的Qt table的示例廊鸥,看描述是針對表格應(yīng)用的望浩,恰好公司應(yīng)用里面也涉及到很多表格的正確性測試。示例項(xiàng)目內(nèi)容如下:

table示例項(xiàng)目

項(xiàng)目的結(jié)構(gòu)如下:

項(xiàng)目結(jié)構(gòu)

因?yàn)闆]看到項(xiàng)目文件之類的可以直接關(guān)聯(lián)打開項(xiàng)目的文件惰说,只有一個(gè)package.json文件磨德,檢查了一下里面是版權(quán)信息跟模版之類的內(nèi)容。所以直接從CukeTest界面打開table示例所在的文件夾吆视,打開后如下所示:

打開table示例項(xiàng)目

table示例主界面

試著點(diǎn)擊一下工具欄上的運(yùn)行按鈕典挑,CukeTest就最小化進(jìn)入運(yùn)行狀態(tài)了,彈出一個(gè)應(yīng)用啦吧,運(yùn)行時(shí)似乎還有字幕顯示您觉。因?yàn)楹芸炀瓦\(yùn)行完了,總共跑了十幾秒授滓,運(yùn)行結(jié)束以后跳出了一個(gè)圖表琳水,應(yīng)該就是描述剛剛的運(yùn)行情況了。

運(yùn)行結(jié)果

仔細(xì)看了一下跟項(xiàng)目般堆,至少我大概明白了這個(gè)軟件的測試方式在孝,也就是它根據(jù)這一個(gè)個(gè)場景與步驟的定義來執(zhí)行,如果步驟的執(zhí)行有問題淮摔,就會呈現(xiàn)在這個(gè)報(bào)表上私沮,好讓測試人員查看。

步驟比對

模型管理器

接著看教程視頻和橙,了解到這個(gè)軟件還有一個(gè)管理控件識別的模塊仔燕,叫作模型管理器,用于把要操作的控件加進(jìn)去以便進(jìn)行自動化胃碾,而保存這些控件信息的文件就叫作模型文件,位于項(xiàng)目中的features/step_definitions/*.tmodel文件中筋搏。雙擊該文件打開了模型管理器仆百,如下:

模型管理器

第一次啟動的用模型管理器偵測控件時(shí),我從CukeTest的安裝目錄下找到了被測的表格應(yīng)用奔脐,就是Qt自帶的樣例Dock Widget俄周。手動把它打開了吁讨,但是卻出現(xiàn)了控件識別不到的問題: 識別應(yīng)用中的控件沒有識別到。高亮模型管理器中已有的控件都不生效峦朗,會出現(xiàn)了錯(cuò)誤1003: 無法找到匹配的應(yīng)用:

識別與高亮失敗

接著看視頻建丧,找到了問題的所在,是由于自動化的機(jī)制決定了要通過特殊的方式啟動被測應(yīng)用波势,這里我們通過模型管理器啟動一下這個(gè)表格應(yīng)用翎朱,之后才能識別到。因?yàn)樗鼤诒粶y應(yīng)用中加載一個(gè)名為Qt Agent的服務(wù)尺铣。之后才看到這篇文檔中有講解:啟動應(yīng)用拴曲。

完美解決了問題!識別跟高亮功能都能正常的運(yùn)作凛忿,如下所示:

識別新的控件

并且在模型管理器左下角也出現(xiàn)了被測應(yīng)用的信息:

應(yīng)用信息

接著在識別到的控件中控件操作標(biāo)簽頁澈灼,看到了提供的一些自動化操作,而且工具看起來是針對不同的控件都有不一樣的操作方法店溢,文檔中也提供了這些操作方法的參考手冊對象操作API叁熔。下面是用工具提供的set方法修改單元格數(shù)據(jù)的結(jié)果:

修改單元格數(shù)據(jù)

好了,現(xiàn)在我覺得我已經(jīng)部分掌握了自動化桌面軟件的基礎(chǔ)了床牧,讓我開始來試試完整的自動化流程荣回。

編寫自動化

補(bǔ)課

打開主要的代碼文件definition1.js,剛了解了一下CucumberJS框架叠赦,所以這個(gè)代碼也比較容易看懂驹马,大致就是每個(gè)場景的步驟對應(yīng)一個(gè)函數(shù)。里面有好多async/await的關(guān)鍵字除秀,之前了解Node.js的語法時(shí)好像沒看到這部分糯累。為了看懂這些代碼,我又把Node.js中的異步調(diào)用一章看了一下册踩,主要是Promise和async/await的用法泳姐,node果然很先進(jìn)啊,async/await可以完成異步調(diào)用暂吉,相當(dāng)于是通過這種方式實(shí)現(xiàn)多線程的效果胖秒,這下漲經(jīng)驗(yàn)了。

腳本界面

再次回去復(fù)習(xí)了視頻教程慕的,發(fā)現(xiàn)里面提到了阎肝,表格控件因?yàn)槭菑?fù)雜控件,CukeTest提供了額外的自動化方法來應(yīng)對不同的自動化場景肮街,這里實(shí)際上只要再掌握一個(gè)getItem操作方法就可以應(yīng)對了风题。

getItem操作方法能夠根據(jù)傳入的行列信息獲取目標(biāo)位置的單元格對象(類似Excel中定位單元格的方式),獲取到這個(gè)對象以后再去執(zhí)行它的操作方法即可。更多內(nèi)容可以查看表格的參考手冊沛硅。

自己動手豐衣足食

看完視頻眼刃,腦子說:噢我會了,手說:你會了個(gè)啥摇肌?這大概是自己模仿視頻教程寫一個(gè)自動化項(xiàng)目的真實(shí)感受了擂红。創(chuàng)建項(xiàng)目的第一步就栽了個(gè)跟頭,做到后面發(fā)現(xiàn)我這項(xiàng)目怎么沒有.tmodel文件呢围小?回頭看了下視頻發(fā)現(xiàn)沒改模版昵骤,選擇了Basic模版,又趕忙重新建了一個(gè)吩抓,選擇Qt模版涉茧。

注意選擇Qt模版

這回創(chuàng)建的味兒對了:

有tmodel了

接著是我自己寫的一個(gè)簡單的自動化流程,或者說自動化劇本疹娶,總體上是跟示例項(xiàng)目的結(jié)構(gòu)一致的伴栓,自己只新建了一個(gè)hooks.js文件。

我的自動化流程
hooks.js文件

開始運(yùn)行

在運(yùn)行的過程中雨饺,因?yàn)楸砀癖容^長钳垮,其中一個(gè)步驟要執(zhí)行很久(因?yàn)槲以诓襟E里面遍歷了整個(gè)表),以至于誤觸了超時(shí)時(shí)間额港。在hooks.js文件中設(shè)置了超時(shí)時(shí)間為30秒饺窿,所以當(dāng)運(yùn)行某個(gè)步驟時(shí)超過了這個(gè)時(shí)間,就會觸發(fā)timeout的錯(cuò)誤然后退出移斩。按照文檔超時(shí)里的方法肚医,把hooks.js文件中設(shè)置的超時(shí)時(shí)間調(diào)為-1來禁用掉超時(shí)(雖然官方不建議這么做)來完整的執(zhí)行完自動化。

自動化的結(jié)果如下:
![被測應(yīng)用的運(yùn)行結(jié)果]https://upload-images.jianshu.io/upload_images/4377716-3830ff1c8074f66e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

控制臺的輸出

運(yùn)行結(jié)束后獲得了一個(gè)運(yùn)行報(bào)告:

被測應(yīng)用的運(yùn)行結(jié)果

總結(jié)

這次的試用體驗(yàn)總體來說還不錯(cuò)向瓷,尤其是現(xiàn)在Linux平臺的自動化測試工具還沒有流行的軟件肠套,CukeTest算是Linux平臺做桌面自動化測試的一種選擇。而且去了解了一下這個(gè)工具的背景猖任,它其實(shí)一直都是支持全平臺的你稚,但是桌面自動化這一塊原先是在Windows平臺耕耘了很久,在不久前才正式宣布支持Linux平臺的Qt桌面自動化朱躺,但是從體驗(yàn)上來說已經(jīng)具有相當(dāng)?shù)某墒斓臋C(jī)制跟體系了刁赖。在我用的國產(chǎn)軟件中算是不錯(cuò)的水平,可以贊一下长搀。后面如果再有些試用心得再跟大家分享宇弛。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市源请,隨后出現(xiàn)的幾起案子枪芒,更是在濱河造成了極大的恐慌轿钠,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件病苗,死亡現(xiàn)場離奇詭異,居然都是意外死亡症汹,警方通過查閱死者的電腦和手機(jī)硫朦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來背镇,“玉大人咬展,你說我怎么就攤上這事÷髡叮” “怎么了破婆?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長胸囱。 經(jīng)常有香客問我祷舀,道長,這世上最難降的妖魔是什么烹笔? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任裳扯,我火速辦了婚禮,結(jié)果婚禮上谤职,老公的妹妹穿的比我還像新娘饰豺。我一直安慰自己,他們只是感情好允蜈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布冤吨。 她就那樣靜靜地躺著,像睡著了一般饶套。 火紅的嫁衣襯著肌膚如雪漩蟆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天凤跑,我揣著相機(jī)與錄音爆安,去河邊找鬼。 笑死仔引,一個(gè)胖子當(dāng)著我的面吹牛扔仓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播咖耘,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼翘簇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了儿倒?” 一聲冷哼從身側(cè)響起版保,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤呜笑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后彻犁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叫胁,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年汞幢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了驼鹅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,764評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡森篷,死狀恐怖输钩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情仲智,我是刑警寧澤买乃,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站钓辆,受9級特大地震影響剪验,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜前联,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一碉咆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蛀恩,春花似錦疫铜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至顽馋,卻和暖如春谓厘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背寸谜。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工竟稳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人熊痴。 一個(gè)月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓他爸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親果善。 傳聞我的和親對象是個(gè)殘疾皇子诊笤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評論 2 354