iOS自动化测试:自动遍历工具试用总结

简介

本篇分析了近期试用的几款iOS自动化测试工具

背景

  • 市场背景
    • 苹果官方只提供底层库XCUITest,需要开发
    • iOS平台自动测试工具少,各大云市场上自动遍历功能都多有限制企业无法自由定制.
  • 测试常见问题:
    • UI自动化只能覆盖核心业务逻辑,新功能来不及上自动化
    • 产品业务测试量较大,新版发布后,老功能来不及全面回归,容易漏测
    • 时间长,强度大的工作后,人容易产生疲乏,对数字的位数,文字的显示等错误信息的敏感度下降
    • 产品的界面深度很深,且包含大量的展示信息功能
    • 专项测试回归难度大:内存泄漏、健壮性测试、弱网等测试太多

这个时候我们需要一种手段,可以达到两方面的目的:

  • code less: UI自动化用例维护成本降到最低
  • automate: 尽可能的自动化覆盖回归业务

工具对比

SwiftMonkey

SwiftMonkey是一款基于苹果XCTest框架为基础的随机生成操作Action的测试框架,只支持iOS端。
参考链接:SwiftMonkey Github

工作原理介绍

通过代码随机生成操作事件,使用苹果官方XCTest框架执行操作,在Xcode10.1之前使用苹果的私有api 如XCEventGenerator.tapAtTouchLocations 故执行速度极快,在Xcode10.1之后只能使用public API,速度在1秒3-5个操作。

总结
  • 优点:
    由于monkey在测试过程中的“随机”性,且执行速度快,可以用来做App压力测试
  • 缺点:
    不满足我们的两个自动遍历需求:可控性和可定制

因为短板明显,用于自动遍历上效果不佳,但是做为压力测试和崩溃检测工具还是不错的。

NoSmoke 2.0

NoSmoke 是一款基于source-XML-tree/OCR 为基础的多端UI自动化测试框架,支持Android iOS。
参考链接:NoSmoke 2.0

工作原理介绍

爬虫程序通过OCR 扫描客户端App 窗口图片对可操作点进行分析,规避了大量的xml 计算成本,从而提升效率.


image
总结
  • 优点:
    • 自动遍历App进行UI测试,并提供测试报告
    • 可控制,提供拦截钩子,针对特殊的情景自定义操作事件
    • 支持多端运行: iOS, Android
  • 缺点:
    • 使用OCR的扫描方式过于依赖扫描的精准度,且目前使用的工具对中文识别的友好度低,会出现扫描出错,一个句子被截断为数段等情况

由于NoSmoke2.0使用的OCR tesseract对于中文的识别效果不佳导致各种异常,所以目前对于中文app的支持不佳,难以使用。

AppCrawler

一个基于Appium框架的自动遍历app爬虫工具. 支持android和iOS, 支持真机和模拟器. 最大的特点是灵活性. 可通过配置来设定遍历的规则.
参考链接:AppCrawler Github,Appium 介绍

工作原理介绍

框架结构

  • appcrawler底层引擎
    • appium
      • WebDriverAgent
        • iOS 9.3 及以上 XCUITest
        • iOS 9.3 及以下 UIAutomation

appcrawler流程


AppCrawler流程
总结
  • 优点:
    • 跨平台性:AppCrawler是基于appium开发的,所以支持Android和IOS
    • 可控性:对测试的页面,控件类型的选择,测试的深度等都可自由控制
    • 可定制:可自定义操作,如输入,滑动等
  • 缺点:
    • 运行速度较慢:AppCrawler是基于appium开发具备了跨平台的优点,但是也因为这层封装造成了运行速度相对较慢
    • 使用门槛高:正因为使用灵活性的问题,也造成了使用门槛的提高,主要基于yaml文件中使用appium的相关技术知识进行配置,这就对使用者有了一定的技术要求

你可能感兴趣的:(iOS自动化测试:自动遍历工具试用总结)