一.使用前景
一般app開發(fā)完成后叉趣,打出ipa包貌虾,供測試mm下載安裝測試。測試mm會打開app進(jìn)行各種按鍵切換手勢動作(其實主要就是UI交互操作)勺卢,很是繁瑣伙判,尤其是回歸測試,會做很多重復(fù)的工作黑忱。
為了減輕測試mm的壓力宴抚,蘋果在ios9后,引入和UI測試相關(guān)API甫煞。開發(fā)就可以比把較固定的和通用的測試用例做成UI測試用例菇曲,一鍵運行所有用例,極大的減輕了測試mm的工作壓力抚吠。
運行用例效果圖如下(紅×就是用例不通過的):
二.給工程添加UI測試模塊
ios9后常潮,XCTEST框架增加了UI測試相關(guān)的API(UI測試) <語言是oc或swift語言>
1.新建的時候選擇如下模塊
2.如果新建的時候完了,也可以如下方法添加(添加target)
3.創(chuàng)建好后默認(rèn)代碼解釋
4.命名規(guī)范 ui測試用例要以test開頭命名
-(void)testExample1
{
XCUIApplication *app = [[XCUIApplication alloc] init];
[app.buttons[@"自選"] tap];
XCUIElement *textField = [app.textFields elementBoundByIndex:0];
XCTAssert(textField.exists);
[textField tap];
[textField typeText:@"500"];
[app.buttons[@"計算"] tap];
//添加自己的測試代碼(斷言)
XCUIElement *lbl = app.staticTexts[@"計算結(jié)果=45"];
XCTAssert(lbl.exists);
}
三.具體編碼過程
一般先用腳本錄制工具(UI Recording)進(jìn)行簡單邏輯的代碼生成楷力,之后在對代碼進(jìn)行修改喊式,添加斷言或循環(huán)操作之類的
1.腳本錄制工具(UI Recording)
錄制腳本源碼(默認(rèn)應(yīng)該會有錯誤)
2.修改腳本
四.代碼編寫和修改
-
頭文件相關(guān)類
Paste_Image.png
2.UI測試常用的API(理解子元素和后代元素的層次關(guān)系)
//所有后代元素
-(XCUIElementQuery*)descendantsMatchingType:(XCUIElementType)type;
//直接子元素
-(XCUIElementQuery*)childrenMatchingType:(XCUIElementType)type;
//模擬文本框輸入
-(void)typeText:(NSString*)text;
//模擬單機(jī)
-(void)tap;
3.常用場景
3.1判讀是否含有指靜態(tài)文本
XCUIApplication* app = [[XCUIApplicationalloc] init];
//獲得當(dāng)前界面中的表視圖
XCUIElement* tableView = [app.tableselementBoundByIndex:0];
XCUIElement* cell1 = [tableView.cells elementBoundByIndex:0];
//法1 推薦使用
XCTAssert(cell1.staticTexts[@"Welcome"].exists);
//法2
XCTAssert([[cell1 descendantsMatchingType:XCUIElementTypeStaticText] objectForKeyedSubscript:@"Welcome"].exists);
3.2點擊導(dǎo)航欄上的回退按鈕
XCUIApplication* app = [[XCUIApplication alloc] init];
//點擊添加“增加”按鈕,跳轉(zhuǎn)到增加界面
[app.navigationBars[@"導(dǎo)航欄"].buttons[@"back"] tap];
4.使用的時候注意點
4.1.如果是xib可以用蘋果的輔助功能
XCUIElement *textField = app.textFields[@"revenueTxt"];
因為我用的是代碼生成的萧朝,用的是如下方法替代
XCUIElement *textField = [app.textFields elementBoundByIndex:0];
五.具體使用例子
1.數(shù)據(jù)庫(查增刪)UI測試用例
源代碼下載:https://pan.baidu.com/s/1c1EtCcg
2.簡單效果圖
3.注意UI用例測試如果不是很獨立岔留,相互之間有聯(lián)系,出現(xiàn)紅x不一定代表代碼邏輯有問題检柬,有時候可能是很多用例有先后順序献联,需要具體評估(造點數(shù)據(jù),在重新運行下用例就可以)
如果您發(fā)現(xiàn)本文對你有所幫助厕吉,如果您認(rèn)為其他人也可能受益酱固,請把它分享出去。