iOS自動化三

本文章轉載于搜狗測試

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

KIF是一個開源的專為iOS設計的移動應用測試框架,使用Objective-C語言開發,能和應用的代碼工程完美結合。

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

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

優點:

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

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

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

(4) 單用例調試,編碼調試輕松愉快 (因為集成自XCTest,所以在xcode中調試,能輕松實現單個用例調試)

當然 KIF的有點很明確,缺點也是相當明確。

缺點:

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

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

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

(4) 測試框架和被測試app在同一進程,測試框架的問題可能會影響被測試app (這個缺點有可能被開發質疑,有的時候出現問題,開發會認為是你的測試代碼有問題,所以做好心理準備,和要對自己的代碼有自信)

適用場景:

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

測試代碼:

配置

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

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

(3) 對于這個target,把KIF里的靜態庫libKIF.a和系統的IOKit.framework和它關聯

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

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

執行操作

首先說明一下,KIF的UI控件操作和獲取都是封裝在一起的,每個接口里都包含了以什么屬性獲取控件,以及對這個控件執行什么操作兩個部分。所以就沒有獲取控件這個部分的說明了。也因為這個原因,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…)當expression求值為TRUE時通過;

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

XCTAssertFalse(expression, format…)當expression求值為False時通過;

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

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

XCTAssertEqual(a1, a2, format…)判斷相等(當a1和a2是 C語言標量、結構體或聯合體時使用,實際測試發現NSString也可以);

XCTAssertNotEqual(a1, a2, format…)判斷不等(當a1和a2是 C語言標量、結構體或聯合體時使用);

XCTAssertEqualWithAccuracy(a1, a2, accuracy, format…)判斷相等,(double或float類型)提供一個誤差范圍,當在誤差范圍(+/-accuracy)以內相等時通過測試;

XCTAssertNotEqualWithAccuracy(a1, a2, accuracy, format…) 判斷不等,(double或float類型)提供一個誤差范圍,當在誤差范圍以內不等時通過測試

XCTAssertThrows(expression,format…)異常測試,當expression發生異常時通過;反之不通過;(很變態

XCTAssertThrowsSpecific(expression, specificException, format…) 異常測試,當expression發生specificException異常時通過;反之發生其他異常或不發生異常均不通過;

XCTAssertThrowsSpecificNamed(expression, specificException, exception_name, format…)異常測試,當expression發生具體異常、具體異常名稱的異常時通過測試,反之不通過;

XCTAssertNoThrow(expression, format…)異常測試,當expression沒有發生異常時通過測試;

XCTAssertNoThrowSpecific(expression, specificException, format…)異常測試,當expression沒有發生具體異常、具體異常名稱的異常時通過測試,反之不通過;

XCTAssertNoThrowSpecificNamed(expression, specificException, exception_name, format…)異常測試,當expression沒有發生具體異常、具體異常名稱的異常時通過測試,反之不通過

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,431評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,637評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,555評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,900評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,629評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,976評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,976評論 3 448
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,139評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,686評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,411評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,641評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,129評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,820評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,233評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,567評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,362評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,604評論 2 380

推薦閱讀更多精彩內容