2011-07-21 22 views
4

我對IOS編程非常新穎。我有一項任務,可以確定是否可以自動化我的UI進行測試。這就是我想做的事:在IOS中是否有用於UI控件自動化的現有庫

  • 把我的應用程序的一些代碼,隨機(聽起來很糟糕,但可以預先定義的事件)發送事件消息,以控制屏幕上的。

  • 由於它只是代碼,我應該能夠把應用程序,部署它在任何iPhone或iPad和運行程序。

  • 一旦應用程序完全通過我的代碼實現自動化,我想可以很容易地對獲得的性能數據進行分析。

我見過FoneMonkey,但看起來好像需要在每個設備上手動記錄用戶交互。

歡迎任何想法或建議。

  • Lalith
+1

您是否嘗試過儀器中的UI自動化? http://developer.apple.com/library/ios/#documentation/DeveloperTools/Reference/UIAutomationRef/ – Felix

回答

5

你好Lalith我一直在爲應用程序創建一些UI自動化測試,它的工作非常好。雖然它有一些技巧,我想你應該在這些鏈接看看:

http://answers.oreilly.com/topic/1646-how-to-use-uiautomation-to-create-iphone-ui-tests/

http://alexvollmer.com/posts/2010/07/03/working-with-uiautomation/

如果您需要更多的幫助,只是讓我知道。:)

EDIT1:一旦你到一個點,你是

if([myTextField canBecomeFirstResponder]){ 
    [myTextField becomeFirstResponder]; 
} 
+0

謝謝..我會檢查所有的工具。一旦我熟悉了這些東西,我可能會自己創建一個小框架。現在我正在努力理解基礎知識。 – Lalith

+1

有任何疑問請留下您的問題。 – Peres

+0

Jacky,我想我們使用的任何UI自動化工具都不能在實際設備上運行,而無需連接到主機。我在UIControl類下查看sendActionsforControlEvents ..我所需要做的就是執行點擊操作或任何...如果你知道任何引用 – Lalith

2

您可以創建一個父UIView,向其中添加 「孩子」 或子視圖。子視圖包含您的應用程序UI。

父視圖設置爲透明,並捕獲觸摸並記錄它們。一旦記錄,觸摸事件就傳遞給子視圖。你可以在這裏發送你的測試。

因爲父視圖是透明的,所以用戶永遠不會看到它,但它仍然捕獲和處理觸摸事件。

設置這將涉及相當數量的子類,並且一些類(例如UIWebView)引入困難。但它可能是可行的。

4

Apple通過儀器和可訪問性API爲基於JavaScript的自動化提供了框架。這不是最好的100%真棒,但值得一看。

儀器+實際用手指觸摸手機是一種在現實世界中進行性能分析的好方法。

一般來說,我沒有覺得自動化UI測試是值得的。用戶界面通常會發生很大的變化,導致功能規格少於其值得的值。因人而異。

4

你對自己的viewController的viewDidLoad中,您可以添加這樣的事情:

- (void)viewDidLoad { 
     [super viewDidLoad]; 
     //(Your code...) 
     // I set it to start after 5 seconds... 
     [self performSelector:@selector(startTest) withObject:nil afterDelay:5]; 
    } 


    -(void)startTest{ 
     //took this from the link you posted 
     [myButton sendActionsForControlEvents:UIControlEventTouchUpInside]; 
    } 

編輯2舒服,我會看看這個KIF framework

KIF代表Keep It Functional,是一款iOS集成測試 框架。通過利用操作系統可用於 視覺障礙的可訪問性屬性,可以輕鬆實現iOS應用程序的自動化。

0

感謝您的幫助。正如我在評論中提到的那樣,我應該可以在IOS設備中獨立運行它們。我們可以使用sendActionsForControlEvents,如here所述。 這就是我現在需要的。

0

我一直在使用IMAT相當成功的iOS自動化。

https://code.intuit.com/sf/sfmain/do/viewProject/projects.ginsu

的原因,我喜歡它:

  1. 它的建成,對上,蘋果公司提供,您可以從儀器或命令行啓動它的JavaScript自動化的頂部
  2. 它提供了一個測試-runner(以N爲單位)for JavaScript iOS自動化
  3. 爲檢索UI元素提供了一種整潔的機制(類似於其他自動化工具使用的對象映射)
  4. 無需更改您的應用代碼(無需使用某個庫或儀器構建您的代碼)
  5. 通過閱讀plist文件提供一個類似jUnit的報告,該文件由我的CI工具( TeamCity,Jenkins,CruiseControl)
相關問題