自動化測試系統開發手記(一)

飛翔的老虎發表於2020-12-19

QT自動化測試系統手記(一)


上週,收到公司郵件,大約是要在月底給一個西語投行系統演示自動化測試的demo。自然,就是Kondor,一個廣泛應用於投行交易管理的系統。

說實在,kondor有些複雜。 Kondor的Front office是用QT4.8.7 X64位編譯的desktop,back office是用的web,而且僅支援IE。眾所周知,對於IE的自動化測試通常採用Selenium,不過在頁面中增加Flash表格就是一個有點意思的系統。

先不說Selenmium,畢竟,這些測試畢竟相對簡單。確實也是如此,我把selenium接入到自己的自動化測試系統僅僅用了不到2天。IE WebDriver基於IE的Com的擴充套件說起不難。倒是QT的部分,花了不少時間,直到上週依舊還有些使用者介面執行緒問題。

QT的主要問題是,版本太老。開始知道要接入Kondor的自動化測試時候,看了下Kondor的類庫,4.8.7X64.以前沒有接觸過QT,就開始google模式。大約花了一週左右,算基本瞭解需要知道的Qt的模式。也微信了一個做Qt數十年的同學,就開始幹活。於是,花了大量的硬碟下載了從QT4.8.x到最新的SDK,一下子硬碟就少了幾百G。

第一個關鍵問題是,官網沒有x64的版本,僅有原始碼和32位。於是,重新按照說明下載visual studio2008~2010的不同版本,進行64位編譯。然後問題來了。編譯的大小和Kondor的QTcore4.87的大小不一樣。要知道,在C++開發中,類庫大小版本通常是一個Crash的未知風險。不過也管不了許多,強行接入。

接入後,問題並非想象的簡單。Kondor用了不少KDE的控制元件和Q3的控制元件。辛虧,KDE的控制元件大量繼承Qt,倒也算幸運。不過在訪問Kondor物件的metaobject時候,會經常crash。好在我自己的模式和HP UFT等系統不一樣,也比HP的UFT穩定,算是基本能夠操控Kondor front office的所有功能。也感嘆,KDE和Qt的物件模型要比Infragistics等window廠家的東西,在模型方面要簡單的多(過幾天開貼寫Infragistics的)。不過,在對Image和截圖處理依舊有個炸彈。

如果採用現有模式,那個炸彈基本是無解。因為Qt貌似不允許在非介面執行緒中呼叫Qimage,需要在事件的slot中之類。而我的程式碼是無法進入Kondor的Slot程式碼,因為Kondor對我而言就是一個黑盒子。

好在在權衡現有架構後,想到一個簡單辦法,規避了在Kondor程式內部操作image的事情,就給公司的留言說,說不定幾個月後,我們可以參加巴西的狂歡節。老闆也很搞笑,留言說,他開始打包了 :)

當然,現在巴西美國疫情極其嚴重,冒險去巴西?

備註

在推特吹牛,說自己一個人搞定HP UFT一個團隊乾的事情,還比HP UFT的東西穩定強大,哈哈哈。

相關文章