Jenkins下集成 SwiftMonkey 請(qǐng)看下篇文章:
由于現(xiàn)在項(xiàng)目一直停留在人工測(cè)試中, 人工測(cè)試可能不會(huì)測(cè)試的那么全面, 當(dāng)開發(fā)修改了一個(gè)地方, 可能牽扯出其他地方, 這個(gè)時(shí)候人工測(cè)試就顯得捉襟見肘巍举。
還有一個(gè)原因就是app上線之后總是有些意想不到的crash, 測(cè)試也不可能完全找到問(wèn)題所在, Android 上有 Monkey 測(cè)試, 就是隨機(jī)測(cè)試(淘氣的猴子), 蘋果沒(méi)有給 iOS 提供 Monkey, 以前有基于 UIAutomation 的 monkey, 但是后來(lái)升級(jí) Xcode 后UIAutomation 框架被砍掉了, 于是很長(zhǎng)時(shí)間 iOS 沒(méi)有 monkey 的說(shuō)法了沛厨。然后無(wú)聊的外國(guó)人又整了一個(gè)基于 XCUITesting 框架的 monkey 工具 —— SwiftMonkey
官方效果如下
下面看下具體流程: (創(chuàng)建項(xiàng)目過(guò)程不具體說(shuō)了, 從添加 SwiftMonkey 開始說(shuō)起)
-
打開 GitHub 下載 SwiftMonkey, 將 SwiftMonkey 和 SwiftMonkeyPaws文件夾拷貝到項(xiàng)目中
-
然后將 SwiftMonkey.xcodeproj 和 SwiftMonkeyPaws.xcodeproj 拖入到項(xiàng)目中
-
然后進(jìn)入項(xiàng)目新建一個(gè) target
因?yàn)?SwiftMonkey 是 swift 編寫, 所以這里選擇 swift 文件
-
選中創(chuàng)建的 target, 添加 SwiftMonkey 庫(kù)
-
還需要在 build setting 里勾選 swift 標(biāo)準(zhǔn)庫(kù)
-
然后打開你創(chuàng)建的swift文件 替換如下代碼
func testMonkey() {
let application = XCUIApplication()
_ = application.descendants(matching: .any).element(boundBy: 0).frame
let monkey = Monkey(frame: application.frame)
monkey.addXCTestTapAlertAction(interval: 100, application: application)
monkey.monkeyAround()
}
-
如果需要在運(yùn)行的 app 中展示猴子?? 需要配置以下:
-
在第7步基礎(chǔ)上創(chuàng)建一個(gè) Appdelegate+MonkeyTest.swift 文件, 在里面寫入如下代碼
-
然后在 didFinishLaunchingWithOptions 方法中調(diào)用這個(gè)方法, 如下:
問(wèn)題分析:
可能會(huì)遇到問(wèn)題 No such module 'SwiftMonkey'
解決辦法: 新建的target可能signing沒(méi)有選擇,需要進(jìn)行選擇
Monkey 日志分析
-
正常情況下, 如果 Monkey 測(cè)試順利通過(guò)完成, 在 log 的最后, 會(huì)打印出當(dāng)前執(zhí)行事件的次數(shù)和所花費(fèi)的時(shí)間.
Test Case ...... paaaed 如果完成, 代表沒(méi)有錯(cuò)誤, 如下圖
- 異常情況下
Monkey 測(cè)試出現(xiàn)錯(cuò)誤后, 一般的分析步驟:
看 Monkey 的分析日志(注意第一個(gè)switch以及異常信息等)
- 程序無(wú)響應(yīng)的問(wèn)題: 在日志中搜索 'ANR'
- 崩潰問(wèn)題: 在日志中搜索 'Exception', (如果出現(xiàn)空指針, NullPointerException), 肯定是有bug
Monkey 執(zhí)行中斷, 在 log 最后也能查看當(dāng)前執(zhí)行次數(shù)
友情鏈接:
Jenkins 中查看崩潰信息
注意: SwiftMonkey 把 XCTesting 的私有 API 拿出來(lái)用了颂碧,直接通過(guò) XCEventGenerator 來(lái)模擬事件。所以如果你的應(yīng)用植入了 SwiftMonkey 千萬(wàn)不要拿去提交 AppStore收苏。
參考文獻(xiàn):
iOS測(cè)試:monkey For OC(iOS猴子測(cè)試)
SwiftMonkey