版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
iOS接口測(cè)試分享中國(guó)移動(dòng)杭州研發(fā)中心2016年2月*
目錄什么是iOS接口測(cè)試為什么要做iOS接口測(cè)試12iOS接口測(cè)試介紹3XCTest測(cè)試框架簡(jiǎn)介4測(cè)試舉例5什么是iOS接口測(cè)試?SDK的英文全名是SoftwareDevelopmentKit(軟件開(kāi)發(fā)工具包),一般是一些由第三方服務(wù)商提供,用于實(shí)現(xiàn)應(yīng)用軟件產(chǎn)品某項(xiàng)功能的工具包,通常以集合API、文檔、工具的形式出現(xiàn)。iOSSDK是一堆iOS接口的集合,接口也就是函數(shù),包括系統(tǒng)之間的調(diào)用、服務(wù)之間的調(diào)用等。接口測(cè)試就是測(cè)試系統(tǒng)組件間接口的一種測(cè)試。接口測(cè)試主要用于檢測(cè)外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)。測(cè)試的重點(diǎn)是要檢查數(shù)據(jù)的交換,傳遞和控制管理過(guò)程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等。iOS接口測(cè)試是對(duì)暴露到外部的接口進(jìn)行的測(cè)試,一個(gè)接口方法會(huì)有自己特定的業(yè)務(wù)定義,所以做接口測(cè)試時(shí)更多需要從業(yè)務(wù)的角度去考慮如何測(cè)試這個(gè)接口,同時(shí)還需要根據(jù)接口本身的定義對(duì)參數(shù)限制進(jìn)行測(cè)試。為什么要做iOS接口測(cè)試?功能接口是外部用戶使用的直接對(duì)象,作為SDK提供商,我們一定要保證提供給外部用戶使用的接口方法具有穩(wěn)定的功能和健壯的容錯(cuò)性。效率首先,節(jié)省測(cè)試成本。根據(jù)數(shù)據(jù)模型推算,底層的一個(gè)bug能夠引發(fā)上層的8個(gè)左右bug,而且底層的bug很容易引起業(yè)務(wù)層更多的問(wèn)題。相反接口測(cè)試能夠提供系統(tǒng)復(fù)雜度上升情況下的低成本高效率的解決方案。其次,接口測(cè)試不同于傳統(tǒng)開(kāi)發(fā)的單元測(cè)試,接口測(cè)試是站在用戶的角度對(duì)系統(tǒng)接口進(jìn)行全面高效持續(xù)的檢測(cè)。最后,接口測(cè)試是自動(dòng)化并且可以持續(xù)集成的,這也是為什么接口測(cè)試能夠低成本高收益的根源??傊涌跍y(cè)試是保證高復(fù)雜性系統(tǒng)質(zhì)量的內(nèi)在要求和低成本的經(jīng)濟(jì)利益的驅(qū)動(dòng)作用下的最佳解決方案。iOS接口測(cè)試介紹通過(guò)Xcode創(chuàng)建一個(gè)工程,導(dǎo)入被測(cè)SDK,編寫測(cè)試腳本,然后執(zhí)行測(cè)試。每一個(gè)測(cè)試用例,其本質(zhì)是一個(gè)函數(shù),該函數(shù)中包含調(diào)用被測(cè)方法的過(guò)程。某一被測(cè)方法會(huì)有多個(gè)測(cè)試用例,一般情況將同一被測(cè)方法的測(cè)試用例放在同一個(gè)測(cè)試類中,將同一類中的被測(cè)方法的測(cè)試腳本放在同一組中。12iOS接口測(cè)試介紹34XCTest作為測(cè)試框架是因?yàn)樗浅:?jiǎn)單并且與Xcode的IDE直接集成。XCTest如何工作蘋果提供了一些關(guān)于如何使用XCTest的官方文檔。測(cè)試用例被分到繼承XCTestCase的不同子類中去。因?yàn)闇y(cè)試用例都是簡(jiǎn)單的類和方法,所以我們可以適當(dāng)?shù)靥砑右恍〡property和輔助方法??紤]到代碼的重用性,我們的所有測(cè)試用例類都有一個(gè)共同的父類,也就是TestCase,它也是XCTestCase的子類,所有的測(cè)試類都是我們的TestCase類的子類。命名要求因?yàn)闇y(cè)試用例僅僅只是一個(gè)以test為開(kāi)頭的方法,所以典型的測(cè)試用例方法看起來(lái)就像這樣:-(void)testRegisterFunc{
//testcode}XCTest測(cè)試框架簡(jiǎn)介Xcode6之后,新建的工程默認(rèn)包含一個(gè)“工程名+Tests”的文件夾,文件夾下有一個(gè)工程名+Tests.m的文件(和其他的類文件不一樣的是沒(méi)有.h頭文件),該文件中默認(rèn)包含有setUp和tearDown的方法。-
(void)setUp
{
[super
setUp];
//
Put
setup
code
here.
This
method
is
called
before
the
invocation
of
each
test
method
in
the
class.
}
-
(void)tearDown
{
//
Put
teardown
code
here.
This
method
is
called
after
the
invocation
of
each
test
method
in
the
class.
[super
tearDown];
}setUp&tearDownsetUp方法在XCTestCase的測(cè)試方法調(diào)用之前調(diào)用。當(dāng)測(cè)試全部結(jié)束之后調(diào)用tearDown方法。setUp方法可以在測(cè)試之前創(chuàng)建在testcase方法中需要用到的一些對(duì)象等。tearDown方法則在全部的testcase執(zhí)行結(jié)束之后清理測(cè)試現(xiàn)場(chǎng),釋放資源刪除不用的對(duì)象等。XCTest測(cè)試框架簡(jiǎn)介功能測(cè)試testcase中的每一個(gè)方法都是test開(kāi)頭,這樣容易辨識(shí)。方法中會(huì)執(zhí)行斷言(Assertion),來(lái)判斷這個(gè)測(cè)試是否通過(guò)。被測(cè)方法如果采用Block回調(diào)或者代理模式,它們的測(cè)試方式略有不同。Block回調(diào)測(cè)試方式XCTest測(cè)試框架簡(jiǎn)介代理模式測(cè)試方式:
XCTest測(cè)試框架簡(jiǎn)介XCTest測(cè)試框架簡(jiǎn)介常用的XCTest斷言XCTest會(huì)用到很多的斷言,但是只有一部分是常用到的。1)基本測(cè)試XCTAssert(expression,format...)如果expression(表達(dá)式)執(zhí)行的結(jié)果為true的話,這個(gè)測(cè)試通過(guò)。否則測(cè)試失敗,并在console中輸出后面的format字符串。2)Bool測(cè)試對(duì)于bool型的數(shù)據(jù),或者只是簡(jiǎn)單的bool型的表達(dá)式,使用XCTestAssertTrue或者XCTestAssertFalse:XCTAssertTrue(expression,format...)XCTAssertFalse(expression,format...)3)相等測(cè)試測(cè)試兩個(gè)值是否相等使用XCTAssert[Not]Equal:XCTAssertEqual(expression1,expression2,format...)XCTAssertNotEqual(expression1,expression2,format...)XCTest測(cè)試框架簡(jiǎn)介XCTAssertGreaterThan[OrEqual]
&
XCTAssertLessThan[OrEqual],和下面的條件操作符比較的是一個(gè)意思
==
with
>,
>=,<,以及
<=
在Double、Float型數(shù)據(jù)的對(duì)比中使用XCTAssert[Not]EqualWithAccuracy來(lái)處理浮點(diǎn)精度的問(wèn)題:XCTAssertEqualWithAccuracy(expression1,expression2,accuracy,format...)XCTAssertNotEqualWithAccuracy(expression1,expression2,accuracy,format...)4)Nil測(cè)試使用XCTAssert[Not]Nil斷言判斷給定的表達(dá)式值是否為nil:XCTAssertNil(expression,format...)XCTAssertNotNil(expression,format...)5)無(wú)條件失敗斷言XCTFail提供的是無(wú)條件斷言:XCTFail(format...)無(wú)條件都是測(cè)試失敗。這個(gè)斷言有什么用處呢?在測(cè)試驅(qū)動(dòng)里有這么個(gè)情況,你定義了測(cè)試方法,但是沒(méi)有給出具體的實(shí)現(xiàn)。那么你不會(huì)希望這個(gè)測(cè)試能通過(guò)的。是的,XCTFail就是這么個(gè)用途。一般被用作一個(gè)占位斷言,等你的測(cè)試方法完善好了之后再換成最貼近你的測(cè)試的斷言。XCTest測(cè)試框架簡(jiǎn)介XCTestExpectation異步測(cè)試Xcode單元測(cè)試中加入的最令人興奮的功能也許就是類XCTestExpression類帶入的異步測(cè)試了。現(xiàn)在測(cè)試可以等待指定長(zhǎng)度的時(shí)間,一直到某些條件符合的時(shí)候在開(kāi)始測(cè)試。要使用異步測(cè)試,首先,用方法expectationWithDescription創(chuàng)建一個(gè)expection。XCTestExpectation*expect=[selfexpectationWithDescription:@"HandlerCalled"];然后,在方法的最后添加方法waitForExpectationsWithTimeout,指定等待超時(shí)的時(shí)間和指定時(shí)間內(nèi)條件無(wú)法滿足時(shí)執(zhí)行的closure。[selfwaitForExpectationsWithTimeout:50handler:nil];剩下的就是在異步測(cè)試剩下的回調(diào)函數(shù)中告訴expectation條件已經(jīng)滿足。[expectfulfill];如果在測(cè)試中有多個(gè)expectation,則每個(gè)expectation都必須fulfill,否則測(cè)試不通過(guò)。XCTest測(cè)試框架簡(jiǎn)介接口舉例:注冊(cè)(void)registerWithNoPhoneUserName:(NSString*)userName
userPassword:(NSString*)userPassword
affirmPassword:(NSString*)affirmPassword
nikeName:(NSString*)nikeName
registerSuccessful:(registersucessful)registerSuccessFul
registerfail:(registerFail)registerfail;測(cè)試舉例(void)testRegisterWithUserHasExist{
//Thisisanexampleofafunctionaltestcase.
NSString*usrName=@"661350";
NSString*usrPwd=@"123456";
NSString*affPwd=@"123456";
NSString*myNickName=@"1350Test";
XCTestExpectation*expect=[self
expectationWithDescription:@"HandlerCalled"];
[[XMPPManager
defaultManager]registerWithNoPhoneUserName:usrNameuserPassword:usrPwdaffirmPassword:affPwdnikeName:myNickNameregisterSuccessful:^{[expectfulfill];
NSLog(@"cjl======注冊(cè)成功!=======");
XCTFail(@"........");}registerfail:^(NSString*error){[expectfulfill];
NSLog(@"cjl======注冊(cè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年安徽新聞出版職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)筆試模擬試題含詳細(xì)答案解析
- 2026內(nèi)蒙古通遼市科爾沁區(qū)招聘政府專職消防隊(duì)員、專職消防車駕駛員30人參考考試試題及答案解析
- 2026年湖北水利水電職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026年綿陽(yáng)職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)筆試參考題庫(kù)含詳細(xì)答案解析
- 2026青海海南州共和縣黑馬河鎮(zhèn)民族寄宿制小學(xué)食堂面向社會(huì)選聘政府臨聘崗位1人參考考試題庫(kù)及答案解析
- 2026年內(nèi)蒙古電子信息職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試備考題庫(kù)含詳細(xì)答案解析
- 2026年全省事業(yè)單位人員招聘工作考試重點(diǎn)題庫(kù)及答案解析
- 2026年安徽電氣工程職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試模擬試題含詳細(xì)答案解析
- 2026年河南經(jīng)貿(mào)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試備考試題及答案詳細(xì)解析
- 2026年南昌工學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試備考題庫(kù)及答案詳細(xì)解析
- 易科美激光技術(shù)家用美容儀領(lǐng)域細(xì)胞級(jí)應(yīng)用白皮書
- 人工智能訓(xùn)練師 【四級(jí)單選】職業(yè)技能考評(píng)理論題庫(kù) 含答案
- 《四川省歷史建筑修繕技術(shù)標(biāo)準(zhǔn)》
- 初中語(yǔ)文詞性題目及答案
- 醫(yī)院電梯設(shè)備安全培訓(xùn)課件
- 排水系統(tǒng)運(yùn)維人員培訓(xùn)方案
- 2023-2024學(xué)年五年級(jí)數(shù)學(xué)上冊(cè)-第三單元《小數(shù)除法列豎式計(jì)算》典型例題練習(xí)(含答案)
- (2025年標(biāo)準(zhǔn))sm調(diào)教協(xié)議書
- 蘇教版(2025)八年級(jí)上冊(cè)生物期末復(fù)習(xí)全冊(cè)知識(shí)點(diǎn)提綱(搶先版)
- 2025年應(yīng)急局在線考試題庫(kù)
- 交換氣球數(shù)學(xué)題目及答案
評(píng)論
0/150
提交評(píng)論