iOS测试指南

更多详情

内容简介: 《iOS 测试指南》是一本专注于 iOS 测试领域的书。其中重点讲述了各个测试阶段的具体实践方法,并且通过持续集成串联了各个测试阶段的活动。《iOS 测试指南》中所有的测试实践并非纸上谈兵,而是出自于笔者实际工作中的探索和实践。在测试实例上有一定的简化,是为了脱离复杂的业务。《iOS 测试指南》的重点在于对方法的介绍。
以下几个方面的读者可能会受益:有一定技术功底的测试工程师;有一定经验的移动测试工程师;iOS开发工程师;测试技术爱好者。

目录: 《iOS 测试指南》
第1章 软件测试与iOS测试
1.1 什么是软件测试
1.1.1 测试活动何时展开
1.1.2 软件测试与软件缺陷
1.1.3 软件测试与软件质量
1.2 软件测试的类型
1.2.1 单元测试
1.2.2 集成测试
1.2.3 系统测试
1.3 iOS平台的一些性
1.4 iOS测试需要做么
第2章 iOS环境准备
2.1 开发测试设备
2.2 安装和设置Xcode
2.3 iOS开发者书
2.4 知识的准备
第3章 iOS单元测试
3.1 单元测试工具
3.1.1 OCUnit
3.1.2 GHUnit
3.1.3 GTM
3.2 单元测试实践
3.2.1 实践项目介绍
3.2.2 Model的单元测试
3.2.3 Controller和View的单元测试
3.3 单元测试的扩展工具
3.3.1 OCHamcrest
3.3.2 OCMockito
第4章 iOS的UI自动化测试
4.1 UI Automation的运行
4.2 Instruments工具的简要介绍
4.3 UI Automation入门
4.3.1 UI Automation脚本开发之前
4.3.2 UI Automation脚本编辑
4.3.3 UI Automation实践
4.3.4 UI Automation脚本的录制
4.3.5 UI Automation在真实设备上的运行
4.4 深入了解UI Automation API
4.4.1 Logger日志输出
4.4.2 Element和ElementArray
4.4.3 手势动作的模拟
4.4.4 延时处理
4.4.5 Target对象的一些系统级别的操作
4.5 测试用例的组织
4.6 第三方测试工具介绍
4.6.1 TuneupJs的使用
4.6.2 ynm3k的使用
第5章 iOS Web应用程序的自动化测试
5.1 使用Selenium进行iOS Web自动化测试
5.1.1 WebDriver原理结构
5.1.2 iPhoneDriver实践
5.1.3 iPhoneDriver的缺陷
5.2 使用Appium进行iOS Web自动化测试
5.2.1 Appium初窥
5.2.2 Appium实践
5.3 Appium常用方法介绍
5.3.1 Appium控件定位方法
5.3.2 Appium控件操作方法
第6章 iOS的持续集成
6.1 持续集成工具
6.1.1 Jenkins和Hudson
6.1.2 Jenkins的安装和使用
6.1.3 Jenkins相关插件介绍
6.2 iOS持续集成实践
6.2.1 iOS Web自动化测试的持续集成
6.2.2 iOS UI自动化测试的持续集成
6.2.3 iOS单元测试的持续集成
第7章 iOS测试策略及测试方法
7.1 iOS测试策略
7.2 兼容性测试
7.3 网络流量测试
7.4 升级测试
7.5 性能测试
7.6 稳定性测试
第8章 iOS测试框架实践
8.1 iOS测试框架总览
8.2 UI Automation扩展工具实践
8.3 UI Automation驱动测试框架介绍
8.3.1 UI Automation驱动类测试框架介绍
8.3.2 Appium测试实践
8.4 非UI Automation测试框架实践
8.5 BDD测试框架介绍
8.5.1 Frank测试实践
8.5.2 再谈BDD
8.6 自动化测试框架剖析
第9章 Xcode 5测试的新特性
9.1 Xcode 5中的单元测试
9.1.1 XCTest测试框架
9.1.2 便捷的单元测试管理
9.1.3 XCTest Refactoring Tool
9.1.4 新版本的命令和持续集成
9.2 iOS持续集成工具OS X Server
9.2.1 安装配置OS X Server
9.2.2 Web端的Bots设置和持续集成
9.2.3 Xcode 5和OS X Server的双剑合璧

前言: 为什么要写这本书
随着iOS应用开发的持续火热,iOS测试越来越受到重视。但是,由于其生态系统的封闭性,导致iOS测试方面的资料非常少并且难以搜索。在一次技术交流会上认识了博文视点的任晓露老师,她鼓励我应该写一本iOS测试方面的书。这种约稿一般都会在第1次时被拒绝。我同样拒绝了任老师的约稿,不为别的,只是因为自己水平有限。
我在平时的工作中还是不断地搜索着那些零星的资料,并且发现在iOS测试方面没有任何书籍,国内没有,国外貌似也没有。又是一次技术交流会,又见到了任晓露老师,当然,又谈到了出书的事情。这次互换了联系方式,并且在之后认真考虑了出书的事情。之后在老婆大人的鼓励下,决定写一本iOS测试方面的书。心想只要动作快,就是国内的第1本iOS测试书籍,全当是抛砖引玉了,谁让我在豆瓣的ID是厚脸皮呢,就厚着脸皮写了出版吧。
本书的内容:
在测试领域内,分歧不断,争论不断。在如何做测试、测试的目的是什么等问题上都会有很大的争议。而测试活动本身受业务需求和团队能力等因素的影响,也会有很大的不同。本书抛开争论和不同,只谈技术相关的问题,通过简单的实践介绍了通过某些工具或者框架来对应某一些测试类型。
第1章
简短地介绍了测试和iOS测试,并且对本书涉及的内容范围进行了介绍。
第2章
介绍了iOS开发和测试使用的基本工具。
第3章
本章首先介绍单元测试的工具,之后通过实践,详细介绍了基于MVC模式的单元测试的使用方法,其中包括针对Model、Controller和View的基本的测试方法。在实践中使用到了一些高级的断言工具和Mock工具。最后再次针对这些工具进行了详细介绍。
第4章
提到UI自动化测试,第一入手点必须是官方工具。本章通过实践详细介绍了iOS官方的自动化测试工具——UI Automation,不但有实践的应对和基本API的讲解,还加入了笔者对UI自动化的总结和第三方工具的简单介绍。希望能做到深入浅出。
第5章
iOS程序不只有Native应用,还有Web应用。本章结合笔者的工作经验和总结,介绍了iOS Web自动化测试的最佳实践,并且从组成结构上剖析了当下最流行的Appium和WebDriver。
第6章
持续集成是现代软件开发的一种体现。没有持续集成的自动化测试都是半自动化测试。本章不但介绍了通用的持续集成工具,还基于之前章节的实践成果,进行了iOS持续集成方面的介绍。
第7章
除了功能测试之外,iOS程序还需要很多的专项测试,例如兼容性测试等。本章主要介绍了几种通用的专项测试类型和方法。
第8章
iOS自动化测试有很多第三方的开源工具。本章从工具本身的技术特点和实现原理上对工具进行了分类,并且对每一类工具选出了佼佼者进行实践介绍。当然,读者可以根据本章的内容写出自己喜欢的自动化工具。
第9章
在2013年的第4季度,Apple公司大爆发似地发布了开发工具Xcode 5、手机操作系统iOS 7和Mac操作系统OS X 10.9。这一系列工具的发布,也带来了测试方面的一些新特性的引入。本章结合之前的内容,针对这些新特性进行了补充介绍。

序言: 推荐序一 你的iOS App还在裸奔么?
2014年3月的TIOBE编程语言排行榜,Objective-C排行第三位,紧随C语言和Java之后,甚至在C++前面。其他这三种语言,都是有着非常广泛的应用场景和悠久的使用历史的。Objective-C的诞生也并不晚,但是仅在近年才开始流行,而且Objective-C几乎只用于iOS/Mac平台开发。所以,这一排行榜多少能告诉我们iOS开发到底有多热。2013年7月,苹果公司CEO Tim Cook宣布仅在中国就有50万iOS开发者。然而,这个行业的开发水平和测试水平到底怎么样呢?我在新浪微博简单地做了一个调查,34.5%的人说他们完全没有任何测试;44.8%的团队有独立测试人员;而有单元测试、UI自动化测试、持续集成的团队就屈指可数了。那么,在这个平台下测试不重要吗?我觉得恰恰相反。任何App要想在苹果的AppStore上架,都需要经过苹果的审核员的审核,不管你是世界五百强的大公司,还是小作坊,都会一视同仁,绝无例外。如果你的App没有经过良好的测试,被审核员发现有闪退、崩溃或者其他严重质量问题,他们会毫不犹豫地拒绝你的App。而你则需要修改App,重新提交,这往往就意味着再等7~8天的排队才有机会被审核。如果你的运气好,Bug没有被审核员发现,或者说,在审核员审核的环境下,你的App表现良好,你的App就成功上架了。但是如果它在用户的iPhone/iPad上面发生闪退、崩溃,等等,其实你会更倒霉。因为愤怒的用户会迅速让你收获大量的1星,即使你好不容易做了一年的好评度,也会一下子跌落谷底。如果你熟悉AppStore的话,就知道这往往意味着你的下载量将一落千丈,你的App也
有可能从此无人问津。
App这个形式和网站类应用最大的区别就是,如果网站的程序员发现某个页面有一个小Bug,修改后,经过合理的内部审核流程,它的一个部署脚本就可以升级代码,用户在刷这个页面和那个页面之间的空隙,这个升级就完成了。而iOS App出现了问题以后,不管你修改得多快,都需要被苹果的审核员审核,这往往需要7~14天,然后,你往往需要在用户方便的时候,通过重新下载整个App的方式得到更新(虽然iOS 7.0后,更新普遍可以自动在后台完成,但是时间周期仍旧是这么长)。所以,对iOS开发者强调测试的重要性,我觉得说100遍、1万遍都不嫌多,都有其现实意义。但是为什么还有那么多团队和个人开发者没有进行完善的测试呢?懒、侥幸心理、怕麻烦一定是少不了的。还有,我觉得就是一般的入门书、教程,甚至包括苹果的官方文档,讲到的测试部分都太简单,缺乏可操作性。
所以,当我得知本书的作者芈峮在写这样一本专注于iOS平台测试工具和方法的书的时候,我很高兴,而他邀请我做序的时候,我感到十分荣幸。最早知道芈峮时,他还在豆瓣的测试团队工作,他做了一个开源的测试工具ynm3k(要你命3000)。仅仅是这个充满幽默感的名字就征服了我。后来我了解了一下这个工具,由此我才知道原来在iOS下也是可以进行UI自动化测试的。在此之前,我只是经常跟人们在一起人云亦云地说:“嗯,单元测试是好,但是iOS开发主要都是UI逻辑,这可怎么测试呢?”不经过完善的测试,我们的App其实就是在裸奔,会不会出问题,会出什么样的问题,完全看运气。在以前,我们可以有这样或那样的借口,甚至可以直接说,我就是找不到资料嘛,学不会那还能怎么办呢?
现在,有了这本书,对不起,没有借口了,请把这本书带回家,仔细阅读,
按照这本书改善你的开发测试流程,别再让你的App裸奔了……
郝培强
OurCoders.com创始人
2014年3月11日于上海
推荐序二
前几天芈峮告诉我,他完成了一本与iOS测试相关的书,希望我能写个推荐序。芈峮在豆瓣的测试团队时,就一直专注于移动App和移动Web应用的测试。经常能够见到他鼓捣各种工具,用充满创意的方式将小工具连接起来解决实际问题,当然,最让人称道的,是他对移动测试的热情。
读完了芈峮这本不算厚的书,不觉眼前一亮。这本书并没有刻意地为了拔高而选择一些生涩的主题,而是系统性地介绍了移动测试的方方面面:对于移动App的测试,本书介绍了如何搭建移动App测试的环境,如何进行移动App的单元测试,如何选择和使用UI自动化测试方案;对于移动Web应用的测试,本书介绍了如何使用Selenium和Appium轻松地完成这类应用的测试;此外,芈峮还格外体贴地在书中介绍了如何使用持续集成(CI)更好地搭建持续测试的环境——在Web开发中引入持续集成并不少见,但在移动应用开发中发挥持续集成的威力,这可是真有些挑战的!
随着移动互联网渐入佳境,越来越多的组织和个人开始进入移动互联网领域。在测试行业内,越来越多的测试者开始关心移动应用的测试。移动应用明显有不同于Web应用和桌面应用的特点,移动开发平台(iOS、Android,也许还可以算上WP)自身的特性,设备的兼容性(即使是iOS的开发者,现在也不得不考虑兼容性的问题了),移动设备本身的某些特性(网络连接,交互特性等)都给移动应用的测试带来了新的挑战。明显能够看到,移动应用的测试已经成为测试领域的热点,近期在各个渠道也颇能见到一些与移动应用测试相关的介绍文章。然而,大部分我读到的介绍性的文章都是对某工具的介绍,或是某个具体的测试手段,虽然热闹非凡,但对那些希望系统性地一窥移动应用测试门径的测试者来说,实在是不堪大用。从这一点上来说,芈峮的这本《iOS测试指南》算是恰逢其时。本书这些扎扎实实来自一线实践的内容,一定能够让对这方面有兴趣的工程师系统性地了解移动应用测试。当然,移动应用的测试热才刚刚在测试领域内兴起,这本《iOS测试指南》为这个方向开了个好头。我期望能够有越来越多的测试者(包括开发者)愿意深入到这个方向中,研究如何能够不断提高移动应用开发的效率和质量,帮助组织以最小的成本实现目标。我也更期望有越来越多的人愿意用图书的方式记录和分享自己的心得,为这个值得重视的领域添砖加瓦。
段念
豆瓣工程副总裁
2014年3月9日于北京
致谢
本书的成稿离不开许多人的帮助和支持。首先是家人的支持。对于一个1岁多孩子的父亲,利用业余时间完成一本书的编写是非常困难的。我美丽的妻子不但承担了日常所有的家务,还要独立养育孩子,甚是辛苦。如果没有她的理解和支持,本书与读者见面的时候可能iPhone 9都发布了。同样,我还要感谢我的父母、岳父、岳母和朋友,没有他们的鼓励我同样不会完成本书。
当然,还要感谢侠少和任晓露编辑。侠少负责扮黑脸,认真严格地对初稿进行修改,修改意见一度多于书稿字数。虽然那些改进意见都是正确的,但是由于数量过多,有时无法接受。这时晓露编辑就出现了,并且给了我无限的鼓励。就是在这样的不断重复中,我完成了书稿。在此,真心感谢博文视点的每一位编辑。
对本书中的iOS测试方法,我在豆瓣的工作期间几乎都实践过。在此,我还要感谢豆瓣的每一位移动开发工程师。因为没有你们高质量的代码,我不可能玩出这么多花哨的小技巧。当然,最应该感谢的是解彦博和耿新跃两位老师。如果不是当初两位老师给了我去豆瓣工作的机会,本书的成稿更是无从谈起。
最后,感谢本书的每一位读者,感谢你们对本书的关注和支持。

媒体评论: 由于Xcode对自动化测试和持续集成的支持一直不太好,所以业界有许多应用开发都是通过测试人员手工测试的方式来保证质量的。作者芈峮不但具有多年测试经验,并且开源了自己所实现的iOS自动化测试工具ynm3k。他在本书中对iOS测试中苹果公司已有的解决方案和第三方开源工具做了详细的介绍,这对于业界同行将相关测试工具引入iOS开发过程中,并保证应用质量非常有帮助。推荐每一个从事iOS测试工作的朋友阅读本书。
—— 唐巧
资深iOS开发,InfoQ编辑,iOS开发博客(http://blog.devtang.com)
非常认同书中的一句话:“一个高质量的软件系统是设计和开发出来的,并不是测试出来的”。如果你是个有追求的iOS开发人员,那么本书值得你好好读一读。本书由浅入深地介绍了很多iOS测试所涉及的工具用法和理论知识,相信等你将这些技巧融入平时的工作以后,在Coding的过程中会变得更轻松、更快乐。
——虞冰
资深系统架构师, 百姓网技术总监
移动互联网就是互联网,移动测试必然是2014年的测试技术热点。iOS作为移动终端的主流平台,其测试就成为重中之重。本书将iOS测试的方方面面,如单测、界面测试、持续集成等都给出了实际操作指导,内容紧贴业界一线的最新实践,是测试人员学习iOS测试的必读书籍。
—— 吴穹
敏捷专家,Agilean联合创始人
芈峮在iOS测试领域耕耘多年,如今他将自己多年来的经验和心得付诸书面,乃是测试界同仁之福。整本书轻松易读,由浅入深,引导读者一步步地了解、熟悉和掌握iOS测试。我向所有有志于从事iOS测试工作的人推荐本书!
—— 徐毅
敏捷转型顾问,敏捷测试顾问,译者,kaverjody.com