什么是KIF?
KIF,是一个开源的用户界面测试框架。使用KIF,并利用IOS中的辅助功能API,你将能够编写模拟用户输入,诸如点击,触摸和文本输入,这样的测试将给予你的应用自动化的,真实的用户界面操作。当然,它的作用不仅仅局限于UI测试这么简单,本文将介绍KIF框架的简单使用以及优缺点,不会介绍如何配置工程等内容,如果想深入了解,可访问https://github.com/kif-framework/KIF。
如何通过KIF来进行测试?
-
测试前的准备
首先我们需要创建一个测试类继承自KIFTestCase,
有IOS单元测试经验的朋友应该熟悉XCTest框架,KIFTestCase是XCTestCase的一个子类. 那意味着你拥有了大部分的标准XCTest测试方法和机制可以使用。
-
几个重要的方法
IOS中的辅助功能API:
设置控件的可访问标签:通过设置accessibilityLabel属性利用系统API可以达到识别控件的目的,举个例子,比如说我们要点击一个button,那么要确保这个button的isAccessibilityElement属性为YES,并且为button的accessibilityLabel设置参数。
KIFTestCase类(只介绍几种常用的方法):
BeforeAll:实际上只在所有testCase运行之前被调用一次的特殊方法. 你可以为你这里运行的测试设置初始化条件.
AfterAll:只在所有testCase运行之后被调用一次的特殊方法,你可以在这里为你的测试重置状态。
tapViewWithAccessibilityLabel:它通过可访问标签来识别控件,模拟在视图上的触击. 在大多数情况下,可访问标签都是匹配诸如按钮这种组件的可视的文本标签,获取的方法如下图所示;如果某个控件没有设置可访问标签,可通过上文提到的方式来获取。
一些控件,诸如 UISwitch,相较而言更加复杂. KIF 提供了一个特殊的
setOn:forSwitchWithAccessibilityLabel: 方法来改变一个切换的状态。
tapViewAtPoint:是KIF提供的UIView分类中的一个方法,使用它的前提是得到目标控件,它会点击控件的指定坐标点,如[button tapViewAtPoint:CGPointMake(x,x)]。
-
在输入法测试中的应用:
以测试细胞词库的下载为例:
点击词库:
[tester tapViewWithAccessibilityLabel:
@“词库”]
点击细胞词库按钮:
[tester tapViewWithAccessibilityLabel:
@“细胞词库,个性化定制你的词库”];
点击下载按钮:
[tester tapViewWithAccessibilityLabel:
@“下载”];
完整的效果:
KIF的优缺点:
优点:
1、使用起来很简单,对于UI测试来说,可以大幅度提高测试效率;
2、我们在测试中很容易遇到一种情况:在测试某个函数时,外部依赖条件很难构造。这时候我们可以通过这种方法,使待测函数到达某个状态,然后进行后续的测试。对于代码中一些经常变动的部分,我们如果完全从白盒角度去编写单元测试case,可能会很容易失效且难以维护,这时候可以考虑使用这种方法。
缺点:
1、提供的可用API较少,且一些API的使用前提是利用IOS的辅助API,如果我们的待测程序中没有设置可访问标签的话,只能通过修改源码或添加category来实现。
考虑到KIF是一个开源的框架,我们完全可以分析它的实现源码,来封装适合我们测试一些API,在之后的文章中,会针对KIF的源码来分析它的实现方式。
如需转载该篇文章,请注明来自“搜狗测试”