关于MVC
在优胜的MVC架构的App中,
- View只做纯粹的┞饭示型工作,把用户交互经由过程各类方法传递到外部
- Model只做数据存储类工作
- Controller作为View和Model的枢纽,往往要和很多View和Model进行交互,也是主动化包含代码保护的痛点。
所以,对Controller瘦身是iOS架构中比较重要的一环,一些通用的技能包含:
逻辑抽离:
- 收集请求自力。可以每个收集请求以Command模式封装成一个对象,不要直接在Controller调用AFNetworking。
- 数据存储自力。建立自力的Store类,用来做数据持久化懈弛存。
- 共稀有据办事化(协定)。比如登录状况等等,经由过程办事去拜访,如许办事供给者之须要处理办事的质量,办事应用者则信赖办事供给者的结不雅。
Controller与View解耦合
- 建立ViewModel层,如许Controller只须要和ViewModel进行交互。
- 建立UIView子类作为容器,将一些View放到容器后再把容器作为SubView添加到Controller里
- 建立可复竽暌姑的Layout层,不管是AutoLayout照样手动构造。
这时刻,开辟者要打个断点,查看下高低文,看看具体掉败的原因在哪。
Controller与Controller解耦合
- 建立页面路由。每一个界面都抽象为一个URL,跳转仅仅经由过程Intent或者URL跳转,如许两个Controller完全自力。
如不雅你的App用Swift开辟,那么面向协定编程和弗成变的值类型会让你的代码更轻易测试。
KIF
当然,iOS组建化对主动化测试的赞助也很大年夜,因为不管是基本组件照样营业组件,都可以自力测试。组建化又是一个很大年夜的课题,这里不深刻讲解了。
KIF的全称是Keep it functional。它是一个建立在XCTest的UI测试框架,经由过程accessibility来定位具体的控件,再应用私有的API来操作UI。因为是建立在XCTest上的,所以你可以完美的借助XCode的测试相干对象(包含敕令行脚本)。
> KIF是小我异常推荐的一个框架,简单易用。
应用KIF框架强迫请求你的代码支撑accessibility。如不雅你之前没接触过,可以看看Apple的文档
- Accessibility Programming Guide for iOS
https://developer.apple.com/library/prerelease/content/documentation/UserExperience/Conceptual/iPhoneAccessibility/Introduction/Introduction.html
简单来说,accessibility可以或许让视觉障碍人士应用你的App。每一个控件都有一个描述AccessibilityLabel。在开启VoiceOver的时刻,点击控件就可以选中并且听到对应的描述。
所以,在做主动化测试之前,起重要问本身几个问题?
- 这个测试营业的更改是否频繁?
- 这个测试营业是否属于核心功能?
- 编写测试代码的成本有若干?
- 主动化测试能包管测试结不雅的精确么?
平日UIKit的控件是支撑accessibility的,自定定义控件可以经由过程代码或者Storyboard上设置。
在Storyboard上设置:

- 膳绫擎的经由过程Runtime Attributes设置(KVC)
- 下面的经由过程GUI来设置
经由过程代码设置:
如不雅你有些Accessibility的经验,那么你肯定知道,像TableView的┞封种不该该支撑VoiceOver的。我们可以用前提编沂攀来只对测试Target进行设置:
- #ifdef DEBUG
- [tableView setAccessibilityValue:@"Main List Table"];
- #endif
- #ifdef KIF_TARGET (这个值须要在build settings里设置)
- [tableView setAccessibilityValue:@"Main List Table"];
- #endif
应用KIF重要有两个核心类:
- KIFTestCase XCTestCase的子类
- KIFUITestActor 控制UI,常见的三种是:点击一个View,向一个View输入内容,等待一个View的出现
我们用KIF来测试添加一个新的ToDo
敕令行
主动化测试中,敕令行对象可以facebook的开源项目:
- xctool
这是一个基于xcodebuild敕令的扩大,在iOS主动化测试和持续集成范畴很有效,并且它支撑-parallelize并行测试多个bundle,大年夜大年夜进步测试效力。
安装XCTool,
- brew install xctool
应用
并且,xctool对于持续集成很有效,iOS常用的持续集成的server有两个:
- Travis CI 对于公开仓库(比如github)免费,私有仓库收费
- Jenkins 免费
优化你的测试代码
精确的测试用例
平日,你的你的测试用例分为三部分:
- 设备测试的初始状况
- 对要测试的目标履行代码
- 对测试结不雅进行断言(成功 or 掉败)
测试代码构造
当测试用例多了,你会发明测试代码编写和保护也是一个技巧活。平日,我们会大年夜几个角度推敲:
推荐阅读
如何安装Debian的非systemd复刻版本Devuan Linux
Devuan Linux 是 Debian 最新的复刻版本,是基于 Debian 的一个被设计为完全去除了 systemd 的版本。设置 Devuan Linux 的域名Devuan 宣布于 2014 岁尾,并经由了一段活泼的开辟。最新的发>>>详细阅读
本文标题:iOS自动化测试的那些干货
地址:http://www.17bianji.com/lsqh/34681.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示