目的:“盲點”進行monkey自動化測試,檢測卡死
注意:設置對應企業證書+APP名稱+設置測試時間:
存儲log路徑:/Users/XXXX/Library/Developer/Xcode/DerivedData/XCTestWD-dodkkvpngiaeisakvpjpjukiraqy/Logs/Test
教程:
ps :建議使用xcode 10.1, mac系統不升級到最新10.15即可
(可能中間很多步驟都不需要經歷,就能安裝成功)
1、下載Fastmoney
2、下載后檢查路徑並解壓文件
/Users/xxxxx/Fastmonkey
3、進入Fastmonkey路徑下並更新所需要的依賴
cd /Users/xxxxx/Fastmonkey/XCTestWD-master
4、因安裝所需的第三庫需要先安裝Carthage (第三方管理工具) ,若未安裝請先安裝carthage
brew install carthage
-----------------------------------------------------
5、若提示未安裝Homebrew,請先安裝Homebrew(包管理工具)
/usr/bin/ruby -e "$(curl -fsSL
https://raw.githubusercontent.com/Homebrew/install/master/install)"
6、更新brew到最新版本
brew update
注意:如果遇到Error: The /usr/local directory is not writable.錯誤,就執行以下命令sudo chown -R $(whoami):admin /usr/local,再更新。
-----------------------------------------------------
7、繼續第4步,安裝carthage
8、安裝carthage成功后,更新所需的第三方庫
1)首先進入cd /Users/xxxxx/Fastmonkey/XCTestWD-master
2)創建carthage文件
touch Cartfile
3)此時項目文件夾中會有一個名字為Carthage的文件
4)使用xcode打開該文件
open -a Xcode Cartfile
-------------------------------------------
5)在文件中輸入需要更新的第三庫並指定版本(以下為多次嘗試可用的第三方庫版本)
github "Alamofire/Alamofire" ~> 4.0
github "httpswift/swifter" == 1.4.3
github "SwiftyJSON/SwiftyJSON" == 4.2.0
github "cezheng/Fuzi" ~> 2.1.0
github "tadija/AEXML" == 4.2.2
github "CocoaLumberjack/CocoaLumberjack" == 3.2.0
github "Quick/Nimble"
6)保存文件並退出
7)如遇更新報錯 ,打開xcode -> Preferences -> Locations,選擇xcode版本為10.1
9、更新:carthage update
--------------------------------------------
10、第三方庫下載完成后, 開始配置XCTestWD.xcodeproj
1)用Xcode打開XCTestWD.xcodeproj
2)修改為企業證書
XCTestWD->General->Signing->Team
XCTestWDUITests->General->Signing->Team
3)將XCTestWD->Build Setting->Header Search Paths和XCTestWD->Build Setting->Objective-C Bridging Header里面的XCTestWD/XCTestWD-Bridging-Header.h刪掉(解決編譯報錯:error: bridging header '/Users/xxxxx/Fastmonkey/XCTestWD-master/XCTestWD/XCTestWD/XCTestWD-Bridging-Header.h' does not exist)
4)修改Product ID
11、修改XCTestWD項目工程代碼中的配置值
1)修改運行模式,將XCTestWDRunner.swift文件中的serverMode設置為false
2)修改XCTestWDMonkey.swift文件中的bundleID為被測App的值
3)修改Monkey.swift文件中的elapsedTime值確定你需要運行多長時間的Monkey,注意單位是秒
12、執行Monkey
方法1:
1)將被測手機連接電腦(注意App事先安裝到被測試手機上)
2)xcode選擇執行XCTestWDUITests
3)Product - > Test
方法2:
1)將被測手機連接電腦(注意App事先安裝到被測試手機上)
2)打開一個終端窗口,執行以下命令
iproxy 8001 8001
3)再打開一個端口,先進入工程所在目錄
cd /Users/xxxxx/Fastmonkey/XCTestWD-master/XCTestWD
4)執行以下命令(注意,devidce name 為被測手機名稱,注意單引號為英文狀態下輸入)
xcodebuild -project XCTestWD.xcodeproj -scheme XCTestWDUITests -destination ‘platform=iOS,name=devide name’ XCTESTWD_PORT=8100 clean test
13、編譯報錯的解決辦法
1)ideviceinstaller: command not found
Command /bin/sh failed with exit code 127
解決辦法:安裝ideviceinstaller
brew uninstall ideviceinstaller
brew uninstall libimobiledevice
brew install --HEAD libimobiledevice
brew link --overwrite libimobiledevice
brew install ideviceinstaller
brew link --overwrite ideviceinstaller
備注:在使用中如果遇到Could not connect to lockdownd. Exiting錯誤可以試試升級libusbmuxd並重新安裝ideviceinstaller
brew uninstall --ignore-dependencies libimobiledevice
brew uninstall --ignore-dependencies usbmuxd
brew install --HEAD usbmuxd
brew unlink usbmuxd
brew link usbmuxd
2)可以編譯成功,但執行Monkey過程中報錯
Assertion Failure: XCTestWDRunner.swift:39: failed: caught "NSInvalidArgumentException", "+[XCAXClient_iOS sharedClient]: unrecognized selector sent to class 0x104afc130"
解決辦法:一開始搭建環境時使用的xcode版本為10.2。但10.2中XCAXClient_iOS沒有sharedClient這個方法。最終降級為10.1
終端執行:sudo xcode-select -switch /Applications/Xcode.app/
備注:10.1和10.2 版本的xcode 可以共存。switch后面為10.1的安裝路徑
14、執行成功后可在對應目錄下查找日志
存在的問題:每次運行完成后,在Xcode的Debug Ouput框中會輸出相應的日志與截圖保存位置,每次運行完成后日志會報錯,這個錯誤是由於Fastmonkey的Bug,主要原因是當執行時長一到時,Monkey測試自行停止,這個停止是強退的,但Xctest沒有正常退出造成的,目前還沒有找到好的解決方法。