OC-測試:monkey For OC(iOS 猴子測試)

weixin_33890499發表於2017-03-22

從前有種測試叫瞎點測試,隨機測試(淘氣的猴子)。Android 上有 Monkey。我們以前用 Monkey 來跑 Android 機頂盒,跑出了一堆非常難解決的 kernel 問題,幫助還是很大的。市場上隨便挑個 Android 應用,monkey 能跑個 30 分鐘應該算是了不起了。蘋果沒有給 iOS 提供 Monkey。大概 iOS 應用質量比較好吧。

好在很多無聊的人研究測試技術,於是就有了很多 iOS 上的 monkey 工具。比如基於 UIAutomation 的 monkey —— https://github.com/jonathanpenn/ui-auto-monkey 。通過 copy from stackoverflow 和 copy from github 模式,我們也熟練掌握了 iOS 上的 monkey。不幸的是,iOS 和 Xcode 升級之後,UIAutomation 框架被砍掉了,於是很長時間 iOS 沒有 monkey 的說法了。然後無聊的外國人又整了一個基於 XCUITesting 框架的 monkey 工具 —— https://github.com/zalando/SwiftMonkey 。社群裡早就有人用過了,但是都藏著掖著。那我是最近才知道,所以拿過來用用。

首先建立專案:

1716191-246cc6d8a3ab07ee.png
21AFAB6D-7F8D-4E35-917C-758E003F3268.png

然後把 https://github.com/zalando/SwiftMonkey 下載下來。把 SwiftMonkey目錄貼上到你的專案目錄下去。
1716191-14dd0152e1f8635c.png
2.png

然後把它的. xcodeproj 拖到專案中去。
1716191-9994dfb69b7a4f2e.png
3.png

然後進入專案新建一個Target:
1716191-7183bc4512b95996.png
4.png

1716191-df6690e0631176e0.png
5.png

因為基於 XCUITesting 框架的 monkey 工具是用swift編寫的,這裡我們選擇swift檔案
1716191-9515c3e26ad2310c.png
6.png

然後點到新建立的這個target中進行配置
1716191-9afbed17fe4b18b4.png
7.png

1716191-86546856d2dd3612.png
8.png

1716191-88f690968983bff8.png
10.png

還需要在 build setting 裡勾選上 Swift 的標準庫,如圖:
1716191-940208ddfaa78212.png
11.png

然後開啟你建立的swift檔案 替換如下程式碼
1716191-5315260126378c10.png
121.png

import XCTest

import SwiftMonkey

class MonkeyForOCUIMonkeyTests: XCTestCase {

override func setUp() {

super.setUp()

XCUIApplication().launch()

}

override func tearDown() {

super.tearDown()

}

func testMonkey() {

let application = XCUIApplication()

_ = application.descendants(matching: .any).element(boundBy: 0).frame

let monkey = Monkey(frame: application.frame)

monkey.addDefaultXCTestPrivateActions()

monkey.addXCTestTapAlertAction(interval: 100, application: application)

monkey.monkeyAround()

}

}

到此,monkey配置整合就完成了,下面就可以開始測試App了
點選小播放按鈕, 程式會自動執行並進行亂點,考驗你App的時刻到了!


1716191-53bd5f56c08327a0.png
121111.png

最後很多人會問monkey會不會測試出BUG?monkey如果測出BUG怎麼顯示?
1.monkey當然會測出BUG,具體日誌分析:


1716191-83f5fe8f2ab4604e.jpg
Monkey日誌分析.jpg

可能會遇到問題No such module 'SwiftMonkey'
解決辦法: 新建的target可能signing沒有選擇,需要進行選擇


1716191-b7aa7dd0c53a1c9e.png
error1.png

然後進入.swift檔案,點選一下播放按鈕就可以了!


1716191-4e3b4b267eecf0a8.png
error2.png

相關文章