字数
9004 字
阅读时间
36 分钟
一、项目概述
1. 项目介绍
前端:https://hmshop-test.itheima.net/
后端:https://hmshop-test.itheima.net/admin- 项目:TPSHOP,类似于淘宝、京东等电商平台
- 项目类型:电商平台
- 项目特点:
- 业务通用性强
- 更贴近生活,应用范围广
2. 核心业务及模块
项目角色:买家、卖家等
项目业务:下单业务、发货业务等
系统及模块:
- 买家:注册登录、商品搜索、购物车、下单、支付、售后
- 卖家:会员管理、商品管理、订单管理、营销管理、物流管理、供应商管理
如何了解项目?
- 先了解项目背景:新项目/迭代项目/重构的项目?
- 先找文档 + AI查询了解 + 找人(产品/开发)
- 抓核心业务功能:购买、上架、下架、售后
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环境变量:
- 下载并安装Android SDK到非中文目录下
- 在系统变量中新建变量
ANDROID_HOME,变量值为SDK的安装目录 - 在系统变量的Path中设置环境变量
%ANDROID_HOME%\tools和%ANDROID_HOME%\platform-tools - 打开cmd命令行,输入
adb --version查看环境变量是否成功设置
- 同理,在环境变量中设置jdk为系统变量
- 配置Android SDK环境变量:
5. 测试范围
注意区分APP测试与Web端测试的区别。APP测试将非功能测试划分为了性能测试和专项测试两大类,且APP的性能测试与Web端的性能测试不同,APP端注重的是APP对手机资源占用情况的测试,而Web的性能测试是对服务器的性能测试- 功能测试
- 业务测试
- 功能模块测试
- 性能测试
- CPU、内存占用
- 启动速度
- 流量、电量消耗
- 流畅度
- 稳定性
- 专项测试
- 安装卸载升级
- push消息推送
- 交叉事件测试
- 用户体验测试
- 兼容性测试
APP端与Web端的相同与不同之处
相同点
- 同一项目APP和Web使用的后端服务器是相同的
- 前后端默认都使用HTTP协议进行交互(也有些APP使用socket进行交互)
- APP和web端都需要功能测试
不同点
JSON最常用的格式是对象的键值对。例如:{"username":"Lisi", "age":18}- 架构不同:APP端是C/S架构,Web端是B/S架构
- 传输格式不同:APP端前后端交互的数据格式以json为主,web端交互的数据格式为json/HTML等,种类更多
- 测试范围(非功能):APP测试还有APP专项、APP性能;Web端测兼容性、易用性等
二、APP功能测试
- 单模块测试步骤:
- 熟悉需求:(核心)测试目的 + 条件
- 提取测试点,编写测试用例
- 测试点梳理(这里仅针对功能测试的测试点进行梳理分析):
- 显示:是否与UI原型图一致,是否正常
- 操作(含规则):能否成功
- 测试点梳理(这里仅针对功能测试的测试点进行梳理分析):
- 测试用例评审(与其他测试人员交叉评审,或提交给AI评审)
- 执行测试用例
- 记录执行过程,登记跟踪缺陷
- APP功能测试中,以注册登录功能为例,常常需要用户勾选同意协议,点击协议可跳转查看协议内容,这些APP端的网页统称为H5(第5代HTML),本质上就是在APP中嵌入了浏览器的驱动,然后以浏览器的形式打开并渲染了一个网页
- 登录页面存在可点击的协议条款

- 打开后查看到的H5页面内容:

- 打开后查看到的H5页面内容:
- 登录页面存在可点击的协议条款
【扩展】第三方支付原理
- 原理图:

- 业务服务器:当前APP的后台
- 第三方服务器:微信、支付宝等支付软件的服务器
- 过程描述:
- 请求服务器获取能否下单
- 服务器确认能够下单成功
- APP点击立即支付后,跳转到第三方支付APP进行支付(实际上钱是在第三方支付平台上进行流转的)
- 第三方支付后,返回支付的结果(成功)
- APP完成支付后,自动刷新状态,并向业务服务器说明刚才的订单已经完成支付,现在的订单状态如何
- 第三方服务器立即将订单支付信息调给业务服务器,告诉它金额是否到账
- 业务服务器确认收到金额,立即修改订单状态(已支付)
- 业务服务器将修改后的订单信息回送给业务APP
三、🌟APP专项测试(尽量背诵)
专项测试的测试点一般都相同,背一背就好。可以按照Xmind文件进行背诵,大方向知道就行了。Xmind文件分享:https://pan.baidu.com/s/1i0FxtgRby20Oxw3ohrlhIw 提取码: ripa- 说明:在不同的移动设备上能够持久、稳定运行的APP程序
- 测试环境:
- 真机/模拟器
- App安装包(安卓安装包后缀 --> .apk;RS手机安装包后缀 --> .ipa)
- 测试范围:
- 安装卸载升级
- 兼容性
- push消息推送
- 交叉事件(也叫干扰测试,例如:在通话过程中使用支付功能是否能成功)
- 用户体验
1.安装卸载升级
- 使用前:确保安装、升级功能正常
- 使用后:确保卸载功能正常
1)安装测试关注点
- 正常场景:
- 来源:从不同的安装渠道安装(APP商城、手机助手、直接下载apk或ipa文件安装)
- 去向:在不同的操作系统版本上安装
- 不同的安装路径(安装到手机上、安装到SD卡上)
- 卸载后重装
- 正在运行时覆盖安装
- 异常场景:
- 安装时出现异常(关机、断网),恢复后能否继续安装
- 安装时存储空间不足
- 安装时手动取消安装
- 低版本覆盖高版本安装(原先是高版本,能否使用低版本进行覆盖安装)
- 不兼容的CPU架构
- 低版本手机安装高版本要 求的APP
2)卸载测试关注点
- 正常卸载(APP手动卸载、工具卸载)
- 运行时卸载
- 取消卸载
- 卸载异常中断后是否能继续卸载
- 卸载后无数据残留
3)升级测试关注点
升级后要观察升级前的数据是否正常,必须确保升级后数据正常,才能推送升级版本上线- 从临近版本升级
- 跨版本升级
- 不同安装渠道升级(应用商城、手机助手)
- 升级提醒成功(可不提醒、可以提示升级、强制升级)
- 应用内升级时非WIFI提醒
2. APP兼容性
- 说明:APP在不同的机型上由于软件、硬件等不同可能出现各种各样的问题,因此需要做兼容性测试。
- 测试范围:
- 手机型号:覆盖市面上的主流机型(Android:vivo、小米、OPPO、华为)考虑APP线上排名
- 可以在testin云测平台进行兼容性测试(远程真机)
- 系统版本:Android系统、ios系统
- 分辨率:1080×1920、720×1280
- 屏幕尺寸:5.5、4.7
- 网络:3G、4G、5G、WIFI
- 应用兼容性:
- 与手机硬件兼容:home键、电源开关键、音量调节键等
- 与外部硬件设备兼容:耳机、蓝牙等
- 与操作系统软件兼容:系统定位功能、时间调节功能等
- 手机型号:覆盖市面上的主流机型(Android:vivo、小米、OPPO、华为)考虑APP线上排名
3. push消息推送测试
- 什么是push消息?
- push消息:APP给用户推送的各种消息
- 前提:需要在手机中"设置" -> "通知"进行push消息的设置
1)两种模式 --> Pull和Push
- Pull(拉)客户端主动获取:客户端固定时间主动向服务器获取消息
- Push(推)客户端被动接受:当服务器有消息更新时,主动发送到客户端
2)推送流程
- 服务器有更新消息 --> 推送服务器 --> APP --> 用户
- 常见推送服务器(了解):

- 常见推送服务器(了解):
3)测试点设计
Push消息推送的设置:
- APP服务器设置(交给推送服务器):
- 推送内容
- 推送时机
- 推送频率
- 推送人群(全部用户/部分用户)
- 手机端设置:
- 是否接收通知
- 提醒位置等
- APP服务器设置(交给推送服务器):
🌟Push消息测试的关注点(测试点):
- APP服务器设置测试点:
- Push消息是否按指定的业务规则推送
- 当Push消息是针对特定用户时,检查收到的Push与用户身份是否相符合
- 手机端设置测试点:
- 设置不接收推送消息时,用户是否会收到Push消息
- 设置push消息显示的位置,是否与配置一致
- 收到push消息,是否能正常打开跳转
- 其他测试:
- APP在前台使用时,收到push消息如何提示
- APP在后台使用时,收到push消息如何提示
- APP离线,是否能收到push消息
- APP服务器设置测试点:
4. 交叉事件测试
- 测试点设计:
- 🌟APP运行时接打电话
- 🌟APP运行时收发信息
- 🌟APP运行时连接蓝牙设备
- APP运行时旋转屏幕
- APP运行时切换网络(4G、WIFI)
- APP运行时电量告警、插拔充电器
5. 易用性测试(用户体验测试)

四、性能测试
实际工作中,对以下这些指标的检测一般以小时为单位- APP性能:测试APP使用过程中占用硬件资源(cpu、内存、流量、电量)的使用情况
- APP性能测试分类:
- App运行时占用手机硬件资源情况(性能指标)
- App稳定性(长时间运行是否出现异常)
- APP性能测试关注点:
- APP使用时对cpu、内存的占用情况
- APP使用时是否流畅
- APP使用时电量流量的消耗情况
- APP的启动时间是否过长
- APP是否能长时间稳定运行
1. 如何测试APP性能
使用mumu模拟器时,机型不要使用VIVO,该机型可能会导致开启了悬浮窗,但仍然提示未获取到悬浮窗权限- 使用工具或命令进行测试
- 工具:
- Android:SoloPi --> 一个由支付宝开源的Android自动化工具,具备录制回放、性能测试等功能
- ios:Xcode Instrument --> 苹果官方提供的性能测试分析工具集,深度集成于Xcode开发环境
- SoloPi功能:
- 性能测试:记录并监控APP应用的性能指标;还能进行性能加压模拟,复现APP应用在性能差、网络环境不佳的情况下的表现
- 录制回放:能将用户的操作记录下来,支持在各个设备上进行回放
- 一机多控:操作一台主机设备来控制多台从机设备,进行重复冗余的兼容性测试,能极大提升兼容性测试的效率
2. 性能内存监控
1)指标
每个程序运行时都需要将代码和数据放入内存中,内存不足则程序无法正常运行。- SoloPi工具提供了两个内存的监控指标:Private dirty 和 PSS
- Private dirty(私有内存):进程独占内存,也就是进程销毁时可以回收的内存容量
- PSS(实际使用内存):将跨进程共享页也加入进来,进行按比例计算PSS。这样能比较准确的表示进程占用的实际物理内存
- 实际使用内存=共享内存+私有内存
- 举个例子:扬声器占有共享内存,音乐播放器、接打电话等占用私有内存
- 图例说明:

2)内存问题的现象
a. 内存泄露(memory leak)
- 定义:内存泄露指的是程序在申请内存后,退出时无法释放已申请的内存空间。
- 单次内存泄漏的危害可以忽略,但内存泄露堆积后果严重,无论有多少内存,迟早会被占用完。因此,内存泄露最终会导致内存溢出。
b. 内存溢出(out of memory)
- 定义:内存溢出是指程序在申请内存时,没有足够的内存空间供其使用,就出现了内存溢出的异常问题
3)性能内存测试步骤
- 需求:浏览网易严选首页的平均内存消耗情况
- 步骤:
- 打开SoloPi工具,配置内存监控


- 进入APP,操作上述业务,观察运行时的内存指标(监控录制完毕后,在SoloPi中查看监控结果)

- 查看内存运行结果
- 检查程序实际使用的内存值PSS

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

- 检查APP运行时应用程序CPU是否长时间处于90%以上(平均值小于90%即可)
4. APP流量测试【了解】
- 操作APP会与服务器交换数据,流量就是指这些交互数据的大小
- 说明示例图:

- 上行消息就是APP发送给服务器的数据,下行消息是APP接收的服务器的数据(一般下行消息更多)
1)指标
- SoloPi指标:网络
2)测试步骤
- 需求:打开网易严选首页(因为一般首页消耗流量最多),上下动态滑动20秒,获取消耗的网络流量。
- 步骤:
- 打开SoloPi工具,勾选流量监控指标网络
- 进入APP,操作上述业务
- 查看流量统计结果
5. APP电量测试【了解】
模拟器没有电池,无法进行电量测试- 定义:APP应用时对电池电量的消耗
- 常见的用电量大的场景:
- 定位/实时定位
- 网络传输(打游戏、刷剧等)
- 屏幕常亮
- wake_locker(锁屏解锁)
- 常见监控方法:
- 系统自带的接口:在内置的setting中,查看各应用的耗电情况
- 该方案不能检测固定一段时间内的电池精准消耗
- 软件工具检测:使用SoloPi、AccuBattery等第三方软件来检测
- 系统自带的接口:在内置的setting中,查看各应用的耗电情况
- 结果分析:
- 与基准结果进行比对(一般由产品经理给出,或过往的数据)
- 与同行竞品比对
1)指标
- SoloPi -> 性能测试 -> 电池
2)测试步骤
- 需求:打开网易严选,进入首页,上下动态滑动2分钟,获取耗电量数据
- 步骤:
- 打开SoloPi的电量性能指标监控
- 进入APP,完成需求业务的操作
- 保存后,查看SoloPi监控到的数据指标情况
6. 流畅度测试
- 场景:对动画播放、图片切换的流畅度的测试(没有这类功能的就不需要流畅度测试)
1)监控指标
建议使用SoloPi监控帧率时,勾选“游戏帧率”。因为“帧率”监控得到的数据需要经过计算后才能得知帧率值,而“游戏帧率”指标监控得到的就是直接的帧率值,不需要计算- SoloPi提供了监控指标:帧率FPS
- FPS:Frames per second,即:GPU在一秒内绘制的帧数。(简单理解为一秒内呈现给用户的图片数)
- FPS值越高,画面越流畅
- 流畅度要求:
- 让大脑认为动作是连续的,至少需要每秒10~12帧
- 想到达流畅的程度,至少要到达每秒24帧
- 如果能维持在60帧是最佳的
- 当页面多为静态时,FPS值小很正常
- 若页面多为动态,例如上下滑动加载,FPS值比较大(至少在24帧以上才算作流畅)
2)测试步骤
- 需求:打开网易严选,进入首页,上下动态滑动2分钟,记录FPS值
- 步骤:
- 打开SoloPi工具,勾选"游戏帧率"
- 进入APP,执行业务操作
- 记录数据,查看运行帧率结果

- 需要根据手机性能、网络情况来综合判断APP的流畅度,若手机与网络都没问题,这种情况下,FPS低大概率是APP的问题
7. APP启动测试
- 启动速度:从启动APP到主页面加载完成的速度
- 启动分类:冷启动、热启动
- 冷启动(常用):启动app进程,这种方式叫冷启动
- 热启动:将APP从后台置于前台
1)指标
- SoloPi提供了"启动耗时计算"用于测试APP的启动速度,但该测试是由人工进行操作并计算,不太准确,后续会提供使用ADB命令进行测试的更准确的方法。
2)测试步骤
- 需求:打开网易严选,测试APP冷启动和热启动速度
- 步骤:
- 打开APP,同时单击"开始录制"

- 等待APP完全加载完成,同时单击"结束录制"

- 自动计算得到冷启动时间(该误差太大,建议等学习ADB命令后,使用ADB命令进行测试)

- 热启动则需要先打开APP,然后将APP置于后台,随后单击开始录制的同时,将后台APP置于前台,等待界面加载完毕后结束录制
- 打开APP,同时单击"开始录制"
五、ADB
1. 基本介绍
- ADB工具:一种允许计算机与Android设备通信的命令行工具
- ADB的作用:
- 功能(含自动化)测试:模拟用户的各种操作(点击、滑动、输入等)
- 专项测试:安装、卸载、文件传输等操作
- 性能测试:采集性能指标数据、记录日志、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验证配置成功
- 配置环境变量:
- 新增环境变量:ANDROID_HOME=D:\android-sdk (这里是你实际的SDK解压地址)
- 在Path环境变量中添加:%ANDROID_HOME%tools
- 在Path环境变量中添加:%ANDROID_HOME%platfrom-tools
- 打开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 - 示例:
- 先找到mumu模拟器的ADB端口信息

- 随后在cmd命令行输入
adb connect 127.0.0.1:5555以建立连接。完成后再使用adb devices命令查看连接的设备信息,可以看到成功连接到了mumu模拟器。
- 先找到mumu模拟器的ADB端口信息
该命令通常用于连接同一局域网下的移动端设备- 移动端设备通过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

- 安卓软件包名的命名一般是该软件的域名的倒序。例如,百度的域名是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(当前焦点页面)
- windows:
- 示例结果:

- 查询得到的页面名,将用于应用启动和关闭的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)

- 除此之外,日志中还可以搜索异常关键字,参考稳定性测试中的异常关键字
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',这是最详细的)
- 执行次数:要执行随机操作的次数
: 将前边操作的结果日志 重定向/保存 到右边的目标日志中
- -s:指定设备ID,确保ADB命令发送给指定ID的设备(可通过
3. 操作步骤
- 执行命令
adb -s 127.0.0.1:5555 shell monkey -p com.netease.yanxuan -v 1000 > d:\Log\aa.log
- 找到对应路径,发现成功创建日志文件并写入日志信息

- 检查日志中是否存在异常关键字,若存在,需要提交给开发确认
4. 异常关键字
- 常见关键字:
- 无响应:在日志中搜索“ANR”、timeout
- 崩溃:在日志中搜索“NullPointerException” 或 Exception
- 闪退:memory out、memory Leak
- 错误:error、Err