Skip to content
字数
9004 字
阅读时间
36 分钟

一、项目概述

1. 项目介绍

前端:https://hmshop-test.itheima.net/
后端:https://hmshop-test.itheima.net/admin
  • 项目:TPSHOP,类似于淘宝、京东等电商平台
  • 项目类型:电商平台
  • 项目特点:
    1. 业务通用性强
    2. 更贴近生活,应用范围广

2. 核心业务及模块

  • 项目角色:买家、卖家等

  • 项目业务:下单业务、发货业务等

  • 系统及模块:

    • 买家:注册登录、商品搜索、购物车、下单、支付、售后
    • 卖家:会员管理、商品管理、订单管理、营销管理、物流管理、供应商管理
  • 如何了解项目?

  1. 先了解项目背景:新项目/迭代项目/重构的项目?
  2. 先找文档 + AI查询了解 + 找人(产品/开发)
  3. 抓核心业务功能:购买、上架、下架、售后

3. 项目架构

  • 系统架构(B/S 和 C/S 架构)
    • 开发语言
      • 前端:HTML + CSS + JavaScript
      • 后端:PHP
    • 应用服务器:Nginx、Apache
    • 数据库:MySQL
  • 客户端:APP(C/S)、Web(B/S)
    • 我们负责的是APP端,也就是C/S架构,是C端软件(一般移动端的应用程序都是)

4. 环境配置

1.JDK安装:由于windows下的模拟手机软件一般都是安卓机,测试过程中会用到安卓开发工具包,而这些安卓开发工具包又正好是使用Java语言开发的,所以需要安装JDK(Java运行环境)
2.Android SDK安装:测试Android设备时,需要Android系统对应的各种开发工具(adb等)
3.移动端模拟器(mumu安装):模拟真是的移动端设备,比如Android/IOS手机
  • 环境:MUMU模拟器(仅用于学习)
  • 配置:
    • 配置Android SDK环境变量:
      1. 下载并安装Android SDK到非中文目录下
      2. 在系统变量中新建变量ANDROID_HOME,变量值为SDK的安装目录
      3. 在系统变量的Path中设置环境变量%ANDROID_HOME%\tools%ANDROID_HOME%\platform-tools
      4. 打开cmd命令行,输入adb --version查看环境变量是否成功设置
    • 同理,在环境变量中设置jdk为系统变量

5. 测试范围

注意区分APP测试与Web端测试的区别。APP测试将非功能测试划分为了性能测试和专项测试两大类,且APP的性能测试与Web端的性能测试不同,APP端注重的是APP对手机资源占用情况的测试,而Web的性能测试是对服务器的性能测试
  1. 功能测试
    1. 业务测试
    2. 功能模块测试
  2. 性能测试
    1. CPU、内存占用
    2. 启动速度
    3. 流量、电量消耗
    4. 流畅度
    5. 稳定性
  3. 专项测试
    1. 安装卸载升级
    2. push消息推送
    3. 交叉事件测试
    4. 用户体验测试
    5. 兼容性测试
APP端与Web端的相同与不同之处
相同点
  1. 同一项目APP和Web使用的后端服务器是相同的
  2. 前后端默认都使用HTTP协议进行交互(也有些APP使用socket进行交互)
  3. APP和web端都需要功能测试
不同点
JSON最常用的格式是对象的键值对。例如:{"username":"Lisi", "age":18}
  1. 架构不同:APP端是C/S架构,Web端是B/S架构
  2. 传输格式不同:APP端前后端交互的数据格式以json为主,web端交互的数据格式为json/HTML等,种类更多
  3. 测试范围(非功能):APP测试还有APP专项APP性能;Web端测兼容性易用性

二、APP功能测试

  • 单模块测试步骤:
    1. 熟悉需求:(核心)测试目的 + 条件
    2. 提取测试点,编写测试用例
      • 测试点梳理(这里仅针对功能测试的测试点进行梳理分析):
        • 显示:是否与UI原型图一致,是否正常
        • 操作(含规则):能否成功
    3. 测试用例评审(与其他测试人员交叉评审,或提交给AI评审)
    4. 执行测试用例
    5. 记录执行过程,登记跟踪缺陷
  • APP功能测试中,以注册登录功能为例,常常需要用户勾选同意协议,点击协议可跳转查看协议内容,这些APP端的网页统称为H5(第5代HTML),本质上就是在APP中嵌入了浏览器的驱动,然后以浏览器的形式打开并渲染了一个网页
    • 登录页面存在可点击的协议条款261
      • 打开后查看到的H5页面内容:304

【扩展】第三方支付原理

  • 原理图:
    • 业务服务器:当前APP的后台
    • 第三方服务器:微信、支付宝等支付软件的服务器
  • 过程描述:
    1. 请求服务器获取能否下单
    2. 服务器确认能够下单成功
    3. APP点击立即支付后,跳转到第三方支付APP进行支付(实际上钱是在第三方支付平台上进行流转的)
    4. 第三方支付后,返回支付的结果(成功)
    5. APP完成支付后,自动刷新状态,并向业务服务器说明刚才的订单已经完成支付,现在的订单状态如何
    6. 第三方服务器立即将订单支付信息调给业务服务器,告诉它金额是否到账
    7. 业务服务器确认收到金额,立即修改订单状态(已支付)
    8. 业务服务器将修改后的订单信息回送给业务APP

三、🌟APP专项测试(尽量背诵)

专项测试的测试点一般都相同,背一背就好。可以按照Xmind文件进行背诵,大方向知道就行了。Xmind文件分享:https://pan.baidu.com/s/1i0FxtgRby20Oxw3ohrlhIw 提取码: ripa
  • 说明:在不同的移动设备上能够持久、稳定运行的APP程序
  • 测试环境:
    1. 真机/模拟器
    2. App安装包(安卓安装包后缀 --> .apk;RS手机安装包后缀 --> .ipa)
  • 测试范围:
    1. 安装卸载升级
    2. 兼容性
    3. push消息推送
    4. 交叉事件(也叫干扰测试,例如:在通话过程中使用支付功能是否能成功)
    5. 用户体验

1.安装卸载升级

  • 使用前:确保安装、升级功能正常
  • 使用后:确保卸载功能正常
1)安装测试关注点
  • 正常场景:
    • 来源:从不同的安装渠道安装(APP商城、手机助手、直接下载apk或ipa文件安装)
    • 去向:在不同的操作系统版本上安装
    • 不同的安装路径(安装到手机上、安装到SD卡上)
    • 卸载后重装
    • 正在运行时覆盖安装
  • 异常场景:
    • 安装时出现异常(关机、断网),恢复后能否继续安装
    • 安装时存储空间不足
    • 安装时手动取消安装
    • 低版本覆盖高版本安装(原先是高版本,能否使用低版本进行覆盖安装)
    • 不兼容的CPU架构
    • 低版本手机安装高版本要 求的APP
2)卸载测试关注点
  • 正常卸载(APP手动卸载、工具卸载)
  • 运行时卸载
  • 取消卸载
  • 卸载异常中断后是否能继续卸载
  • 卸载后无数据残留
3)升级测试关注点
升级后要观察升级前的数据是否正常,必须确保升级后数据正常,才能推送升级版本上线
  • 临近版本升级
  • 跨版本升级
  • 不同安装渠道升级(应用商城、手机助手)
  • 升级提醒成功(可不提醒、可以提示升级、强制升级)
  • 应用内升级时非WIFI提醒

2. APP兼容性

  • 说明:APP在不同的机型上由于软件硬件等不同可能出现各种各样的问题,因此需要做兼容性测试。
  • 测试范围:
    1. 手机型号:覆盖市面上的主流机型(Android:vivo、小米、OPPO、华为)考虑APP线上排名
    2. 系统版本:Android系统、ios系统
    3. 分辨率:1080×1920、720×1280
    4. 屏幕尺寸:5.5、4.7
    5. 网络:3G、4G、5G、WIFI
    6. 应用兼容性:
      1. 手机硬件兼容:home键、电源开关键、音量调节键等
      2. 外部硬件设备兼容:耳机、蓝牙等
      3. 操作系统软件兼容:系统定位功能、时间调节功能等

3. push消息推送测试

  • 什么是push消息?
    • push消息:APP给用户推送的各种消息
    • 前提:需要在手机中"设置" -> "通知"进行push消息的设置
1)两种模式 --> Pull和Push
  • Pull(拉)客户端主动获取:客户端固定时间主动向服务器获取消息
  • Push(推)客户端被动接受:当服务器有消息更新时,主动发送到客户端
2)推送流程
  • 服务器有更新消息 --> 推送服务器 --> APP --> 用户
    • 常见推送服务器(了解):
3)测试点设计
  • Push消息推送的设置:

    • APP服务器设置(交给推送服务器):
      • 推送内容
      • 推送时机
      • 推送频率
      • 推送人群(全部用户/部分用户)
    • 手机端设置:
      • 是否接收通知
      • 提醒位置等
  • 🌟Push消息测试的关注点(测试点):

    • APP服务器设置测试点:
      • Push消息是否按指定的业务规则推送
      • 当Push消息是针对特定用户时,检查收到的Push与用户身份是否相符合
    • 手机端设置测试点:
      • 设置不接收推送消息时,用户是否会收到Push消息
      • 设置push消息显示的位置,是否与配置一致
      • 收到push消息,是否能正常打开跳转
    • 其他测试:
      • APP在前台使用时,收到push消息如何提示
      • APP在后台使用时,收到push消息如何提示
      • APP离线,是否能收到push消息

4. 交叉事件测试

  • 测试点设计:
    • 🌟APP运行时接打电话
    • 🌟APP运行时收发信息
    • 🌟APP运行时连接蓝牙设备
    • APP运行时旋转屏幕
    • APP运行时切换网络(4G、WIFI)
    • APP运行时电量告警、插拔充电器

5. 易用性测试(用户体验测试)

四、性能测试

实际工作中,对以下这些指标的检测一般以小时为单位
  • APP性能:测试APP使用过程中占用硬件资源(cpu、内存、流量、电量)的使用情况
  • APP性能测试分类:
    • App运行时占用手机硬件资源情况(性能指标)
    • App稳定性(长时间运行是否出现异常)
  • APP性能测试关注点:
    1. APP使用时对cpu、内存的占用情况
    2. APP使用时是否流畅
    3. APP使用时电量流量的消耗情况
    4. APP的启动时间是否过长
    5. APP是否能长时间稳定运行

1. 如何测试APP性能

使用mumu模拟器时,机型不要使用VIVO,该机型可能会导致开启了悬浮窗,但仍然提示未获取到悬浮窗权限
  • 使用工具或命令进行测试
  • 工具:
    • Android:SoloPi --> 一个由支付宝开源的Android自动化工具,具备录制回放、性能测试等功能
    • ios:Xcode Instrument --> 苹果官方提供的性能测试分析工具集,深度集成于Xcode开发环境
  • SoloPi功能:
    1. 性能测试:记录并监控APP应用的性能指标;还能进行性能加压模拟,复现APP应用在性能差、网络环境不佳的情况下的表现
    2. 录制回放:能将用户的操作记录下来,支持在各个设备上进行回放
    3. 一机多控:操作一台主机设备来控制多台从机设备,进行重复冗余的兼容性测试,能极大提升兼容性测试的效率

2. 性能内存监控

1)指标
每个程序运行时都需要将代码和数据放入内存中,内存不足则程序无法正常运行。
  • SoloPi工具提供了两个内存的监控指标:Private dirty 和 PSS
    • Private dirty(私有内存):进程独占内存,也就是进程销毁时可以回收的内存容量
    • PSS(实际使用内存):将跨进程共享页也加入进来,进行按比例计算PSS。这样能比较准确的表示进程占用的实际物理内存
      • 实际使用内存=共享内存+私有内存
      • 举个例子:扬声器占有共享内存,音乐播放器、接打电话等占用私有内存
  • 图例说明:
2)内存问题的现象
a. 内存泄露(memory leak)
  • 定义:内存泄露指的是程序在申请内存后,退出时无法释放已申请的内存空间。
  • 单次内存泄漏的危害可以忽略,但内存泄露堆积后果严重,无论有多少内存,迟早会被占用完。因此,内存泄露最终会导致内存溢出
b. 内存溢出(out of memory)
  • 定义:内存溢出是指程序在申请内存时,没有足够的内存空间供其使用,就出现了内存溢出的异常问题
3)性能内存测试步骤
  • 需求:浏览网易严选首页的平均内存消耗情况
  • 步骤:
    1. 打开SoloPi工具,配置内存监控543543
    2. 进入APP,操作上述业务,观察运行时的内存指标(监控录制完毕后,在SoloPi中查看监控结果)631
    3. 查看内存运行结果
      • 检查程序实际使用的内存值PSS

3. CPU监控

1)指标
  • SoloPi提供了两个监控指标:全局占用CPU和应用进程CPU
    • 全局占用CPU:整机的CPU使用水平,即:当前手机的CPU整体使用率
      • 在Linux系统中,CPU利用率分为用户态、系统态和空闲态
        • 用户态:表示CPU处于应用程序执行的时间
        • 系统态:表示系统内核执行的时间
        • 空闲态:表示空闲系统进程执行的时间(空闲进程就是一个低功耗的省电占位符)
        • :CPU执行非空闲进程的时间/CPU总的执行时间(包括空闲进程与非空闲进程)
    • 应用进程CPU:表示自开机以来,应用程序消耗的CPU时间的总数
2)CPU消耗引起的异常现象
  • 出现以下现象,基本可判断APP的CPU性能测试不通过
    • CPU使用长时间处于90%以上
    • 手机发热、耗电量增加
    • 响应变慢、引起ANR(即:应用程序无响应,Application Not Responding)
3)性能CPU测试步骤
  • 需求:测试滑动首页CPU使用率
  • 步骤:
    1. 打开SoloPi工具,勾选CPU监控指标
    2. 进入网易严选,操作上述业务,观察运行时的CPU指标
    3. 查看CPU运行结果
      • 检查APP运行时应用程序CPU是否长时间处于90%以上(平均值小于90%即可)314

4. APP流量测试【了解】

  • 操作APP会与服务器交换数据,流量就是指这些交互数据的大小
  • 说明示例图:
    • 上行消息就是APP发送给服务器的数据,下行消息是APP接收的服务器的数据(一般下行消息更多)
1)指标
  • SoloPi指标:网络
2)测试步骤
  • 需求:打开网易严选首页(因为一般首页消耗流量最多),上下动态滑动20秒,获取消耗的网络流量。
  • 步骤:
    1. 打开SoloPi工具,勾选流量监控指标网络
    2. 进入APP,操作上述业务
    3. 查看流量统计结果

5. APP电量测试【了解】

模拟器没有电池,无法进行电量测试
  • 定义:APP应用时对电池电量的消耗
  • 常见的用电量大的场景:
    • 定位/实时定位
    • 网络传输(打游戏、刷剧等)
    • 屏幕常亮
    • wake_locker(锁屏解锁)
  • 常见监控方法:
    • 系统自带的接口:在内置的setting中,查看各应用的耗电情况
      • 该方案不能检测固定一段时间内的电池精准消耗
    • 软件工具检测:使用SoloPi、AccuBattery等第三方软件来检测
  • 结果分析:
    • 基准结果进行比对(一般由产品经理给出,或过往的数据)
    • 同行竞品比对
1)指标
  • SoloPi -> 性能测试 -> 电池
2)测试步骤
  • 需求:打开网易严选,进入首页,上下动态滑动2分钟,获取耗电量数据
  • 步骤:
    1. 打开SoloPi的电量性能指标监控
    2. 进入APP,完成需求业务的操作
    3. 保存后,查看SoloPi监控到的数据指标情况

6. 流畅度测试

  • 场景:对动画播放、图片切换的流畅度的测试(没有这类功能的就不需要流畅度测试)
1)监控指标
建议使用SoloPi监控帧率时,勾选“游戏帧率”。因为“帧率”监控得到的数据需要经过计算后才能得知帧率值,而“游戏帧率”指标监控得到的就是直接的帧率值,不需要计算
  • SoloPi提供了监控指标:帧率FPS
    • FPS:Frames per second,即:GPU在一秒内绘制的帧数。(简单理解为一秒内呈现给用户的图片数)
    • FPS值越高,画面越流畅
  • 流畅度要求:
    • 让大脑认为动作是连续的,至少需要每秒10~12帧
    • 想到达流畅的程度,至少要到达每秒24帧
    • 如果能维持在60帧是最佳的
  • 当页面多为静态时,FPS值小很正常
  • 若页面多为动态,例如上下滑动加载,FPS值比较大(至少在24帧以上才算作流畅)
2)测试步骤
  • 需求:打开网易严选,进入首页,上下动态滑动2分钟,记录FPS值
  • 步骤:
    1. 打开SoloPi工具,勾选"游戏帧率"
    2. 进入APP,执行业务操作
    3. 记录数据,查看运行帧率结果458
    • 需要根据手机性能、网络情况来综合判断APP的流畅度,若手机与网络都没问题,这种情况下,FPS低大概率是APP的问题

7. APP启动测试

  • 启动速度:从启动APP到主页面加载完成的速度
  • 启动分类:冷启动、热启动
    • 冷启动(常用):启动app进程,这种方式叫冷启动
    • 热启动:将APP从后台置于前台
1)指标
  • SoloPi提供了"启动耗时计算"用于测试APP的启动速度,但该测试是由人工进行操作并计算,不太准确,后续会提供使用ADB命令进行测试的更准确的方法。
2)测试步骤
  • 需求:打开网易严选,测试APP冷启动和热启动速度
  • 步骤:
    1. 打开APP,同时单击"开始录制"
    2. 等待APP完全加载完成,同时单击"结束录制"
    3. 自动计算得到冷启动时间(该误差太大,建议等学习ADB命令后,使用ADB命令进行测试)413
    • 热启动则需要先打开APP,然后将APP置于后台,随后单击开始录制的同时,将后台APP置于前台,等待界面加载完毕后结束录制

五、ADB

1. 基本介绍

  • ADB工具:一种允许计算机与Android设备通信的命令行工具
  • ADB的作用:
    1. 功能(含自动化)测试:模拟用户的各种操作(点击、滑动、输入等)
    2. 专项测试:安装、卸载、文件传输等操作
    3. 性能测试:采集性能指标数据、记录日志、monkey稳定性测试等
  • 工作原理:
    • 下载的sdk包中的adb.exe就是ADB客户端;其他程序文件是用作ADB服务器,负责将adb.exe上的命令传到手机上
    • Daemon守护进程是安卓手机自带的,手机上的adb daemon会负责接收adb传送过来的命令,并将结果回传给电脑(ADB服务器),最后在ADB客户端上显示

2. 配置环境

  • 找到adb.exe的存放地址:Android-sdk-windows/platform-tools,随后复制该地址,在环境变量中新建D:\android-sdk-windows\platform-tools,随后打开 cmd 命令行,通过命令adb version验证配置成功
    • 配置环境变量:
      1. 新增环境变量:ANDROID_HOME=D:\android-sdk (这里是你实际的SDK解压地址)
      2. 在Path环境变量中添加:%ANDROID_HOME%tools
      3. 在Path环境变量中添加:%ANDROID_HOME%platfrom-tools
      4. 打开cmd命令行,输入命令adb --version查看是否配置成功

3. 🌟🌟🌟ADB命令

注意,在执行下列adb命令之前,需要先连接物理机设备,或打开mumu模拟器等模拟手机设备的软件。此处学习使用的是mumu模拟器,当然也可以使用自己的手机连接电脑的USB接口。如果是真机,需要开启手机的USB调试模式,然后直接使用数据线连接
以下的命令均是在PC端cmd命令行执行的adb命令
1)adb devices --> 显示系统中全部接入的设备
  • 结果示意图:
    • 这里的daemon not running指的是本机的ADB Server(服务端)未启动,所以系统在启动本机的服务端。
      • Server启动后,会立刻扫描所有USB接口和局域网内的TCP/IP设备,扫描到在线手机后,会立刻与每一台手机的adb daemon 守护进程建立连接,并维持长连接
    • adb 命令发生必须指定某一个手机,不能广播发送给所有建立连接的在线手机
    • 第五行中显示的是:设备名称 设备状态。此处我们可以看到,目前在线的设备名为emulator-5554,状态为offline(离线),这说明自动连接未成功。
    • 我们发现在devices显示列表中,没有mumu模拟器对应的移动端模拟设备,所以需要我们使用命令进行手动连接,详情见手动连接命令adb connect 设备IP
2)开启/关闭ADB服务
  • 开启ADB服务:adb start-server
    • 通常不使用,该命令会检查ADB服务是否启动,若已启动,则该命令不执行。
    • 在执行adb devices命令时会自动执行一次adb start-server
  • 关闭ADB服务:adb kill-server
    • 通常用于接入设备状态异常、ADB无响应等情况时关闭ADB服务
3)adb connect 设备IP --> 手动连接设备(确保移动端设备已经接入同一局域网)
  • 命令:adb connect 设备IP
  • 示例:
    1. 先找到mumu模拟器的ADB端口信息
    2. 随后在cmd命令行输入adb connect 127.0.0.1:5555以建立连接。完成后再使用adb devices命令查看连接的设备信息,可以看到成功连接到了mumu模拟器。
该命令通常用于连接同一局域网下的移动端设备
  • 移动端设备通过USB接口与PC端连接,会在PC端启动ADB服务后被自动扫描并建立连接。而与PC处于同一局域网下的移动端设备则无法被自动扫描,需要用户通过ADB命令adb connect 设备IP来手动添加。
  • 添加完毕后,PC会直接向该IP发起TCP连接请求,TCP连接建立成功后,即可对该设备发送ADB命令
4)adb disconnect 设备IP --> 手动断开设备
  • 示例:adb disconnect 127.0.0.1:5555
5)adb install APK文件 --> 安装软件
此处的APK文件应该处于ADB客户端所在的PC端中,安装时需要给出文件存放具体位置
  • 命令:adb install APK文件
  • 选项:[-r] 覆盖安装时保留原有数据和缓存文件。adb install -r APK文件,一般用于APP的覆盖更新
  • 示例:adb install tpshop.apk
6)adb uninstall APK包名 --> 卸载软件
  • 命令:adb uninstall APK包名
  • 选项:[-k] 卸载时保留数据和缓存文件
  • 示例:adb uninstall com.tpshop.malls
    • 安卓软件包名的命名一般是该软件的域名的倒序。例如,百度的域名是www.baidu.com,其包名就是com.baidu.xxxxx
7)adb shell pm list packages -3 --> 查看已经安装的第三方软件包
  • 命令:adb shell pm list packages -3
    • pm:package manage / 包管理
    • -3:表示第三方
8)查看正在打开的 APP软件包名/页面名
注意,windows下的adb命令 使用的是findstr,而Mac/Linux下的命令使用的是grep
  • 命令:
    • windows:adb shell dumpsys window | findstr mCurrentFocus
    • Mac/Linux:adb shell dumpsys window | grep mCurrentFocus
      • dumpsys:输出系统信息
      • |(管道符) :将管道符前边命令的输出作为后边命令的输入。
      • findstr/grep:筛选过滤。找出mCurrenFocus(当前焦点页面)
  • 示例结果:
    • 查询得到的页面名,将用于应用启动和关闭的adb命令
    • 指定某个设备执行ADB命令,需要在adb后添加 -s 目标设备ID
    • 最终显示出当前的 软件包名/页面名,即如上图所示的:com.netease.yanxuan/com.netease.yanxuan.module.mainpage.activity.MainPageActivity
  • 示例:
    • 如图所示,打开一个APP,会依次出现三个页面,即:开屏Logo页面、广告页面,以及首页页面。区分不同页面的方法就是:显示页面的内容不同,就属于不同页面
9)adb shell pm clear apk包名 --> 清除应用数据与缓存
  • 示例:adb -s 设备ID shell pm clear com.tpshop.malls
10)启动、停止应用
启动的ADB命令必须找准启动页,也就是Logo或广告出现的瞬间,使用dumpsys对应的ADB命令查看此时的 软件包名/页面名,并使用该启动页进行启动测试
  • 启动:
    • 命令:adb shell am start 包名/Acticity页面名
      • 此处的 / 不是二选一,而是通过dumpsys命令输出的系统信息就是这种形式,详情见第8个命令,即查看正在打开的 APP软件包名/页面名
      • am:ActivityManager,即页面管理器
    • 示例:adb shell am start com.tpshop.malls/com.tpshop.
  • 停止:
    • 命令:adb shell am force-stop 包名
进阶
  • 启动并查看冷热启动、启动耗时、启动页等数据
    • 命令:adb shell am start -W -S -R 启动次数 包名/启动页面名
      • -W:显示启动类型(冷启动、热启动)、启动耗时、启动页面,主要看TotalTime
      • -S:代表冷启动,会先关闭软件再重新启动
      • -R:代表该软件要启动多次,后跟启动次数
        • 这三个参数都是可选的,不强制使用
  • 说明:要理解启动时间,需要先搞清楚三个启动耗时的相关参数:
    • ThisTime:该页面/启动页(Activity)启动耗时(毫秒) --> 最后一个Activity的启动耗时(通常是指启动页启动完成后,用户最终看到的首页从开始创建到完全渲染并显示所花费的时间)
    • :即应用自身启动耗时 = ThisTime + 应用application等资源启动时间(毫秒)--> 所有Activity启动的耗时总和
    • WaitTime:即系统启动应用耗时 = TotalTime + 系统资源启动时间(毫秒)
      • WaitTime,即等待APP应用的首页内容全部加载展示出来所耗费的时间
11)🌟🌟🌟🌟🌟adb logcat --> 获取手机日志
  • 命令:adb logcat > 指定保存路径及指定文件 --> 将日志保存至指定路径的指定文件中,若该文件不存在,则创建
  • 示例:抓取APP日志信息并保存到1.txt文件中
    • 执行命令adb logcat > d:\Log\1.txt
    • 执行完成后按ctrl+C结束日志获取
    • 查看获取到的1.txt日志文件
日志等级
  • 日志等级从上到下、从轻微到严重,分为以下几个等级:
    • V(Verbose)
    • D(Debug)
    • I(Info)
    • W(Warn)
    • E(Error)
    • F(Fatal)
    • S(Silent) 441
  • 除此之外,日志中还可以搜索异常关键字,参考稳定性测试中的异常关键字
12)adb push 电脑路径 手机路径 --> 将文件从电脑上传到手机
注意,这里需要与APK软件包下载进行区分,这个指令是用于文件传输的,而adb install 命令则是将电脑上的APK安装包在手机上安装,并没有将APK传输到手机中,只是执行了安装过程
  • 注意:手机的文件存储根目录为
  • 图例说明
    • adb -s 127.0.0.1:16384 shell:该命令是用于进入指定设备的操作系统中,进入后只能使用Linux命令进行操作
    • 操作结束后可使用exit命令退出
13)adb pull 手机路径 电脑路径 --> 将文件从手机下载到电脑的对应路径中
  • 示例:adb pull sdcard/test.txt d:/Log
14)adb shell dumpsys meminfo 包名 --> 查看内存
注意,使用该命令前,需要先在移动端打开对应的软件,才能查看该软件的内存情况,且该命令显示的是此刻的APP内存占用情况
  • 示例:查询网易严选APP的内存占用情况:adb -s 127.0.0.1:5555 shell dumpsys meminfo com.netease.yanxuan

  • 该命令可以用于测试APP是否出现内存泄露的问题 --> 打开APP后,可以多次执行该命令,若Total PSS在稳定值范围内波动,则该APP正常;若持续走高,则说明存在内存泄露问题

  • adb shell dumpsys meminfo,该命令后不加包名,将会显示整个系统的内存使用情况,可以由此计算出某个APP的内存占用率

    • 系统的内存总占用只要看Total RAM即可
15)adb shell top --> 实时动态查看CPU信息
  • 该命令可以查看系统资源的使用情况
16)APP进程ID查看与APP占用CPU信息查看(静态数据)
  • 查看APP进程ID的命令:adb shell ps | findstr 包名
  • 查看APP占用CPU的信息:adb shell dumpsys cpuinfo | findstr 进程ID
  • 示例:以网易严选APP为例
17)adb shell dumpsys battery --> 查看手机剩余电量
  • 示例
18)adb shell cat /proc/进程ID/net/dev --> 查看流量
注意,该命令需要先找到对应APP的进程ID,使用命令:adb shell ps | findstr 包名
  • 示例

六、稳定性测试

  • 稳定性定义:APP程序能的运行
  • 稳定性测试:在APP应用中,挖掘可能出现的异常
    • 随意操作/随机测试,通常是通过使用monkey工具来实现的

1. Monkey基本介绍

  • monkey测试就像是一只猴子在玩手机,它会乱点、随意操作手机,用以探索可能出现的异常
  • 作用:模拟用户随机进行触摸屏幕、滑动、按键等操作,对程序进行稳定性测试,检查程序异常情况
  • Monkey,是Android系统中自带的一款稳定性测试工具,由java语言编写。一般位于Android系统中的/system/framework/monkey.jar

2. Monkey命令

  • adb -s 设备ID shell monkey -p 包名 -v 执行次数 > 结果文件(如tpshop.log)
    • -s:指定设备ID,确保ADB命令发送给指定ID的设备(可通过adb devices命令查看)
    • -p:指定包名
    • -v:log日志的详细程度(最高支持'-v -v -v',这是最详细的)
    • 执行次数:要执行随机操作的次数
    • : 将前边操作的结果日志 重定向/保存 到右边的目标日志中

3. 操作步骤

  1. 执行命令adb -s 127.0.0.1:5555 shell monkey -p com.netease.yanxuan -v 1000 > d:\Log\aa.log
  2. 找到对应路径,发现成功创建日志文件并写入日志信息
  3. 检查日志中是否存在异常关键字,若存在,需要提交给开发确认

4. 异常关键字

  • 常见关键字:
    • 无响应:在日志中搜索“ANR”、timeout
    • 崩溃:在日志中搜索“NullPointerException” 或 Exception
    • 闪退:memory out、memory Leak
    • 错误:error、Err

贡献者

The avatar of contributor named as freeway348 freeway348

文件历史

撰写