iOS单元测试和UI自动化测试
第一部分:单元测试
1、单元测试简介
在计算机编程中,单元测试(又称为模块测试, Unit Testing)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、派生类(子类)中的方法
通常来说,程序员每修改一次程序就会进行最少一次单元测试,在编写程序的过程中前后很可能要进行多次单元测试,以证实程序达到软件规格书(en:Specification)要求的工作目标,没有程序错误.
一个重要的概念:TDD(Test-Driven Development),即测试驱动开发,该模式要求开发者在编写某个功能的代码之前先将其测试代码写好,然后编写实现代码并进行测试,从而保证实现的代码不会出现问题。因此整个项目的开发进度将由测试来驱动,这有助于开发出高质量而又正确的代码,实现敏捷开发
2、单元测试工具
OCUnit(Xcode自带的单元测试)
1、简介:Xcode自带的单元测试工具
2、测试方法:
1)特点: 以test开头,没有返回值,没有参数
2)执行顺序:字典序排序(数字>小写字母>大写字母)
3)系统方法:
1)setUp:所有测试方法执行之前都会执行这个方法
2)tearDown:所有测试方法执行之后都会执行这个方法
3)testExample:一个测试用例,里面可以写测试代码
4)testPerformanceExample:性能测试,测试一段代码执行时常
3、断言宏:
框架中包含了18个断言宏,用来判断测试成功或失败
4、测试用例Demo地址:https://github.com/guodongyangwen/iOS-UnitTest.git
OCMock(提供模拟条件)
1、介绍:
测试过程中,对于一些不容易构造或不容易获取的对象,此时你可以创建一个虚拟的对象(mockobject)来完成测试其实现思想就是根据要mock的对象的class来创建一个对应的对象,并且设置好该对象的属性和调用预定方法后的动作(例如返回一个值,调用代码块,发送消息等等),然后将其记录到一个数组中,接下来开发者主动调用该方法,最后做一个verify(验证),从而判断该方法是否被调用,或者调用过程中是否抛出异常等,宗旨就是没有条件,自行创造条件。
2、应用场景:
1)可能要尝试100此才能返回一个NSError,通过mockObject可以自行创建一个NSError对象来测试出错时是否符合预期
2)服务器是内网,在外地或者外网访问不了,可以创建一个虚拟服务器,并返回一些你指定的数据,从而绕过服务器
3)访问一个数据库,但是访问开销很大,这时可以虚拟一个数据库,并且返回一个自行定制的数据
3、添加到工程中
4、测试用例Demo地址:https://github.com/guodongyangwen/iOS-UnitTest.git
GHUnit(带有GUI的开源测试框架)
1、简介:带有GUI的单元测试框架
2、断言宏:开头都以GHAssert开头
3、可视化:
可以通过可视化的界面看到那些测试用例成功还是失败,点击失
败的测试用例还可以看到终端输出的日志,查看错误的原因
4、配置
5、Demo地址:https://github.com/guodongyangwen/iOS-UnitTest.git
UI自动化测试:
1、Automation:用于做UI自动化测试
2、通过JS语言实现,可以自己编辑一个JS文件然后加载进来并执行对应的操作。
3、同事也支持自动录制,录制的同时会自动生成JS脚本,这个脚本也可以保存成JS脚本文件。
4、Demo地址:https://github.com/guodongyangwen/iOS-UnitTest.git
总结
单元测试非常适合用来做APP的逻辑以及网络接口的测试
通过UI自动化测试以前旧功能或者小的改动
版本代码完成后根据测试人员编写的测试用例进行充分自测