作家
登录

iOS自动化测试的那些干货

作者: 来源: 2017-04-10 14:02:14 阅读 我要评论

关于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进行设置:

  1. #ifdef DEBUG 
  2.  
  3. [tableView setAccessibilityValue:@"Main List Table"]; 
  4.  
  5. #endif 
  6.  
  7.   
  8.  
  9. #ifdef KIF_TARGET (这个值须要在build settings里设置) 
  10.  
  11. [tableView setAccessibilityValue:@"Main List Table"]; 
  12.  
  13. #endif  

应用KIF重要有两个核心类:

  • KIFTestCase XCTestCase的子类
  • KIFUITestActor 控制UI,常见的三种是:点击一个View,向一个View输入内容,等待一个View的出现

我们用KIF来测试添加一个新的ToDo

敕令行

主动化测试中,敕令行对象可以facebook的开源项目:

  • xctool

这是一个基于xcodebuild敕令的扩大,在iOS主动化测试和持续集成范畴很有效,并且它支撑-parallelize并行测试多个bundle,大年夜大年夜进步测试效力。

安装XCTool,

  1. 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

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)