写点什么

软件测试笔记 --- 移动端 APP 测试

用户头像
刘帅强
关注
发布于: 48 分钟前

APP 测试

客户端专项测试

用户维度的客户端专项测试及原因

  • 崩溃(crash,弱网)

  • 卡顿(掉帧,gc,cpu)

  • 响应慢(启动时间,交互相应,H5 加载)

  • 发热(CPU,mem,io,network, gps 等硬件的使用)

  • 耗电快(硬件占用)

  • 兼容性测试(机型覆盖,回归测试)

技术维度的客户端专项测试及解决方法

  • 崩溃

  • 自动遍历

  • monkey 测试

  • 横竖屏切换

  • 快速进退

  • 卡顿

  • 卡顿测试

  • 内存泄漏检查

  • method profile

  • 响应慢

  • 启动时间

  • 界面切换

  • h5 性能

  • 发热

  • method profie

  • gc 统计

  • io 统计

  • 流量统计

  • 硬件使用统计

  • 耗电量分析

  • 兼容型问题

  • 兼容性测试

  • 自动化测试,自动化遍历测试

  • monkey 测试

APP 启动性能分析

  • APP 的启动流程(Android)

  • 主要流程

  • Application OnCreate

  • 加载第三方 Sdk

  • Activity OnCreate

  • 加载自身的逻辑

  • 发送远端数据请求 xxx.json

  • 渲染界面 list

  • App 启动性能指标

  • 启动类型

  • 冷启动

  • 暖启动

  • 热启动

  • 首屏启动

  • 建议的启动时间

  • Cold strtup takes 5 seconds or longer

  • Warm starts takes 2 seconds or longer

  • Hot starts takes 1.5 seconds or longer

  • 检测方法

  • adb locat

  • 录屏+视频拆帧

  • uiautomator 等自动化工具 200ms 巡检界面变化

  • trancecview

  • 硬埋点

  • 使用 adb logcat(以雪球 APP 为例)

  • 环境准备

  • package= com.xueqiu.android

  • 清理缓存数据:adb shell pm clear $package

  • 停止进程: adb shell am force-stop $ package

  • 启动 app: adb shell am start -S -W $package/.view.WelcomeActivityAlias

  • 获取数据:adb logcat |grep -i displayed

  • adb logcat 结果

  • startTime :记录刚准备调用 startActivityAmdWait()的时间点;

  • endTime:记录 startActivityAndWait()函数调用返回的时间点;

  • WaitTime: startActivityAndWait()调用耗时;

  • WaitTime = endTime - startTime

  • 使用 ffmpeg 拆帧

  • adb shell am force-stop $package

  • adb shell screenrecord --bugreport --time-limit 30

  • adb shell screenrecord --bugreport --time-limit 30

  • adb shell am start -S -W $pckage/.view.WelcomeActivityAlias

  • wait

  • adb pull / data/local/tmp.xueqiu.mp4.

  • ffmpeg -i xueqiu.mp4 xueqiu.gif

  • ffmpeg -i xueqiu.mp4 -r 10 frames_%03d.jpg

多平台自动遍历技术测试工具 appcrawler

多平台自动遍历工具 appcrpawles - 开源地址:https://github.com/seveniruby/AppCrawler - 与其他框架的关系 - appcrawier 底层引擎 - appium - adb - macaca - slelenium - appium 底层引擎 - wda - uiautomato2Appca - appCrawler 环境要求 - appcrawlwe 2.5 - java8 appium 1.8.X - 安装方法 - 直接下载 - 从源码编译 - 备注 - 后面提到的 appcrawler 命令或 java -jar appcrawler.jar 皆表示用 jar -jar 命令执行对应版本的 jar 包文件 - java -jar appcrawler-2.4.0-jar-with-dependcies.jar - quick_start - 启动 appium - 启动模拟器或者链接真机 - 开始自动遍历 - appcrawler --capability - "appPackage = com.xueqiu.android.appActivity=.view.WelcomeActivityAlias" - 生成样板配置样式 - 常用事件 - 执行参数与配置文件 - capability 设置:与 appium 完全一致 - appPackage :"com.xueqiu.android" - appctivity:".view.WelcomeActivityAlias" - app: - appium:"http://127.0.0.1:4723/wd/hub" - noREset:true - automationName:uiautomator2 - dontstopAppOnRset:true - testcase:用于启动 APP 后的基础测试用例 - testcase 的完整形态 - given: 所有的先决条件 - when: 先决条件成立后的行为 - then:断言集合 - testcase 的简写形态 - xpath:when 里的 xpath - action:对应 when 的 action - triggerActions: 特定条件触发执行动作的设置 - 执行参数比配置文件优先级别高 - 自动遍历支持 - selectedList: 需要被遍历的元素范围 - firstList: 优先被点击 - lastList:最后被点击 - tagLimitMax: 同祖先(同类型)的元素最多点击多少次 - backButton:当所有元素被点击后默认以后退控件定位 - blackList: 黑名单 - maxDepth:6 遍历最大深度 - 触发器 - triggerAction - 需要特定次数的触发动作 - 通常用于处理弹框 - xpath:指定具体按钮 - action:动作 - times :规则的使用次数 - log 文件解读 - 自动遍历过程 - 信息获取 - 把当前 APP 界面 dump 为 xml 结构 - 获取待遍历元素 - 遍历范围 selectedList - 过滤黑名单 小控件 不可见控件 blackList - 重排控件顺序 firstList lastList - 跳过已点击+ 跳过限制点击的控件 tagLimit - 根据匹配的规则执行 Action - 循环上面的步骤

多设备管理方案

多设备管理平台 STF

  • 简介

    源码位置: https://github.com/openstf/stf

    OpenSTF 是一个手机设备管理平台-可以对手机进行远管理,调试,远程手机桌面监控等操作

  • docker 安装

    拉取镜像

    docker pull opentf/stf:latest

    docker pull sorccu/adb:latest

    docker pull rethinkdb:latest

    启动 rethinkdb

    docker run -d --name rethinkdb -v/srv/rethinkdb:/data --net host rethinkdb rethink --bind all --cache-size 8 1 9 2 --http-port 8 0 9 0

    启动 stf

    docker run -d --name stf --net host openstf/stf stf local --allow-remote

    loclhost:7100

跨设备管理方案 selenium Grid

  • selenium grid 远程运行 selenium test

  • 主旨是在多个机器上并运行运行 selenium

  • 优点

    所有测试的中心入口点

    管理和控制浏览器运行的 Nodes/环境

    扩展

    并行运行测试

    跨平台的测试

    负载平衡

  • 组成

    client --> HUB---> NODES

    官网: https://www.selenium.dev/downloads/hub

    java -jar selenium-server-standalone-3.141.59.jar -role hub node

    java -jar selenium-server- standalone-3.141.59.jar -role node -port 5677

  • 配置文件启动 Node

    java -jar selenium-server-standalone.jar -role node -nodeConfignode1Config.jison

    https://www.selenium.dev/documentation/en/grid/setting_up_your_own_grid/

    查看 github 中的项目文档

基于 Jenkins 的自动化调度详解

  • 自动冒烟测试

  • 自动化遍历测试

  • 自动遍历测试运行

  • 兼容性测试

核心依赖资源

  • 设备集群:真机,模拟器,云端设备

  • 管理平台:STF, Jenkins, Selenium Grid

  • 测试用例:遍历工具,测试用例

用户头像

刘帅强

关注

还未添加个人签名 2019.05.14 加入

测试小白 短期计划为:构建 测试开发的全貌,而非死磕某个知识点。

评论

发布
暂无评论
软件测试笔记---移动端APP 测试