ios自動化測試(xcode自帶的UI測試)

一.使用前景
一般app開發(fā)完成后,打出ipa包,供測試mm下載安裝測試。測試mm會打開app進行各種按鍵切換手勢動作(其實主要就是UI交互操作),很是繁瑣,尤其是回歸測試,會做很多重復(fù)的工作。
為了減輕測試mm的壓力,蘋果在ios9后,引入和UI測試相關(guān)API。開發(fā)就可以比把較固定的和通用的測試用例做成UI測試用例,一鍵運行所有用例,極大的減輕了測試mm的工作壓力。
運行用例效果圖如下(紅×就是用例不通過的):


Paste_Image.png

二.給工程添加UI測試模塊
ios9后,XCTEST框架增加了UI測試相關(guān)的API(UI測試) <語言是oc或swift語言>
1.新建的時候選擇如下模塊


Paste_Image.png

2.如果新建的時候完了,也可以如下方法添加(添加target)


Paste_Image.png

3.創(chuàng)建好后默認代碼解釋
Paste_Image.png

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)進行簡單邏輯的代碼生成,之后在對代碼進行修改,添加斷言或循環(huán)操作之類的
1.腳本錄制工具(UI Recording)


Paste_Image.png

錄制腳本源碼(默認應(yīng)該會有錯誤)


Paste_Image.png

2.修改腳本


Paste_Image.png

四.代碼編寫和修改

  1. 頭文件相關(guān)類


    Paste_Image.png

    2.UI測試常用的API(理解子元素和后代元素的層次關(guān)系)

//所有后代元素
-(XCUIElementQuery*)descendantsMatchingType:(XCUIElementType)type;
//直接子元素
-(XCUIElementQuery*)childrenMatchingType:(XCUIElementType)type;
//模擬文本框輸入
-(void)typeText:(NSString*)text;
//模擬單機
-(void)tap;

3.常用場景
3.1判讀是否含有指靜態(tài)文本

XCUIApplication* app = [[XCUIApplicationalloc] init];
//獲得當前界面中的表視圖
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點擊導航欄上的回退按鈕

XCUIApplication* app = [[XCUIApplication alloc] init];
//點擊添加“增加”按鈕,跳轉(zhuǎn)到增加界面
[app.navigationBars[@"導航欄"].buttons[@"back"] tap];

4.使用的時候注意點
4.1.如果是xib可以用蘋果的輔助功能


Paste_Image.png
XCUIElement *textField = app.textFields[@"revenueTxt"];

因為我用的是代碼生成的,用的是如下方法替代

XCUIElement *textField = [app.textFields elementBoundByIndex:0];

五.具體使用例子
1.數(shù)據(jù)庫(查增刪)UI測試用例
源代碼下載:https://pan.baidu.com/s/1c1EtCcg
2.簡單效果圖

Paste_Image.png

3.注意UI用例測試如果不是很獨立,相互之間有聯(lián)系,出現(xiàn)紅x不一定代表代碼邏輯有問題,有時候可能是很多用例有先后順序,需要具體評估(造點數(shù)據(jù),在重新運行下用例就可以)

如果您發(fā)現(xiàn)本文對你有所幫助,如果您認為其他人也可能受益,請把它分享出去。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 大多數(shù)的iOS App (沒有持續(xù)集成)迭代流程是這樣的: 也就是說,測試是發(fā)布之前的最后一道關(guān)卡。如果bug不能...
    伯牙呀閱讀 4,983評論 1 22
  • 啟示 iOS的自動化測試相對安卓的成熟度底很多.而自動化測試的目的是減輕人工測試的壓力.剛剛看一文章提到“沒有兩...
    Y_Swordsman閱讀 11,188評論 10 11
  • 0.小目標 關(guān)于UI自動化的定義,我想要的是自動地按照流程去點擊頁面、輸入數(shù)據(jù),不需要人去參與,節(jié)省人工時間。比如...
    孢子菌閱讀 15,816評論 10 47
  • 二寶這幾天又拉肚子了,忙的焦頭爛額!每次孩子生病都是對媽媽的考驗,無論是體力上還是精神上,都是一種挑戰(zhàn)! 這次腹瀉...
    良仁的向日葵閱讀 362評論 2 1
  • 我的惡毒 都寫在書里 藏在夢里 醒來 我還是我
    滿島遙閱讀 275評論 0 1

友情鏈接更多精彩內(nèi)容