Code Monkey home page Code Monkey logo

uicrawler's Introduction

UICrawler(基于Appium的App UI遍历工具)

1.0 版 功能描述

  • 支持Android/iOS
  • 生成整体操作步骤视频,方便重现发现的问题(见下图)
  • 当检查到Crash时,为每个Crash提供单独的操作步骤截图和mp4格式的视频文件
  • 支持Monkey功能及以下事件
    • 随机点击
    • 能过黑名单控制不想点击的区域
    • 特殊位置点击(需在文件中进行配置)
    • 特殊位置长按10秒(需在文件中进行配置)
    • 任意方向及长度的滑动
    • 触发Home键(Android Only)
    • 重启app
  • 基于深度优先的原则,点击UI上的元素。当发现Crash时会提供操作步骤截图及相应的Log.(Android提供logcat的log. iOS提供系统log及crash相应的ips文件)
  • 元素遍历结束或按下Ctrl + C键会生成HTML测试报告。测试报告中汇集了测试统计、log及截图的相应信息
  • 同一个元素只会点击一次(白名单中的元素可能会被多次点击)
  • 每次点击都会生一个一截图,截图中被点击的位置会用红点标注,方便查找点击位置

待开发功能 1.1版 预计6下旬月release

  • 支持滑动等更多动作
  • 根据执行步骤重现bug
  • 统计每个页面点击数量(Android)
  • 支持小程序测试

配置文件可配置项

  • 截图数量控制
  • 黑名单
  • 白名单
  • 限制遍历深度
  • 限制点击次数
  • 遍历界面元素的xpath
  • 自动登录的用户名和密码及相应的UI元素ID

下载Jar包

UICrawler.jar

下载配置文件

config.yml

根据待测试App修改配置文件中下列各项的值,其它值用默认值即可 详情见 Config.md

Android

  • ANDROID_PACKAGE
  • ANDROID_MAIN_ACTIVITY

iOS

  • IOS_BUNDLE_ID
  • IOS_BUNDLE_NAME
  • IOS_IPA_NAME

Monkey配置项可选, 详情见 Monkey配置

启动appium

appium --session-override -p 4723
-p 设定appium server的端口 , 不加参数默认为4723

运行UICrawler元素遍历(必须有yml配置文件), 运行前请先阅读注意事项

java -jar UICrawler.jar -f config.yml -u udid -t 4723
-u 指定设备udid
-t 指定appium server的端口(此项为可选项,默认值是4723)

运行UICrawler Monkey

java -jar UICrawler.jar -f config.yml -u udid -t 4723 -m

查看支持的参数

java -jar UICrawler.jar -h

一些常用命令

查看设备udid
Android:
  adb devices
iOS:
  instruments -s  devices
  idevice_id -l
  
Android 查看apk 和 Main activity
  ./aapt dump badging "apk"  | grep launchable-activity
  aapt 通常在android sdk的 build-tools目录下
  windows中将grep换成findstr
  "apk"是apk文件路径

注意事项

  • iOS设备一定要打开"开发者选项"里的“Enable UI Automation” https://www.jianshu.com/p/a1d075b3472c
  • iOS测试包必须是debug版的
  • 同时运行多台ios设备时要每台设备要设置不同的IOS_WDA_PORT : 8001-8888
  • Android7的手机必须安装Uiautomator2 server 的两个apk(安装deskstop版appium,初次连接appium会自动安装), 也可进入到apk目录下通过adb安装
  • Android6及以下的手机不要安装Uiautomator2 server的APK

Known issue

参考内容

更多细节

测试报告

关于如何发挥测试工具的价值

  • 用不同的账号运行测试,因为每个账号可能看到的内容不一样
  • 用不同的手机系统版本运行测试,尽可能做到iOS 9-11, Android 4-8 都覆盖到,如果资源有限无法同时运行多台设备,每天可以选择一两个系统版的手机去运行测试
  • 用不同的手机运行测试,尤其安卓碎片化严重,手机厂商多,有的问题只有特定手机才能发现
  • 关于测试运行的频度,只要有代码改动建议至少一天一次,下班时运行,第二天看结果

uicrawler's People

Contributors

lgxqf avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.