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自动化测试以前旧功能或者小的改动

版本代码完成后根据测试人员编写的测试用例进行充分自测

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,058评论 19 139
  • 关于iOS的UI自动化测试,是从Xcode7之后才支持的比较好,使用XCTest.framework,Xcode可...
    房小房MT阅读 10,756评论 4 13
  • 单元测试不是一个小工程,需要多用些时间才能做好,不要希望通过这个文章就能掌握单元测试,这只是一个入门,需要自己动手...
    勇不言弃92阅读 12,419评论 9 60
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    Mr希灵阅读 22,274评论 7 278
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    宇文臭臭阅读 11,703评论 5 101

友情链接更多精彩内容