iOS接口测试分享课件

上传人:妈**** 文档编号:243001486 上传时间:2024-09-13 格式:PPT 页数:18 大小:1.48MB
返回 下载 相关 举报
iOS接口测试分享课件_第1页
第1页 / 共18页
iOS接口测试分享课件_第2页
第2页 / 共18页
iOS接口测试分享课件_第3页
第3页 / 共18页
点击查看更多>>
资源描述
*,iOS,接口测试分享,中国移动杭州研发中心,2016,年,2,月,*,目录,什么是,iOS,接口测试,为什么要做,iOS,接口测试,1,2,iOS,接口测试介绍,3,XCTest,测试框架简介,4,测试举例,5,什么是,iOS,接口测试?,SDK,的英文全名是,Software Development Kit,(,软件开发工具包,),,一般是一些由第三方服务商提供,用于实现应用软件产品某项功能的工具包,通常以集合,API,、文档、工具的形式出现。,iOS SDK,是一堆,iOS,接口的集合,,接口,也就是函数,包括系统之间的调用、服务之间的调用等。,接口测试,就是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。,iOS,接口测试,是对暴露到外部的接口进行的测试,一个接口方法会有自己特定的业务定义,所以做接口测试时更多需要从业务的角度去考虑如何测试这个接口,同时还需要根据接口本身的定义对参数限制进行测试。,为什么要做,iOS,接口测试?,功能,接口,是外部用户使用的直接对象,作为,SDK,提供商,,我们,一定要保证,提供,给外部用户使用的,接口方法具有稳定的功能和健壮,的容错性。,效率,首先,,节省测试,成本。根据数据模型,推算,底层的一个,bug,能够引发上层的,8,个左右,bug,,而且底层的,bug,很容易,引起业务层更多的问题。,相反接口测试能够提供系统复杂度上升情况下的低成本高效率的解决方案。,其次,接口测试,不同于传统开发的单元测试,接口测试是站在用户的角度对系统接口进行全面高效持续的检测。,最后,接口测试,是自动化,并且可以持续,集成的,这也是为什么接口测试能够低成本高收益的根源,。,总之,接口测试是保证高复杂性系统质量的内在要求和低成本的经济利益的驱动作用下的最佳解决方案。,iOS,接口测试介绍,通过,Xcode,创建一个工程,导入被测,SDK,,编写测试脚本,然后执行测试。,每,一个测试用例,,其本质是,一个函数,该函数中包含调用被测方法的过程。,某一被测方法会有多个测试用例,一般情况将同一被测方法的测试用例放在同一个测试类中,将同一类中的被测方法的测试脚本放在同一组中。,1,2,iOS,接口测试介绍,3,4,XCTest,作为测试框架是因为它非常简单并且与,Xcode,的,IDE,直接集成。,XCTest,如何工作,苹果提供了一些关于如何使用,XCTest,的官方文档。测试用例被分到继承,XCTestCase,的不同子类中去。,因为测试用例都是简单的类和方法,所以我们可以适当地添加一些,property,和辅助方法。,考虑到代码的重用性,我们的所有测试用例类都有一个共同的父类,也就是,TestCase,,它也是,XCTestCase,的子类,所有的测试类都是我们的,TestCase,类的子类。,命名要求,因为测试用例仅仅只是一个以,test,为开头的方法,所以典型的测试用例方法看起来就像这样:,- (void)testRegisterFunc,/ test code,XCTest,测试框架简介,Xcode6,之后,新建的工程默认包含一个“工程名,+Tests,”的文件夹,文件夹下有一个工程名,+Tests.m,的文件(,和其他的类文件不一样的是没有,.h,头文件,),该文件中默认包含有,setUp,和,tearDown,的方法。,-(void)setUpsupersetUp;,/Putsetupcodehere.Thismethodiscalledbeforetheinvocationofeachtestmethodintheclass.,-(void)tearDown,/Putteardowncodehere.Thismethodiscalledaftertheinvocationofeachtestmethodintheclass.,supertearDown;,setUp & tearDown,setUp,方法在,XCTestCase,的测试方法调用之前调用。当测试全部结束之后调用,tearDown,方法。,setUp,方法可以在测试之前创建在,test case,方法中需要用到的一些对象等。,tearDown,方法则在全部的,test case,执行结束之后清理测试现场,释放资源删除不用的对象等。,XCTest,测试框架简介,功能测试,test case,中的每一个方法都是,test,开头,这样容易辨识。方法中会执行断言(,Assertion,),来判断这个测试是否通过。,被测方法如果采用,Block,回调或者代理模式,它们的测试方式略有不同。,Block,回,调测试方式,XCTest,测试框架简介,代理模式测试,方式,:,XCTest,测试框架简介,XCTest,测试框架简介,常用的,XCTest,断言,XCTest,会用到很多的断言,但是只有一部分是常用到的。,1,)基本测试,XCTAssert(expression, format.),如果,expression,(表达式)执行的结果为,true,的话,这个测试通过。否则测试失败,并在,console,中输出后面的,format,字符串。,2,),Bool,测试,对于,bool,型的数据,或者只是简单的,bool,型的表达式,使用,XCTestAssertTrue,或者,XCTestAssertFalse,:,XCTAssertTrue(expression, format.) XCTAssertFalse(expression, format.),3,)相等测试,测试两个值是否相等使用,XCTAssertNotEqual,:,XCTAssertEqual(expression1, expression2, format.) XCTAssertNotEqual(expression1, expression2, format.),XCTest,测试框架简介,XCTAssertGreaterThanOrEqual&XCTAssertLessThanOrEqual,和下面的条件操作符比较的是一个意思,=with,=,以及,=,在,Double,、,Float,型数据的对比中使用,XCTAssertNotEqualWithAccuracy,来处理浮点精度的问题:,XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, format.) XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, format.),4,),Nil,测试,使用,XCTAssertNotNil,断言判断给定的表达式值是否为,nil,:,XCTAssertNil(expression, format.) XCTAssertNotNil(expression, format.),5,)无条件失败断言,XCTFail,提供的是无条件断言:,XCTFail(format.),无条件都是测试失败。这个断言有什么用处呢?在测试驱动里有这么个情况,你定义了测试方法,但是没有给出具体的实现。那么你不会希望这个测试能通过的。是的,,XCTFail,就是这么个用途。一般被用作一个占位断言,等你的测试方法完善好了之后再换成最贴近你的测试的断言。,XCTest,测试框架简介,XCTestExpectation,异步测试,Xcode,单元测试中加入的最令人兴奋的功能也许就是类,XCTestExpression,类带入的异步测试了。现在测试可以等待指定长度的时间,一直到某些条件符合的时候在开始测试。要使用异步测试,,首先,用方法,expectationWithDescription,创建一个,expection,。,XCTestExpectation *expect = self expectationWithDescription:Handler Called;,然后,在方法的最后添加方法,waitForExpectationsWithTimeout,,指定等待超时的时间和指定时间内条件无法满足时执行的,closure,。,self waitForExpectationsWithTimeout:50 handler:nil;,剩下的就是在异步测试剩下的回调函数中告诉,expectation,条件已经满足。,expect fulfill;,如果在测试中有多个,expectation,,则每个,expectation,都必须,fulfill,,否则测试不通过。,XCTest,测试框架简介,接口举例:注册,(void)registerWithNoPhoneUserName:(NSString *)userNameuserPassword:(NSString *) userPasswordaffirmPassword:(NSString *) affirmPasswordnikeName:(NSString *) nikeNameregisterSuccessful:(registersucessful )registerSuccessFulregisterfail:(registerFail )registerfail;,测试举例,(,void,)testRegisterWithUserHasExist,/ This is an example of a functional test case.,NSString,* usrName =,661350,;,NSString,* usrPwd =,123456,;,NSString,* affPwd =,123456,;,NSString,* myNickName =,1350Test,;,XCTestExpectation,*expect = ,self,expectationWithDescription,:,Handler Called,;,XMPPManager,defaultManager,registerWithNoPhoneUserName,:usrName,userPassword,:usrPwd,affirmPassword,:affPwd,nikeName,:myNickName,registerSuccessful,:,expect,fulfill,;,NSLog,(,cjl =,注册成功,!=,);,XCTFail,(,.,);,registerfail,:(,NSString,*error) ,expect,fulfill,;,NSLog,(,cjl =,注册失败!失败原因:,%=,error);,if,(error,isEqualToString,:,该用户已存在,) ,XCTAssertTrue,(,YES,注册的用户已存在!,);,;,self,waitForExpectationsWithTimeout,:,30,handler,:,nil,;,测试举例,演示,测试举例,谢谢!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!