iOS测试系列(一):测试概述

Posted by GeorgeWang on July 27, 2017

前言

测试是产品开发中很重要的一个环节,但也是平时容易被忽视和疏漏的;虽然在完成开发之后,测试组可能还会对产品做无数次测试,但我们开发人员来开发过程中做好单元测试,能提早发现代码中存在的问题,会让代码更加健壮,减少漏洞风险。

iOS开发(或者MacOS、tvOS、watchOS等)中,单元测试有多种方式,主要分为Xcode提供的以及第三方测试框架这两类:

  • Xcode自带
    • XCTest:XCTest是Xcode自带的单元测试工具,其前身是OCUnit,随着Xcode的发展,XCTest已经越来越完善,功能也越强大
  • 第三方框架
    • GHUnit:GHUnit是GitHub上著名的开源测试框架,可视化、开源、扩展等功能,让其相比XCTest更加强大(现在的XCTest也很完善了,不过GHUnit比较老,现在已经停止维护,不建议使用)
    • OCMock:OCMock也是Github上的著名开源测试框架,用于Mock、Stub,为测试提供数据作假功能

以上三种就是比较主流的测试Xcode单元测试途径,还有一些BDD行为测试框架:

  • Specta:GitHub上轻量级的BDD DSL测试框架
  • Expecta:与Specta同个作者,是一个功能强大的匹配框架
  • Kiwi:Kiwi是重量级的,集OCMock、Specta、Expecta所拥有的功能与一身的BDD DSL测试框架

其他的,还有一些其他测试工具、测试方式,如:

  • Nocilla:强大的HTTP模拟测试工具
  • OHHTTPStubs:也是HTTP模拟测试工具
  • TUDelorean:基于Objective-C的时间模拟测试工具
  • KIF:集成/界面测试工具,其它的还有Frank、Calabash等
  • GitHub + Jenkins + TestFlight:自动化测试
  • Monkey Test:随机测试

这就是iOS开发(或者MacOS、tvOS、watchOS等)中常见的测试方式。 当然,好的测试的前提是,代码要有好的架构,这就关系到我们平时使用的设计模式了,如使用MVC、MVVP、VIPER、Flux等设计模式,以及ReactiveCocoa、RxSwift等函数式编程框架,都有助于测试的进行。所以平时编码过程,对代码的架构设计多加注意,不仅能减少代码量、更方便测试,让后期维护更方便。至于如何更好的设计代码,那就是另外一回事了,不属于本专题的内容。

在这个系列中,我将分开介绍以上几种测试的使用方法,抛砖引玉,有不当之处,望读者多多指教。当然最精华,高下立判的还是下面的参考资料,特别是官方文档和objc.io的专题。

文章链接

参考资料

网络上Xcode测试相关的资料很多,但一般参考以下这些内容就能较全面地学习测试的相关技术了:


分享到: