2012-11-20 114 views
3

我有一個應用程序,我試圖自動使用霰彈槍方法調試(隨機觸摸應用程序很長一段時間)。我目前使用UIAutomation這個腳本:UIAutomation iOS調試

var target = UIATarget.localTarget(); 
var app = target.frontMostApp(); 
var window = app.mainWindow(); 

target.delay(2); 

window.tapWithOptions({ x:160.0, y:370.0 }); 

target.delay(5); 

for(i=0;i<=100000;i++) 
{ 
    xPoint = Math.floor(Math.random()*319+1) 
    yPoint = Math.floor(Math.random()*479+1) 
    window.tapWithOptions({ x:xPoint, y:yPoint }); 
} 

這工作,但不幸的是,當它最終崩潰我沒有調試信息,讓我知道爲什麼,反正是有,我可以綁Xcode調試這個自動化?

回答

6

首先,如果您不介意無恥的插頭,您可能會發現我的UI AutoMonkey項目很有用。它是一種隨機生成各種可配置事件的工具,可以執行所謂的「霰彈槍」測試。

因此,對於您的問題,可能會讓儀器在發生碰撞事故時中斷。它沒有使用完整的調試器,但通過使用Allocations工具,我們可以告訴它啓用NSZombie檢測。

打開自動化模板後,確保應用程序已關閉且未記錄跟蹤。打開儀器庫並將Allocations儀器拖入時間線。點擊「我」在該文書,並確保「啓用NSZombie檢測」複選框被選中,如:

Enable NSZombie detection

然後與自動化測試閒逛運行你的應用程序,如果它與內存崩潰的問題,你會看到分配儀器顯示彈出像:

Finding the Zombie

點擊小箭頭,在彈出的,你會跳轉到殭屍被觸發。發生崩潰時的堆棧位於右側邊欄中。您應該能夠在該堆棧中的任意位置雙擊並查看發生內存崩潰的Objective C代碼。有一些很好的WWDC videos可以通過如何使用Allocations工具。我建議你也檢查一下。