目錄:
一、背景
二榜旦、Fastmonkey介紹
三幽七、Fastmonkey操作前準(zhǔn)備
四、Fastmonkey工程配置過程
五溅呢、執(zhí)行Monkey測試
六澡屡、FAQ
Fastmonkey實踐
一、背景:
? ? ? ?因眾所周知的原因隨著Xcode從7.x升級到8.x或9.x,我們無法再使用Instrument的uiautomation腳本對iOS應(yīng)用進(jìn)行Monkey測試咐旧,所以我們一直期待行業(yè)測試與開發(fā)大牛產(chǎn)出新的Monkey開源工具驶鹉,在這期間我們也使用過了一些技術(shù)大神開發(fā)的基于appium或者基于macaca的開源Monkey測試工具但是都有這樣或者那樣的問題比如:配置過于復(fù)制,上手慢铣墨,執(zhí)行速度達(dá)不到要求室埋、有的還需要進(jìn)行App源碼插莊等問題,直到Faskmonkey的出現(xiàn)它集成了眾家之長伊约,已經(jīng)基本能滿足我們?nèi)粘5膇OS應(yīng)用壓力測試了姚淆。
二、Fastmonkey介紹:
Fastmonkey是zhangzhao大神最近開源的一款iOS應(yīng)用Monkey測試工具屡律,基于 XCTestWD腌逢,swiftmonkey 二次開發(fā),實現(xiàn)無需插樁的 iOS monkey 自動化工具 fastmonkey疹尾,優(yōu)點如下:
1.無需插樁上忍!2.高效率骤肛,每秒4-5個action纳本!4.輕量極簡窍蓝!詳細(xì)介紹請參考TesterHome鏈接 :
項目開源地址:
Xcode9.x(https://github.com/zhangzhao4444/Fastmonkey?)
Xcode8.3.x(https://github.com/zhangzhao4444/Fastmonkey/tree/xcode8.3?)
三、Fastmonkey操作前準(zhǔn)備:
注意:本文所述操作步驟都是基于Xcode8.x或者Xcode9.x的版本繁成, 注意針對不的Xcode版本下載不同項目工程的吓笙、操作前準(zhǔn)備:
1)Xcode8.3.x /Xcode9.x軟件;
2)iOS?第三方庫管理工具-Carthage巾腕;
3)iOS開發(fā)者證書文件面睛;
4)Fastmonkey工程代碼從github上下載;
詳細(xì)說明:
1)Xcode8.3/Xcode9.x是用于導(dǎo)入Faskmonkey工程及運行monkey測試尊搬;
2)Carthage是iOS用于下載工程所依賴第三方庫的叁鉴;如果沒有安裝請使用下面命令進(jìn)行安裝:
brew install??carthage
3)iOS開發(fā)者證書用于工程中的構(gòu)建及簽名,證書可以是團隊的開發(fā)者證書也可以是免費的個人開發(fā)者證書佛寿,如何申請個人開發(fā)者證書請大家參考其他文檔此處不再敖述幌墓。
4)工程代碼直接從https://github.com/zhangzhao4444/Fastmonkey下載
四、Fastmonkey工程配置過程
配置是經(jīng)過我們驗證過了冀泻,不過因為每一個人的手機與Xcode版本問題可能會一些差異常侣,大家也可以參考TesterHome上的fastmonkey 自我掃盲貼
1.解壓下載后的Fastmonkey-xxx.zip的文件,打開終端進(jìn)入解壓后的子目錄XCTestWD-master
進(jìn)入解壓后的子目錄XCTestWD-master
2.執(zhí)行下列步驟下載工程所依賴的包 :
1)修改目錄中的Cartfile文件弹渔,將github "SwiftyJSON/SwiftyJSON" 改為github "SwiftyJSON/SwiftyJSON"? ==? 3.1.4? ?修改github "tadija/AEXML"為github "tadija/AEXML" == 4.1.0如下圖:
修改目錄中的Cartfile文件
2)下載工程所依賴的包
$? carthage update
PS:如果此步驟出現(xiàn)錯誤請參考后面的FAQ
下載工程所依賴的包胳施,可能需要一些時間具體要依賴于您的網(wǎng)絡(luò)速度,請耐心等待完成
3.配置XCTestWD項目工程:
雙擊子目錄XCTestWD中的XCTestWD.xcodeproj文件打開項目工程
1)修改Product ID肢专,團隊開發(fā)者證書需要修改舞肆,個人免費開發(fā)者證書可跳過此步驟
a. 修改XCTestWD所需要的產(chǎn)品ID如com.xxxx.XCTestWD.XCTestWD
xxx為證書所定義的產(chǎn)品ID前綴一般是公司或者企業(yè)的域名
b.修改XCTestWDUITests所需要的產(chǎn)品ID如com.xxx.XCTestWD.XCTestWD
xxx為證書所定義的產(chǎn)品ID前綴一般是公司或者企業(yè)的域名
2)修改簽名賬號(個人開發(fā)Team與團隊證書設(shè)置是不一樣的):
a1.團隊開發(fā)者證書如下圖:
a1.修改XCTestWD Code Signing為相應(yīng)的賬號
a1.修改XCTestWD Code Signing為相應(yīng)的Team賬號
a2.同a1過程修改XCTestWDUITests的Code Signing賬號
b.個人開發(fā)者證書如下圖:
b1.修改XCTestWDUITests的Code Signing賬號
b2.同b1修改XCTestWD的Code Signing賬號
3)添加XCTestWDMonkey.swfit到Server目錄
右鍵點擊server目錄,然選擇"Add Files to "XCTestWD"
選擇【XCTestWDMonkey.swift】文件添加到Server
4)清空XCTestWD的Objective-C Bridging Header選項中的值
清空Objective-C Bridging Header選項中的值
清空Objective-C Bridging Header選項
4.修改XCTestWD項目工程代碼中的配置值:
1)修改運行模式博杖,將XCTestWDRunner.swift文件中的serverMode設(shè)置為false如下圖
修改此項為false后椿胯,這樣Monkey就可以直接從Xcode中運行,不需要再使用額外的命令了
2)修改XCTestWDMonkey.swift文件中的bundleID為被測App的值的如下圖:
改為自己App的實際BundleID欧募,如何查找被測App的BundleID請百度一下這里不再敖述
2)修改Monkey.swift文件中的elapsedTime值確定你需要運行多長時間的Monkey压状,注意單位是秒,如下圖:
修改Monkey執(zhí)行時長
五跟继、執(zhí)行Monkey測試
1)選擇要執(zhí)行的手機與Target注意App事先安裝到被測試手機上种冬,手機已經(jīng)插入Mac電腦USB接口
從下拉列表中選擇XCTestWDUITests與手機
2)開始執(zhí)行Monkey
選擇【Product】--【Test】執(zhí)行Monkey測試
六、FAQ:
1. 如果carthage update的時候如果報這個錯xcrun: error: unable to find utility "xcodebuild", not a developer tool or in PATH需要在Xcode中 Preferences > Locations里設(shè)置Command Line Tools為自己使用版本的Xcode --謝謝光暈_9c54的提醒
2.如果是Xcode9.x可能會出現(xiàn)XCTestWDApplication.h file not found錯誤如下圖舔糖,請按照下面方法解決:
XCTestWDApplication.h file not found錯誤
添加XCTestWDApplication.h與XCTestWDApplication.m文件到PrivateHeaders目錄娱两,如下圖
選中PrivateHeaders然后點擊右鍵在彈出的界面中選擇【Add Files to "XCTestWD"...】項目
選擇XCTestWDApplication.h與XCTestWDApplication.m然后點擊Add
XCTestWDApplication.h與XCTestWDApplication.m被添加到了PrivateHeaders中
2.第一次執(zhí)行時可能會報錯,因為需要在手機上信任你的個人證書或者團隊證書金吗,第二次執(zhí)行就不會了十兢。一般位于手機【設(shè)置】--【通用】--【描述文件】中
3.每次運行完成后趣竣,在Xcode的Debug Ouput框中會輸出相應(yīng)的日志與截圖保存位置,每次運行完成后日志會報錯旱物,這個錯誤是由于Fastmonkey的Bug遥缕,參加下面Issue鏈接,主要原因是當(dāng)執(zhí)行時長一到時宵呛,Monkey測試自行停止单匣,這個停止是強退的,但Xctest沒有正常退出造成的宝穗,目前還沒有找到好的解決方法户秤。