iOS自動化三

本文章轉(zhuǎn)載于搜狗測試

說完了UITest和Appium我們這次來介紹一下忍宋,被廣泛認可的一個三方的UI測試框架KIF汤求。

KIF是一個開源的專為iOS設(shè)計的移動應(yīng)用測試框架,使用Objective-C語言開發(fā),能和應(yīng)用的代碼工程完美結(jié)合。

它是使用私有API對UI界面進行操作的自動化測試框架贪磺,這種類型的測試框架已大行其道,非常受歡迎诅愚,KIF就是其中出色的一個寒锚,同時,KIF還繼承了XCTest违孝,很多大的軟件公司比如Google都在用這個測試框架刹前。可見雌桑,KIF的認可度還是蠻高的喇喉。

下面小編帶著大家來簡述一下KIF在使用過程中的優(yōu)缺點,進而大概的了解一下這個框架的工作方式和功能特點

優(yōu)點:

(1) 繼承XCTest校坑,UI測試可以和白盒測試相結(jié)合 (這點跟UITest比較像)

(2) 適合做持續(xù)集成 (持續(xù)集成一直被測試的發(fā)展之路拣技,所以一個能做可持續(xù)集成的框架衅鹿,生命力將會很頑強)

(3) 開源 (這是我最喜歡它的一個重要因素,對于一個開發(fā)者來說过咬,一個開源的項目是一個非常幸福的事情)

(4) 單用例調(diào)試大渤,編碼調(diào)試輕松愉快 (因為集成自XCTest,所以在xcode中調(diào)試掸绞,能輕松實現(xiàn)單個用例調(diào)試)

當(dāng)然 KIF的有點很明確泵三,缺點也是相當(dāng)明確。

缺點:

(1) 需要被測試工程源碼 (這對于外包公司的人來說衔掸,或者說對于一個代碼要求嚴(yán)格的公司來說烫幕,這無疑是一個沉重的打擊)

(2) 對自定義的控件支持不好 (這個應(yīng)該不用做太多解釋)

(3) 不支持UIWebView (其實這個缺點應(yīng)該影響不大,大多數(shù)框架對UIWebView的支持都不太好)

(4) 測試框架和被測試app在同一進程敞映,測試框架的問題可能會影響被測試app (這個缺點有可能被開發(fā)質(zhì)疑较曼,有的時候出現(xiàn)問題,開發(fā)會認為是你的測試代碼有問題振愿,所以做好心理準(zhǔn)備捷犹,和要對自己的代碼有自信)

適用場景:

(1) 較為復(fù)雜的UI測試或者是UI測試和白盒測試相結(jié)盒的測試

測試代碼:

配置

(1) 下載好KIF框架工程文件后,把KIF.xcodeproj文件拉進被測試工程里

(2) 新建一個測試target冕末,點“Add Target”萍歉,選擇iOS -> Test -> iOS Unit Testing Bundle。

(3) 對于這個target,把KIF里的靜態(tài)庫libKIF.a和系統(tǒng)的IOKit.framework和它關(guān)聯(lián)

(4) 對于這個target档桃,在Build Settings中的Other Linker Flags選項加一個值-ObjC

(5) 可以編寫測試用例了枪孩,有兩個重要的KIF測試類KIFTestCase(XCTestCase的子類)以及KIFUITestActor,看名字就知道哪個是做什么事的了藻肄。

執(zhí)行操作

首先說明一下蔑舞,KIF的UI控件操作和獲取都是封裝在一起的,每個接口里都包含了以什么屬性獲取控件嘹屯,以及對這個控件執(zhí)行什么操作兩個部分攻询。所以就沒有獲取控件這個部分的說明了。也因為這個原因抚垄,KIF的操作接口會非常的多蜕窿,這里列舉幾個常用的。

(1)點擊某個位置

tapScreenAtPoint:(CGPoint)screenPoint

(2) 點擊以label命名的控件

tapViewWithAccessibilityLabel:(NSString )label

(3) 長按以label命名的控件呆馁,時間長為duration

longPressViewWithAccessibilityLabel:(NSString)label duration:(NSTimeInterval)duration;

(4) 在一個控件里輸入一段字符

enterText:(NSString)text intoViewWithAccessibilityLabel:(NSString *)label

(5) 滑動某個控件

swipeViewWithAccessibilityLabel:(NSString)label inDirection:(KIFSwipeDirection)direction

驗證機制

(1) UI層面

if(tryFindingViewWithAccessibilityLabel:”label” error:error)

{ //test pass}

else { //test fail}

(2) 非UI層面

由于是繼承XCTest的桐经,所以XCTest所具有的那些斷言在KIF里都是可以通用的。共有18個浙滤。

XCTFail(format…) 生成一個失敗的測試阴挣;

XCTAssertNil(a1, format…)為空判斷,a1為空時通過纺腊,反之不通過畔咧;

XCTAssertNotNil(a1, format…)不為空判斷茎芭,a1不為空時通過,反之不通過誓沸;

XCTAssert(expression, format…)當(dāng)expression求值為TRUE時通過梅桩;

XCTAssertTrue(expression, format…)當(dāng)expression求值為TRUE時通過;

XCTAssertFalse(expression, format…)當(dāng)expression求值為False時通過拜隧;

XCTAssertEqualObjects(a1, a2, format…)判斷相等宿百,[a1 isEqual:a2]值為TRUE時通過,其中一個不為空時洪添,不通過垦页;

XCTAssertNotEqualObjects(a1, a2, format…)判斷不等,[a1 isEqual:a2]值為False時通過干奢;

XCTAssertEqual(a1, a2, format…)判斷相等(當(dāng)a1和a2是 C語言標(biāo)量痊焊、結(jié)構(gòu)體或聯(lián)合體時使用,實際測試發(fā)現(xiàn)NSString也可以);

XCTAssertNotEqual(a1, a2, format…)判斷不等(當(dāng)a1和a2是 C語言標(biāo)量忿峻、結(jié)構(gòu)體或聯(lián)合體時使用)薄啥;

XCTAssertEqualWithAccuracy(a1, a2, accuracy, format…)判斷相等,(double或float類型)提供一個誤差范圍炭菌,當(dāng)在誤差范圍(+/-accuracy)以內(nèi)相等時通過測試罪佳;

XCTAssertNotEqualWithAccuracy(a1, a2, accuracy, format…) 判斷不等逛漫,(double或float類型)提供一個誤差范圍黑低,當(dāng)在誤差范圍以內(nèi)不等時通過測試

XCTAssertThrows(expression,format…)異常測試,當(dāng)expression發(fā)生異常時通過酌毡;反之不通過克握;(很變態(tài)

XCTAssertThrowsSpecific(expression, specificException, format…) 異常測試,當(dāng)expression發(fā)生specificException異常時通過枷踏;反之發(fā)生其他異称邪担或不發(fā)生異常均不通過;

XCTAssertThrowsSpecificNamed(expression, specificException, exception_name, format…)異常測試旭蠕,當(dāng)expression發(fā)生具體異常停团、具體異常名稱的異常時通過測試,反之不通過掏熬;

XCTAssertNoThrow(expression, format…)異常測試佑稠,當(dāng)expression沒有發(fā)生異常時通過測試;

XCTAssertNoThrowSpecific(expression, specificException, format…)異常測試旗芬,當(dāng)expression沒有發(fā)生具體異常舌胶、具體異常名稱的異常時通過測試,反之不通過疮丛;

XCTAssertNoThrowSpecificNamed(expression, specificException, exception_name, format…)異常測試幔嫂,當(dāng)expression沒有發(fā)生具體異常辆它、具體異常名稱的異常時通過測試,反之不通過

KIF就介紹到這里履恩,不知道大家的感悟怎么樣锰茉,是不是有了一種別樣的體會呢?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末切心,一起剝皮案震驚了整個濱河市洞辣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌昙衅,老刑警劉巖扬霜,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異而涉,居然都是意外死亡著瓶,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門啼县,熙熙樓的掌柜王于貴愁眉苦臉地迎上來材原,“玉大人,你說我怎么就攤上這事季眷∮嘈罚” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵子刮,是天一觀的道長威酒。 經(jīng)常有香客問我,道長挺峡,這世上最難降的妖魔是什么葵孤? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮橱赠,結(jié)果婚禮上尤仍,老公的妹妹穿的比我還像新娘。我一直安慰自己狭姨,他們只是感情好宰啦,可當(dāng)我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著饼拍,像睡著了一般赡模。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惕耕,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天纺裁,我揣著相機與錄音,去河邊找鬼。 笑死欺缘,一個胖子當(dāng)著我的面吹牛栋豫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谚殊,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼丧鸯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了嫩絮?” 一聲冷哼從身側(cè)響起丛肢,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎剿干,沒想到半個月后蜂怎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡置尔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年杠步,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片榜轿。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡幽歼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谬盐,到底是詐尸還是另有隱情甸私,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布飞傀,位于F島的核電站皇型,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏助析。R本人自食惡果不足惜犀被,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望外冀。 院中可真熱鬧,春花似錦掀泳、人聲如沸雪隧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脑沿。三九已至,卻和暖如春马僻,著一層夾襖步出監(jiān)牢的瞬間庄拇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留措近,地道東北人溶弟。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像瞭郑,于是被迫代替她去往敵國和親辜御。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容