使用 XCUITest 執行 monkey test

在 iOS UI monkey test 這篇使用 Instruments 來執行 Monkey Test,不過 Xcode 7 推出後提供了內建的 UI Test 工具,簡稱為 XCUITest,如果對它還不是很熟悉的朋友可以先參考 使用 Xcode 執行 UI 自動化測試 – Part 1 與 使用 Xcode 執行 UI 自動化測試 – Part 2,閱讀完 Part 1 後可能對 XCUITest 有基本的認識。

最近在 GitHub 上找的一個使用 XCUITest 上執行 UI Monkey test 的 Script,使用上也相當容易,我使用了 ChaosUITests.swift,這 Script 主要分成兩種測試,第一種是設定要跑 Monkey test 的時間,第二則是要執行多少操作事件後才結束測試,可以根據團隊對於軟體品質的要求動態調整參數。更多詳細的設定可直接參考 README 文件。

不過這 monkey test 執行時會把 iOS 的通知中心 (Notifications Center) 與控制中心 (Control Center),而離開要被測試的 App 而導致測試失敗。

ios-notifications-center  ios-control-center

我們可以進一步修改 scroll(),將它修改如下 (程式語言:Swift 3):

private func scroll(fromCoordinate: XCUICoordinate, toCoordinate: XCUICoordinate) {
    guard fromCoordinate.screenPoint.y > UIApplication.shared.statusBarFrame.size.height else {
        print("Do not open notifications center")
        return
    }

    guard fromCoordinate.screenPoint.y < XCUIApplication().windows.element(boundBy: 0).frame.size.height - 20.0 else {
        print("Do not open control center")
        return
    }

    fromCoordinate.press(forDuration: 0, thenDragTo: toCoordinate)
}

確認 scroll() 的起點的 y 座標值必須大於 20 pixel (上緣) 以及小於螢幕高度減 20 pixel (下緣),就可以確保通知中心與控制中心不會被開啟。

完整程式碼放置至 Github markchangjz/iOS-MonkeyTest-XCUITest

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s