iOS接口測試分享_第1頁
iOS接口測試分享_第2頁
iOS接口測試分享_第3頁
iOS接口測試分享_第4頁
iOS接口測試分享_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

iOS接口測試分享中國移動杭州研發(fā)中心2016年2月*

目錄什么是iOS接口測試為什么要做iOS接口測試12iOS接口測試介紹3XCTest測試框架簡介4測試舉例5什么是iOS接口測試?SDK的英文全名是SoftwareDevelopmentKit(軟件開發(fā)工具包),一般是一些由第三方服務(wù)商提供,用于實現(xiàn)應(yīng)用軟件產(chǎn)品某項功能的工具包,通常以集合API、文檔、工具的形式出現(xiàn)。iOSSDK是一堆iOS接口的集合,接口也就是函數(shù),包括系統(tǒng)之間的調(diào)用、服務(wù)之間的調(diào)用等。接口測試就是測試系統(tǒng)組件間接口的一種測試。接口測試主要用于檢測外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個子系統(tǒng)之間的交互點。測試的重點是要檢查數(shù)據(jù)的交換,傳遞和控制管理過程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等。iOS接口測試是對暴露到外部的接口進行的測試,一個接口方法會有自己特定的業(yè)務(wù)定義,所以做接口測試時更多需要從業(yè)務(wù)的角度去考慮如何測試這個接口,同時還需要根據(jù)接口本身的定義對參數(shù)限制進行測試。為什么要做iOS接口測試?功能接口是外部用戶使用的直接對象,作為SDK提供商,我們一定要保證提供給外部用戶使用的接口方法具有穩(wěn)定的功能和健壯的容錯性。效率首先,節(jié)省測試成本。根據(jù)數(shù)據(jù)模型推算,底層的一個bug能夠引發(fā)上層的8個左右bug,而且底層的bug很容易引起業(yè)務(wù)層更多的問題。相反接口測試能夠提供系統(tǒng)復雜度上升情況下的低成本高效率的解決方案。其次,接口測試不同于傳統(tǒng)開發(fā)的單元測試,接口測試是站在用戶的角度對系統(tǒng)接口進行全面高效持續(xù)的檢測。最后,接口測試是自動化并且可以持續(xù)集成的,這也是為什么接口測試能夠低成本高收益的根源。總之,接口測試是保證高復雜性系統(tǒng)質(zhì)量的內(nèi)在要求和低成本的經(jīng)濟利益的驅(qū)動作用下的最佳解決方案。iOS接口測試介紹通過Xcode創(chuàng)建一個工程,導入被測SDK,編寫測試腳本,然后執(zhí)行測試。每一個測試用例,其本質(zhì)是一個函數(shù),該函數(shù)中包含調(diào)用被測方法的過程。某一被測方法會有多個測試用例,一般情況將同一被測方法的測試用例放在同一個測試類中,將同一類中的被測方法的測試腳本放在同一組中。12iOS接口測試介紹34XCTest作為測試框架是因為它非常簡單并且與Xcode的IDE直接集成。XCTest如何工作蘋果提供了一些關(guān)于如何使用XCTest的官方文檔。測試用例被分到繼承XCTestCase的不同子類中去。因為測試用例都是簡單的類和方法,所以我們可以適當?shù)靥砑右恍〡property和輔助方法??紤]到代碼的重用性,我們的所有測試用例類都有一個共同的父類,也就是TestCase,它也是XCTestCase的子類,所有的測試類都是我們的TestCase類的子類。命名要求因為測試用例僅僅只是一個以test為開頭的方法,所以典型的測試用例方法看起來就像這樣:-(void)testRegisterFunc{

//testcode}XCTest測試框架簡介Xcode6之后,新建的工程默認包含一個“工程名+Tests”的文件夾,文件夾下有一個工程名+Tests.m的文件(和其他的類文件不一樣的是沒有.h頭文件),該文件中默認包含有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的測試方法調(diào)用之前調(diào)用。當測試全部結(jié)束之后調(diào)用tearDown方法。setUp方法可以在測試之前創(chuàng)建在testcase方法中需要用到的一些對象等。tearDown方法則在全部的testcase執(zhí)行結(jié)束之后清理測試現(xiàn)場,釋放資源刪除不用的對象等。XCTest測試框架簡介功能測試testcase中的每一個方法都是test開頭,這樣容易辨識。方法中會執(zhí)行斷言(Assertion),來判斷這個測試是否通過。被測方法如果采用Block回調(diào)或者代理模式,它們的測試方式略有不同。Block回調(diào)測試方式XCTest測試框架簡介代理模式測試方式:

XCTest測試框架簡介XCTest測試框架簡介常用的XCTest斷言XCTest會用到很多的斷言,但是只有一部分是常用到的。1)基本測試XCTAssert(expression,format...)如果expression(表達式)執(zhí)行的結(jié)果為true的話,這個測試通過。否則測試失敗,并在console中輸出后面的format字符串。2)Bool測試對于bool型的數(shù)據(jù),或者只是簡單的bool型的表達式,使用XCTestAssertTrue或者XCTestAssertFalse:XCTAssertTrue(expression,format...)XCTAssertFalse(expression,format...)3)相等測試測試兩個值是否相等使用XCTAssert[Not]Equal:XCTAssertEqual(expression1,expression2,format...)XCTAssertNotEqual(expression1,expression2,format...)XCTest測試框架簡介XCTAssertGreaterThan[OrEqual]

&

XCTAssertLessThan[OrEqual],和下面的條件操作符比較的是一個意思

==

with

>,

>=,<,以及

<=

在Double、Float型數(shù)據(jù)的對比中使用XCTAssert[Not]EqualWithAccuracy來處理浮點精度的問題:XCTAssertEqualWithAccuracy(expression1,expression2,accuracy,format...)XCTAssertNotEqualWithAccuracy(expression1,expression2,accuracy,format...)4)Nil測試使用XCTAssert[Not]Nil斷言判斷給定的表達式值是否為nil:XCTAssertNil(expression,format...)XCTAssertNotNil(expression,format...)5)無條件失敗斷言XCTFail提供的是無條件斷言:XCTFail(format...)無條件都是測試失敗。這個斷言有什么用處呢?在測試驅(qū)動里有這么個情況,你定義了測試方法,但是沒有給出具體的實現(xiàn)。那么你不會希望這個測試能通過的。是的,XCTFail就是這么個用途。一般被用作一個占位斷言,等你的測試方法完善好了之后再換成最貼近你的測試的斷言。XCTest測試框架簡介XCTestExpectation異步測試Xcode單元測試中加入的最令人興奮的功能也許就是類XCTestExpression類帶入的異步測試了?,F(xiàn)在測試可以等待指定長度的時間,一直到某些條件符合的時候在開始測試。要使用異步測試,首先,用方法expectationWithDescription創(chuàng)建一個expection。XCTestExpectation*expect=[selfexpectationWithDescription:@"HandlerCalled"];然后,在方法的最后添加方法waitForExpectationsWithTimeout,指定等待超時的時間和指定時間內(nèi)條件無法滿足時執(zhí)行的closure。[selfwaitForExpectationsWithTimeout:50handler:nil];剩下的就是在異步測試剩下的回調(diào)函數(shù)中告訴expectation條件已經(jīng)滿足。[expectfulfill];如果在測試中有多個expectation,則每個expectation都必須fulfill,否則測試不通過。XCTest測試框架簡介接口舉例:注冊(void)registerWithNoPhoneUserName:(NSString*)userName

userPassword:(NSString*)userPassword

affirmPassword:(NSString*)affirmPassword

nikeName:(NSString*)nikeName

registerSuccessful:(registersucessful)registerSuccessFul

registerfail:(registerFail)registerfail;測試舉例(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======注冊成功!=======");

XCTFail(@"........");}registerfail:^(NSString*error){[expectfulfill];

NSLog(@"cjl======注冊

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論