基于Xcode的iOS原生UI測試框架 UITests使用 簡單case

前言

隨著APP功能的不斷增加,僅僅靠黑盒測試人工來覆蓋測試無疑有很大的局限性,效果也不如人意,尤其是新功能增加后可能要對舊功能做回歸測試,產(chǎn)生了大量的重復(fù)工作,而這些重復(fù)工作有一些是可以通過自動(dòng)化測試進(jìn)行完成的,UITests的出現(xiàn)就是為了解決這個(gè)問題.

UItests介紹

UITests是什么?

UItests是由蘋果公司開發(fā)的一個(gè)自動(dòng)測試UI交互的自動(dòng)化測試框架

UItests能做什么?

UItests可以幫助我們解決一些測試上的重復(fù)工作,節(jié)省人工成本,提高測試效率等.

UITests使用

新創(chuàng)建的項(xiàng)目可以通過勾選include UI Tests來添加

現(xiàn)有項(xiàng)目可以通過以下步驟來添加.



成功添加UITests組件后,在項(xiàng)目文件導(dǎo)航里可以看到對應(yīng)目錄.


UITestDemoUITests.m就是用來編寫測試案例的文件.

注:測試方法都是以test開頭的

測試代碼可以通過錄制和直接編寫兩種方法來生成,建議先通過自動(dòng)生成 然后修改自動(dòng)生成的代碼.

聲明一個(gè)新的測試方法 點(diǎn)擊小圓點(diǎn) 自動(dòng)打開模擬器運(yùn)行項(xiàng)目 對項(xiàng)目的操作會(huì)被用代碼的形式記錄下來



自動(dòng)記錄的代碼也十分好理解,點(diǎn)擊了login按鈕 再點(diǎn)擊了id為Detail的導(dǎo)航欄上的Mune按鈕
點(diǎn)擊左上角的棱形標(biāo)志則代表執(zhí)行這個(gè)測試方法,自動(dòng)打開模擬器執(zhí)行.
測試方法執(zhí)行成功標(biāo)志內(nèi)出現(xiàn)一個(gè)綠勾,失敗則是紅叉.
測試進(jìn)行中會(huì)在控制臺(tái)打印參數(shù),包括當(dāng)前操作 耗時(shí)等,測試完成則會(huì)打印測試log保存地址.

簡單測試案例

- (void)testLogi{
    XCUIElement *account = [[XCUIApplication alloc] init].textFields[@"account"];
    XCUIElement *pwd = [[XCUIApplication alloc] init].textFields[@"password"];
    XCUIApplication *app = [[XCUIApplication alloc] init];
    //判斷賬號密碼是否都是偶數(shù) 是則跳轉(zhuǎn) 不是則直接下一次測試
    //跳轉(zhuǎn)后等待3s 返回登錄界面

    int success = 0;
    int failed = 0;
    
    for (int i = 0; i<10; i++) {
        int acc = arc4random() % 1000;
        int pw = arc4random() % 1000;
        [account tap];
        [account typeText:[NSString stringWithFormat:@"%d",acc]];
        [pwd tap];
        [pwd typeText:[NSString stringWithFormat:@"%d",pw]];
        
        //點(diǎn)擊登錄
        [app.buttons[@"login"] tap];
        //模擬正常登錄網(wǎng)絡(luò)訪問等待3s
        [app.windows.navigationBars.element pressForDuration:3];
        //判斷是否跳轉(zhuǎn)到登錄之后的界面 如果是 則登錄成功
        if ([app.navigationBars.element.identifier isEqualToString:@"Detail"]) {
            [app.navigationBars[@"Detail"].buttons[@"Mune"] tap];
            NSLog(@"登錄成功");
            success += 1;
        }else{
            NSLog(@"登錄失敗");
            failed += 1;
        }
    }
    NSLog(@"10次測試,成功登錄%d次,失敗%d次",success,failed);
}

測試結(jié)果:


斷言

注:斷言結(jié)果會(huì)記錄在測試的log文件中,斷言失敗則該測試方法不通過.

 //斷言,最基本的測試,如果expression為true則通過,否則打印后面格式化字符串
  XCTAssert(expression, format...)

  //Bool測試:  
  XCTAssertTrue(expression, format...)
  XCTAssertFalse(expression, format...)

  //相等測試
  XCTAssertEqual(expression1, expression2, format...)
  XCTAssertNotEqual(expression1, expression2, format...)

  //double float 對比數(shù)據(jù)測試使用
  XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, format...)
  XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, format...)

  //Nil測試,XCTAssert[Not]Nil斷言判斷給定的表達(dá)式值是否為nil
  XCTAssertNil(expression, format...)
  XCTAssertNotNil(expression, format...)

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

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

  • 轉(zhuǎn):http://www.itdecent.cn/p/d5fca0185e83 Xcode測試 前言 總算在今天把...
    測試小螞蟻閱讀 3,385評論 0 20
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,058評論 25 709
  • Xcode測試 前言 總算在今天把單元測試的官方文檔翻譯寫成了一片博客。首先感謝黨,感謝人民,感謝我的父母。也必須...
    許漠顏閱讀 3,598評論 10 34
  • 六月的天空 一片純凈和蔚藍(lán) 總有潔白的云朵輕盈地流連 流動(dòng)的風(fēng)兒充滿了清香 醉了呼吸穿過我的發(fā)間 嬌艷的花朵開滿了...
    伊清歡閱讀 368評論 1 5

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