基于 KIF 的 iOS UI 自动化测试和持续集成(6)

发表于:2017-03-10来源:美团点评技术团队作者:美团点评技术团队点击数: 标签:iOSKIF
上述代码中,我们看到许多封装函数。为保证用例结构清晰明朗,我们借鉴 selenium pageObject 的设计方式, 遵循如下规则: a. 将页面上的对元素的发现、操

上述代码中,我们看到许多封装函数。为保证用例结构清晰明朗,我们借鉴 selenium pageObject 的设计方式, 遵循如下规则:

  • a. 将页面上的对元素的发现、操作处理抽象为相应的类,返回操作结果;
  • b. 封装尽可能多的工具类;
  • c. 测试用例只关注用例逻辑,步骤尽量简洁。

如下图所示,在用例集 test suite 中,我们只保持清晰的用例逻辑;非用例逻辑的动作封装成相应地用例集的类 test suite additions ;因为 KIF 的开源性,我们还可以利用 KIF 的私有 API 封装我们需要的工具 Tools 类。

(4)用例的运行独立和 retry 机制

失败用例是不可避免的,上述用例的组织方式,降低了用例间的依赖性,但是并不能完全消除失败用例对后续用例执行的影响。如果能让每个用例独立启动 App 执行 case,则能保证后执行用例不受先执行失败用例的影响。如果在 case 运行失败后,还可以进行 retry 重试,则能提高用例运行的稳定性。xctool 工具能给我们带来这样的功能,我们用 xctool 命令先 build-tests 构建 app,然后循环启动 app 来 run-tests 用例,用例失败后,重新执行。下面是一个 xctool 独立运行用例的简单示例:

xctool build-tests -workspace myApp.xcworkspace -scheme myKIFTestScheme -sdk iphonesimulator -configuration Debug -destination platform='iOS Simulator',OS=8.3,name='iPhone 6 Plus'

array=( TimerTests HistoryTests )

for data in ${array[@]}
do 
        xctool  -reporter pretty -reporter junit:tmp/test-report-tmp.xml -workspace myApp.xcworkspace -scheme myKIFTestScheme run-tests -only myKIFTestTarget:${data}  -sdk iphonesimulator -configuration Debug -destination platform='iOS Simulator',OS=8.3,name='iPhone 6 Plus'
done

三、KIF 自动化的持续集成

原文转自:https://zhuanlan.zhihu.com/p/22283843

...