:::info 为什么要引入自动化测试?
所有的测试,通过手工完成是一种简单而原始的方式,但是由于测试过程中会存在大量的重复性工作,比如每次变更之后都要执行一次的回归测试,比如要在几百台手机上执行相同用例的兼容性测试,所以在工作过程中,我们希望能够不断的用代码来帮助我们完成测试,也就是自动化测试。 :::

主流自动化测试框架

代码层自动化 比如 Java 的 Junit,Python 的 PyUnit 等等
接口层自动化 接口测试可以测试功能、也可以测试性能、测试压力、测试安全等等,比如 Postman
UI 层自动化 对 UI 进行测试,如 APPIUM,具有跨平台跨语言的特点;
Selenium,主要用于 Web 应用自动化测试

Airtest Project

Airtest 介绍

由网易研发并开源的跨平台自动化测试框架,适用于游戏和 App
AirtestIDE 目前支持测试 Android、Windows、iOS 上的应用,其他更多平台的支持正在开发中

  • 自动化脚本录制、一键回放、报告查看,轻而易举实现自动化测试流程
  • 支持基于图像识别的 Airtest 框架,适用于所有 Android、iOS、Windows 应用
  • 支持基于 UI 控件搜索的 Poco 框架,适用于 Unity3d,Cocos2d 与 Android/iOS App 等多种平台
  • 能够运行在 Windows 和 MacOS 上
  • 基于 python,直接使用 python 语法

    Airtest 的优势

  • 所见即所得。大幅度降低自动化脚本的编写和维护成本

  • 解决游戏测试的痛点。跨引擎跨平台

    Airtest 框架

    图片1.png

    Airtest and Poco

    | Airtest | 基于 Python 的、跨平台的 UI 自动化测试框架,基于图像识别原理,适用于游戏和 App | | —- | —- | | Poco | 基于 UI 控件搜索的自动化测试框架,其核心优势是除了对 Android、IOS 之外,对游戏也是支持的,同时也支持微信小程序、微信小游戏和 H5 应用 |

Poco 框架

  • 如果你发现图像识别不够精确,还可以使用基于UI控件搜索的方式进行自动化测试,与刚才的 Airtest 不同,这是 Poco 这个框架实现的功能
  • 目前 Poco 直接支持 Unity3d、Cocos2d、白鹭引擎等多种游戏引擎,以及 Android/iOS 原生 App
  • 如果是 Android/iOS 原生应用,是即插即用的,无需接入 SDK。但由于游戏引擎使用 OpenGL 等图形接口直接渲染,而没有使用 Android 原生的 UI 系统,我们需要与游戏的 Runtime 进行通信获取整个UI结构

    使用流程

    1、连接设备

  • Android:ADB,会安装相关应用来提供相应服务

  • Windows:框选 Windows 窗口
  • iOS:借助 Xcode 所部署 iOS-Tagent

2、录制脚本

  • Airtest:通过图像识别,可能不够精确
  • Poco:基于 UI 渲染树,但存在兼容性问题。Android/iOS 直接可用 Unity3d 等游戏引擎需要依赖 SDK

3、添加断言

  • Airtest:基于图片
    • assert_exists:断言图片存在
    • assert_not_exists:断言图片不存在
  • Poco:基于UI元素属性值
    • assert_equal:断言相等
    • assert_not_equal:断言不等
      1. # 模拟输入并获得20分之后
      2. value = Poco("分数按钮").attr("num")
      3. assert_equal(value, 20, "获得20分")

      Airtest API

      辅助窗:Airtest 的常用 API 大部分都列在了AirtestIDE 里的 Airtest 辅助窗中,在使用各种常见的截图语句时,鼠标移动到按钮上即可看到每个接口的常用参数与返回值信息,非常方便
      图片2.png

      Poco API

      详见:https://poco.readthedocs.io/zh_CN/latest/
      图片3.png