2011-11-01 97 views
15

我一直在閱讀很多關於測試驅動開發的內容,並決定讓它在一個小項目上發揮作用。作爲參考,我目前正在閱讀「面向對象的軟件,以測試爲指導」。如何爲Mac(Cocoa)應用程序創建端到端測試?

我明白如何單元測試我的應用程序,以及如何單元測試用戶界面的某些部分,但我正在努力設置端到端測試。例如,測試通過整個應用程序的某個路徑會產生正確的輸出(這是我對端到端測試的基本理解)。

沒有必要模擬點擊事件,但需要與UI進行某種連接。

我是否認爲我需要結合使用「邏輯」測試(測試無需啓動應用程序),「應用程序」測試(啓動應用程序測試)以及GHUnit之類的異步功能來完成此操作?

編輯:

閱讀下面的一些問題的答案後,這聽起來像我在尋找功能的終端到終端的測試,但我想我應該給一個測試的例子,因爲我想象它。

  1. 啓動應用程序。
  2. 用測試用戶憑證調用登錄功能。 (注意:不一定需要UI自動化)。
  3. 確認窗口上的標籤顯示「正在登錄...」。
  4. 成功驗證用戶後,請驗證標籤現在顯示「Welcome,Adam!」。

KIF聽起來像它可以工作,因爲它有步驟來檢查UI元素的變化,它看起來像還有一個Mac OSX分支。我確信我也可以寫一個小班,不斷調查用戶界面以瞭解某些時間後的變化,但我想知道這是否正確。但是,也許我正試圖把我正在閱讀的'正在成長的面向對象軟件,由測試引導'並嘗試將其應用於Cocoa。

另一個更新:

所以我一直在閱讀的建議,到目前爲止,檢查連接到不同的地方,並開始實施的東西,同時還引用了這本書。我認爲我真正想要得到的是Test-Driven-開發部分。在本書中最突出的是,他們從用戶的角度首先描述了他們想要通過驗收測試發生的事情。

我意識到,只要開始編寫方法,就需要進行堅實的單元測試,但我很想首先使用一些UI編寫一些高級驗收測試。我已經開始編寫自己的應用程序「驅動程序」類,使用一些類似於GHAsyncTestCase想法的方法來幫助我實現這一點。這聽起來是否正確/有用/必要?

到目前爲止,我非常感謝所有的評論,他們確實幫助我在自己的腦海中摸索出了自己想要做的事情以及測試的各個方面。我會很快完成這個問題,因爲它變得相當大,所以任何最後的建議是值得歡迎的!

+1

偉大的第一個問題! – logancautrell

回答

3

我認爲我從「面向對象的軟件」中獲得的關鍵是儘可能地從UI中分離出來。如果沒有代碼來看待這個問題很難提供建議,但通過修改,我會認爲將用戶界面中的「驗證一個標籤說..」位分開。什麼是設置此消息,並且您可以只測試該事件嗎?

越能夠從UI中分離出越多的單元測試(更快更簡單),而不是整合UI元素的其他框架或驅動程序。

+0

儘管我也得到了這個分離消息,但他們幾個主要的「端到端」測試確實有諸如「在執行此操作後檢查標籤說明了這一點」之類的事情。我是不是在這上面掛了?但是,是的,也許我應該更多地從UI上解耦。 – Adam

+0

在開始編寫測試並開始測試驅動開發之後,我意識到實際測試UI的需求僅限於少數幾種情況,並且大部分時間您都可以通過解耦UI和使用mock來解決此問題。儘管此主題中的所有答案都能幫助我理解,但您最接近我最終發現的內容。 – Adam

0

我相信你可以使用輔助功能來編寫UI腳本。我會檢查WWDC 2011的視頻,其中一個標題爲「簡化Mac可訪問性的設計模式」。他們在2010年做了類似的事情。

+0

雖然該視頻和輔助功能很有幫助,但它並不完全涵蓋我想了解更多關於Cocoa和Xcode的完整端到端體驗。我還說過,仿真用戶交互對於端到端測試並不是必需的(據我所知)。 – Adam

0

根據你對@Norman的迴應,我想你正在尋找既能實現端到端功能,又能實現基於UI的端到端的建議,但也許是UI自動化框架可能改變你的想法?侵入性的東西像FoneMonkey可能會有所幫助: http://www.gorillalogic.com/fonemonkey

如果不爲你工作,我會想知道爲什麼&什麼「缺口」你在這樣的UI驅動測試與基於代碼的功能測試察覺?

+0

謝謝,我想我甚至可能對你提到的「差距」有些困惑,所以我試圖改進我的問題。 FoneMoney看起來與KIF類似,儘管我沒有在Mac版上看到提及。 – Adam

相關問題