2011-05-12 233 views
8

不幸的是,我有一個GUI桌面應用程序在Windows上運行,並使用Borland C++編譯器進行編譯。我知道這是一項非常古老的技術,但那就是生活。我工作的公司擁有許多QTP的免費許可證。但說實話我不喜歡這個工具,我想用一些開源替代方案來改變它。C++ GUI桌面窗口應用測試自動化工具/庫/框架

我有一個使用Selenium和一些java swing applets的自動化Web服務的實驗。 我創建了基於Java/JUnit的測試。我想知道如果我可以在Java中創建一些測試來測試我的C++應用程序 - 那太棒了。如果我不能使用任何C/C++庫創建我自己的測試框架,那麼這是不可能的。

這不應該是單元測試。我想創建一套功能測試。 我希望能夠本地化像按鈕,表格,單元格等對象,執行像點擊,改變焦點等動作。

另外我有權訪問源代碼。但這是一個老式的意大利麪代碼,我對C++應用程序沒有太多的經驗。

你有什麼建議?

回答

5

開源工具

White是一個基於.NET UI自動化工具,可以自動其他類型之間的Win32應用程序。只要您的應用程序中使用的控件使用Windows的標準UIAutomation掛接公開他們的內容/行爲,那麼您應該可以使用它來做你所需要的。

UIAutomation Verify是另一個CodePlex項目,它使用相同的API來自動化符合UIA標準的UI。

的Visual Studio內置的高級版/旗艦版

最後,如果你有機會獲得它,然後Visual Studio 2010中有腳本的UI測試功能 - Coded UI Tests。這支持.NET,本地和Web應用程序的記錄/重放和腳本功能。

+0

我會尋找一個白色/ UIAutomation驗證很快。但是,你可以引用任何Java庫來測試C++應用程序嗎? – Robert 2011-05-12 15:06:33

+0

@Robert對不起,我沒有使用/聽說過任何基於Java的工具來測試Win32應用程序。 – 2011-05-12 16:52:33

+1

以下是使用白色自動化Windows記事本的示例:https://github.com/slmoloch/Notepad.TestSuite – 2014-03-31 02:52:04

0

羅伯特,如果你的公司已經有QTP許可證,我建議你使用它。它是這個工作的正確工具,如果你的公司已經擁有它,沒有任何意義。它有它的瑕疵 - 我的主要反對意見是有限的IDE和VBScript腳本語言 - 但它並沒有成爲意外的市場領先工具。測試Windows C++ GUI應用程序的開源選項並不多。您應該考慮的主要商業選擇是HP QTP,IBM Rational Functional Tester和VS2010編碼UI測試。

+0

有人已經開始使用QTP進行自動化,但是在識別這個工具中的對象時存在問題,存在很多黑客攻擊,性能和不穩定性問題。我不喜歡QTP的IDE和VBS。我更喜歡Java代碼,因爲我們有客觀的語言,我對它有一些嘗試,加入另一個庫不是問題。 – Robert 2011-05-13 06:26:42

+0

我不認爲我的公司會支付另一種商業工具,所以我寧願選擇開源庫。 – Robert 2011-05-13 06:28:23

5

我們使用Sikuli,並一直很滿意。它在各種自動化API之外工作,所以它非常好地處理非標準UI。

+0

我會檢查一下。 – Robert 2011-05-13 06:28:57

+0

+1:優秀!!!我夢想了很久這樣的工具^^麻省理工學院做到了! – neuro 2011-05-13 08:55:10

+1

Sikuli看起來不錯,但有兩個問題:1)在我試圖找到一個對象或創建一個區域IDE最小化,我什麼也做不了。難道我做錯了什麼? 2)第二個問題是我期待更多的東西。我想編程測試而不是點擊圖形。我試圖用java綁定sikuli,但我認爲這些文檔是純粹的,我不知道如何在lable旁邊找到一個可編輯的文本字段用戶名或帶有標籤等的按鈕等等。Sikuli可能嗎? – Robert 2011-05-13 16:31:53

1

我同意Robert的觀點,即QTP有時不是最好的工具,尤其是當您希望它等待桌面應用程序完成其處理時。 QTP命令不同步,這意味着QTP不會等待前一個命令完成執行,然後才能轉到下一個呼叫。我們有很多這方面的問題。我們現在計劃編寫一個c#dll,可以爲QTP做到這一點,並將其包含在我們的QTP程序中,使QTP動態等待,直到桌面應用程序完成其處理。目前,據我所知,QTP不支持這種等待功能。另外,回到對象識別問題,我們確實有很多問題,並採取了通過QTP中的按鍵調用使用助記符的命令的替代路由。正如Simon已經提到的,這可能是由於GUI元素的非暴露。我們在這方面沒有太多的控制,所以我們沒有對此進行進一步的調查。