# NoSmoke 2.0 Cookbook

NoSmoke 是一款基于source-XML-tree/OCR 为基础的多端UI自动化测试框架,服务于持续集成环境中的冒烟测试 并尊从Webdriver 标准. 本文档介绍NoSmoke 2.0 的使用方式.

# 1. NoSmoke 的优势:

NoSmoke 提供一下能力:

  • ✅ 以最轻便的配置能力以及最简化的脚本执行自动化UI测试.

  • 基于深度遍历算法精确定位测试UI元素, 提供高于猴子测试的测试精度.

  • ✅ 支持多端运行: iOS, Android!! :]

  • 测试结果可视化 Macaca-Reporter.

# 2. 工作原理介绍

# 自 NoSmoke 1.0

从 NoSmoke 1.0 起, 爬虫程序通过客户端本地SDK驱动,获取UI source tree 信息,并识别操作点.

# 自 NoSmoke 2.0

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

# 版本差异一览:

指标 版本 1.0 版本 2.0
支持平台 Android iOS Web Android iOS
可配置项 14 配置 4 项简化配置
拦截钩子 5 个 1 个并简化
钩子实现 无API,需要用户实现restful 指令 封装API 提供点击/输入/拖拽能力
迭代长度 12 秒/轮 5 秒/轮
稳定评分 0.6 0.95
模块依赖 Macaca Drivers Macaca/Appium Drivers (基础层可选)

# 3. 功能表

# a. 多端

NoSmoke 支持多端UI测试: iOS, Android, 爬行记录通过macaca-reporter 进行展示.

# b. 可配置

参考以下配置文件. 可选择对应的iOS/android OS 类型,安装包/packageId/bundleId 以及该次执行时的其他配置信息.

desiredCapabilities:
    platformName: 'iOS/Android'
    deviceName: '${name-of-the-device}'  // for android run `adb devices`, for iOS simulator run `xcrun simctl list`
    app: '${downloadable address of .ipa/.apk file}'

And the corresponding configuration for crawling the app:

crawlingConfig:
  strategy: 'ocr'
  platform: '${platform: android/ios}'
  triggers:
    - '${prioritised trigger point}'
  exclude:
    - '${exclude text patten}'

# c. 钩子

NoSmoke 2.0 减少了钩子的数量,从而进一步降低了接入以及理解成本. 在每一次动作执行后,以下钩子接口会触发,用户可检查当前执行的动作信息,并决定是否进行干预.

/**
 * Method to perform action for the current platform, invoked when the action is going to perform
 * @Params: action the action which belongs to current active node, user can determine the priority of action execution
 * @Params: crawler the crawler instance which contains the context information as well as crawler config
 * */
Hooks.prototype.onActionPerformed = async function(action, crawler) {
  // password input
  if (action.name == "Enter your MPIN") {

    // here hook provides API for click/type/drag.
    await this.click({'method':'xpath', 'xpath':'${xpath of element}'});
    await this.type({'method':'xpath', 'xpath':'${xpath of element}', 'value': '2580'});

  }
};

阅读后续篇章以便了解 如何快速开始 以及各个平台的配置方法 并且懂得如何进一步通过勾子进行定制.

# 案例展示

NoSmoke OCR 执行案例

App 平台 设备类型 报告 配置链接
Macaca Demo iOS Simulator 链接 配置 指令
Macaca Demo Android Simulator 链接 配置 指令
Dash-iOS iOS Simulator 链接 配置 指令
YouDao-Dict Android Device 链接 配置 指令

# License

The MIT License (MIT)

上次更新: 2022/4/22 15:25:34