作家
登录

iOS自动化测试的那些干货

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

主动化测试有很多长处:

  • 测试速度快,避免反复性的工作
  • 避免regression,闪开辟更有信念去修改和重构代码(小我认为最大年夜的长处)
  • 具有一致性。
  • 有了主动化测试,持续集成(CI)会变得更靠得住。
  • 迫使开辟人员写出更高质量的代码。(主动化测试不经由过程,代码不许可归并)

当然,主动化测试也有一些缺点。

  • 开辟和保护成本高。
  • 不克不及完全替代人工测试。
  • 无法完全包管测试的精确性 – 让代码去断定一段逻辑是否精确很轻易,然则,让代码断定一个控件显示是否精确却没那么轻易。

平日,我们会选择那些营业稳定,须要频繁测试的部分来编写主动化测试脚本,其余的采取人工测试,人工测试仍然是iOS App开辟中弗成缺氨赡一部分。

测试种类

大年夜是否接触源代码的角度来分类:测试分为黑盒和白盒(灰盒就是黑盒白盒结合,这里不做评论辩论)。

白盒测试的时刻,测试人员是可以直接接触待测试App的源代码的。白盒测试更多的是单位测试,测试人员针对各个单位进行各类可能的输入分析,然后测试其输出。白盒测试的测试代码平日由iOS开辟编写。

黑盒测试。黑盒测试的时刻,测试人员不须要接触源代码。是大年夜App层面对其行动以及UI的┞俘确性进行验证,黑盒测试由iOS测试完成。

大年夜营业的层次上来说,测试金字塔如图:  

测试金字塔

而iOS测试平日只有以下两个层次:

  • Unit,单位测试,包管每一个类可以或许正常工作
  • UI,UI测试,也叫做集成测试,大年夜营业层的角度包管各个营业可以正常工作。

框架选择

  1. - (void)testAddANewItem{ 
  2.  
  3.     [tester tapViewWithAccessibilityLabel:@"Add"]; 
  4.  
  5.     [tester enterText:@"Create a test to do item" intoViewWithAccessibilityLabel:@"Input what you want todo"]; 
  6.  
  7.     [tester tapViewWithAccessibilityLabel:@"Save"]; 
  8.  
  9.     [tester waitForTimeInterval:0.2]; 
  10.  
  11.     [tester waitForViewWithAccessibilityLabel:@"Create a test to do item"]; 
  12.  
  13.  

选择框架的时刻有几个方面要推敲

  • 测试代码编写的成本
  • 是否可调式
  • 框架的稳定性
  • 测试申报(截图,代码覆盖率,…)
  • WebView的支撑(很多App都用到了H5)
  • 自定义控件的测试
  • 是否须要源代码
  • 可否须要连着电脑
  • 是否支撑CI(持续集成)
  • ….

我们起首来看看XCode内置的框架:XCTest。XCTest又可以分为两部分:Unit Test 和 UI Test,分别对应单位测试和UI测试。有一些三方的测试库也是基于XCTest框架的,这个在后文会讲到。因为是Apple官方供给的,所以这个框架会赓续完美。

成熟的三方框架平日供给了很多封装好的有好的接口,笔者综合比较了一些,推荐以下框架:

单位测试:

以下三个框架都是BDD(Behavior-driven development) – 行动驱动开辟。行动驱动开辟简单来说就是先定义行动,然后定义测试用例,接着再编写代码。 实践中发明,平日没有那么多时光来先定义行动,不过BDD中的domain-specific language (DSL)可以或许很好的描述用例的行动。

  • Kiwi 老牌测试框架
  • specta 另一个BDD优良框架
  • Quick 三个项目中Star最多,支撑OC和Swift,优先推荐。

UI测试

  • KIF 基于XCTest的测试框架,调用私有API来控制UI,测试用例用Objective C或Swift编写。
  • appium 基于Client – Server的测试框架。App相当于一个Server,测试代码相当于Client,经由过程发送JSON来操作APP,测试说话可所以随便率性的,支撑android和iOS。

篇幅有限,本文会先介绍XCtest,接着三方的Unit框架会以Quick为例,UI Test框架侧重分析KIF,appium仅仅做道理讲解。

XCTest

对于XCTest来说,最后生成的是一个bundle。bundle是不克不及直接履行的,必须依附于一个宿主过程。关于XCTest进行单位测试的基本(XCode的应用,异步测试,机能测试,代码覆盖率等),我在这篇文┞仿里讲解过,这里不再具体讲解。

  • iOS 单位测试之XCTest详解

blog.csdn.net/hello_hwc/article/details/46671053

单位测试用例

比如,我有以下一?函数:

  1. //验证一段Text是否有效。(不克不及以空字符开首,不克不及为空) 

      推荐阅读

      如何安装Debian的非systemd复刻版本Devuan Linux

    Devuan Linux 是 Debian 最新的复刻版本,是基于 Debian 的一个被设计为完全去除了 systemd 的版本。设置 Devuan Linux 的域名Devuan 宣布于 2014 岁尾,并经由了一段活泼的开辟。最新的发>>>详细阅读


    本文标题:iOS自动化测试的那些干货

    地址:http://www.17bianji.com/lsqh/34681.html

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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