1

由於我注意到許多功能測試框架(如Selenium for the Web或iOS的UISpec)實際上是在測試時模擬了 UI事件,所以我很困擾這個問題。我在問:僅僅是檢查前提條件就行了嗎?例如,按鈕的目標和選擇器已正確設置,然後手動觸發選擇器?爲什麼我需要模擬觸摸?這有你必須更多地瞭解你正在測試的UI元素的知識(你必須知道是什麼讓他們行爲正確),但是因爲我是編寫測試的人,所以這可能不重要? 任何人都可以對此有所瞭解嗎?功能測試應該模擬UI事件還是檢查前提條件?

回答

1

模擬觸摸可用於確定由模糊或無計劃的用戶行爲導致的崩潰 - 特別常見的是同時按下兩個項目。它還允許您創建可能相當深奧的測試:例如,隨機用戶輸入持續一段時間,試圖以不可預料的方式崩潰或破壞應用程序。你這樣做的級別取決於你的應用程序,以及它對你的重要程度。

當涉及到多點觸控時,您的替代方法也有一些缺點。雖然通過某種自動測試而不是模擬用戶輸入來啓動按鈕選擇器會相當簡單,但如果您有一個可處理滑動,捏或其他多輸入手勢的應用程序,會發生什麼情況?在這些情況下,所需的結果可能不像按鈕的開/關那樣黑白:您可能有許多灰色陰影和不同的輸出需要驗證。

模擬UI測試實際上有相當長的一段歷史 - 有一個有趣的故事(當然,對我有意思)關於原MacPaint格式和隨機UI輸入測試如何能夠幫助這裏再現模糊或難以崩潰:http://www.folklore.org/StoryView.py?story=Monkey_Lives.txt