App测试流程
2025-08-28 14:27:57 1 举报
AI智能生成
在执行App测试流程时,关键步骤通常包括了多个阶段,从初级的单元测试扩展到全面的系统验证。首先,单元测试集中于App中的最小可测试部分,确保每个功能模块按预期工作。接下来是集成测试,这一步骤确保了不同模块的协同工作,而不仅仅是单个模块的独立工作情况。随后进行系统测试,在整个App的环境中进行,来确保所有模块的集成产生了预期的整体行为。 接着是验收测试,通常涉及最终用户,以确保App满足商业需求。在这个阶段,App的行为和性能会在模拟真实世界使用情况的场景下被测试,包括用户界面的测试、数据保护以及兼容性测试等。在整个测试过程中,记录和管理缺陷也是一大关键任务。测试后,所有的数据被整理成详细文档,并对最终用户进行测试报告说明,以呈现发现的问题及其影响,帮助开发团队进行修復。
作者其他创作
大纲/内容
测试准备阶段
测试计划制定
测试范围确定:明确测试的功能模块和非功能需求
测试策略制定:确定测试类型、测试方法和测试深度
资源分配:测试人员、设备、环境等字段规划
风险评估:识别关键风险点和应对措施
测试用例设计
需求分析:基于PRD文档拆解测试点
用例编写
功能测试用例(正常/异常场景)
兼容性测试用例
性能测试用例
安全测试用例
用例评审:组织产品、研发、测试三方评审
测试执行阶段
功能测试
核心业务测试
账户管理功能
转账支付功能
理财购买功能
贷款申请流程
UI/UX测试
界面元素验证
交互流程测试
多语言支持
专项测试
弱网测试(2G/3G/4G/5G/WiFi切换)
弱网功能测试
场景
2G
3G
高延迟
高丢包
关注点
页面响应时间
页面呈现是否完整一致(图片、排版、数据)
无网络测试
场景
断网
断网重连
关注点
请求非本地数据超时,是否合理文案提示及重试机制
请求本地存储数据,是否正常加载且显示正常
断网重连
session一致性
页面状态是否恢复
数据提交是否正常
网络切换测试
场景
WiFi<->5G/4G/3G/2G
WiFi<->无网
2G<->3G<->4G<->5G
5G/4G/3G/2G<->无网
关注点
页面显示与交互
是否有崩溃、显示错乱
客户端服务器数据一致性
请求堆积的处理
用户体验关注
页面响应时间是否可接受,包括冷启动、热启动、页面切换、前后台切换、首屏时间、加载动画
页面呈现是否完整一致
超时文案是否符合定义
是否有超时重连、丢包重发机制
大流量风险时间,在弱网环境下更新升级、下载文件等大流量动作
中断测试(来电、视频、短信、低电量等场景)
稳定性测试
Monkey
adb shell monkey -p com.xueqiu.android --pct-touch 30 --pct-motion 30 \
--pct-syskeys 10 --pct-appswitch 20 --pct-flip 5 --pct-anyevent 5 \
-s 12345 --throttle 300 --ignore-crashes --ignore-timeouts \
--ignore-security-exceptions -v -v -v 200 > monkey_log.txt
--pct-syskeys 10 --pct-appswitch 20 --pct-flip 5 --pct-anyevent 5 \
-s 12345 --throttle 300 --ignore-crashes --ignore-timeouts \
--ignore-security-exceptions -v -v -v 200 > monkey_log.txt
常用选项:
-v :用于指定反馈信息级别,总共分 3 个级别
adb shell monkey -v -v -v 10
-s <seednumber>:用于指定伪随机数生成器的 seed(种子)值
adb shell monkey -s 123 10
--throttle <milliseconds>:每个事件结束后的间隔时间
adb shell monkey --throttle 300 10
-p: 用于约束限制,用此参数指定一个或多个包
adb shell monkey -p com.android.browser 10
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
--ignore-native-crashes:忽略本地代码导致的崩溃异常
--monitor-native-crashes:跟踪本地方法的崩溃问题
-v :用于指定反馈信息级别,总共分 3 个级别
adb shell monkey -v -v -v 10
-s <seednumber>:用于指定伪随机数生成器的 seed(种子)值
adb shell monkey -s 123 10
--throttle <milliseconds>:每个事件结束后的间隔时间
adb shell monkey --throttle 300 10
-p: 用于约束限制,用此参数指定一个或多个包
adb shell monkey -p com.android.browser 10
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
--ignore-native-crashes:忽略本地代码导致的崩溃异常
--monitor-native-crashes:跟踪本地方法的崩溃问题
事件选项:
--pct-touch:触摸事件
--pct-motion:滑动事件
--pct-appswitch:activity 之间的切换
--pct-pinchzoom:缩放事件
--pct-rotation:屏幕旋转事件
--pct-flip:键盘事件
--pct-anyevent:任意事件
注意:所有类型属性比例加起来不能超过 100
--pct-touch:触摸事件
--pct-motion:滑动事件
--pct-appswitch:activity 之间的切换
--pct-pinchzoom:缩放事件
--pct-rotation:屏幕旋转事件
--pct-flip:键盘事件
--pct-anyevent:任意事件
注意:所有类型属性比例加起来不能超过 100
日志分析:
程序无响应,ANR 问题:在日志中搜索 “ANR”
崩溃问题:在日志中搜索 “CRASH”
其他问题:在日志中搜索 “Exception”
程序无响应,ANR 问题:在日志中搜索 “ANR”
崩溃问题:在日志中搜索 “CRASH”
其他问题:在日志中搜索 “Exception”
兼容性测试
设备兼容性
覆盖主流机型(华为、小米、OPPO、vivo等)
不同屏幕尺寸适配
系统版本兼容性
Android各版本覆盖(最低支持版本至最新版本)
iOS各版本覆盖
安全测试
数据安全
敏感信息加密(AES、RSA)
数据传输安全(HTTPS、TLS1.2+)
本地数据存储安全
漏洞扫描
OWASP Top 10漏洞检测
反编译保护测试
日志安全测试
业务安全
交易防重放攻击
短信验证码防爆破
越权访问测试
性能测试
客户端性能
(adb和工具)
(adb和工具)
响应
(启动时间)
(启动时间)
冷启动
首次启动App的时间间隔(只是启动时间,不包括页面加载)
adb shell am start -W packageName/ActivityName(绝对路径,首个Activity)
标准:通常不超过1.5s
热启动
非首次启动App的时间间隔(只是启动时间,不包括页面加载)
按back键后再启动adb命令:adb shell am start -W packageName/ActivityName(绝对路径,首个Activity)
标准:通常不超过1s
完全启动
从启动到首页完全加载出来的时间间隔
有网启动
从发起跳转,到页面完全加载出来的时间间隔
无网启动
从发起跳转, 到页面完全加载出来的时间间隔
内存占用
测试点
空闲状态:切换至后台或者启动后不做任何操作,消耗最小
中强度状态:时间偏长的操作应用
高强度状态:高强度使用应用,可以跑monkey来测试
内存泄漏:应用内的内存没有释放,内存一直增加,系统内存一直减少
内存泄漏:应用内的内存没有释放,内存一直增加,系统内存一直减少
测试方法
adb shell dumpsys meminfo packageName
关注点
Native heap alloc:JNI层的内存分配
Dalvik heap alloc:Java层的内存分配
Total的PSS:应用真正占据的内存大小
CPU使用率
测试点
在空闲时间(切换至后台的消耗,基本没有大应用使用CPU)
在运行一些应用的情况下,CPU已占50%的情况下,观察应用程序占用CPU的情况
在搞负荷的情况下看CPU的表现(CPU占用在80%以上)
具体场景
应用空闲状态运行监测CPU占用率
空闲状态:应用按Home键退回到后台,不再占用系统的状态(通常灭屏半分钟后),CPU占用率=0%
空闲状态:应用按Home键退回到后台,不再占用系统的状态(通常灭屏半分钟后),CPU占用率=0%
应用中等规格运行监测CPU占用率
中等规格:模拟用户最常见的使用场景,CPU占用率≤30%
中等规格:模拟用户最常见的使用场景,CPU占用率≤30%
应用满规格长时间正常运行监测CPU占用率
Monkey测试,CPU占用率≤30%
Monkey测试,CPU占用率≤30%
应用正常运行期间检测CPU占用率峰值
正常运行:打开应用进行基本操作,CPU占用率≤50%
正常运行:打开应用进行基本操作,CPU占用率≤50%
测试方法
使用adb命令:adb shell top -m -s cpu |grep packageName
top cpu参数:
-m 显示最大数
-s 按指定列序号排序(1-x,默认是9)
-t 显示进程名称
-n 退出前刷新几次
-d 刷新间隔
如果反复进行某个操作,CPU占用过高且一直无法释放,那便可能存在风险
adb shell dumpsys cpuinfo |grep packageName
-m 显示最大数
-s 按指定列序号排序(1-x,默认是9)
-t 显示进程名称
-n 退出前刷新几次
-d 刷新间隔
如果反复进行某个操作,CPU占用过高且一直无法释放,那便可能存在风险
adb shell dumpsys cpuinfo |grep packageName
流量消耗
测试点
首次启动到完全加载完成耗流(冷启动)
非首次启动到完全加载完成耗流(热启动)
后台运行耗流
运行某个场景消耗的总流量
测试方法
使用测试工具Emmagee或者GT
FPS流畅度
测试方法
打开手机:开发者选项 -> profile GPU rendering -> in adb shell dumpsys gfxinfo
操作要测试的apk
cmd窗口输入:adb shell dumpsys gfxinfo packageName
得到一个矩阵数据,计算矩阵中帧率大于16的点所占比例,即为卡顿比
操作要测试的apk
cmd窗口输入:adb shell dumpsys gfxinfo packageName
得到一个矩阵数据,计算矩阵中帧率大于16的点所占比例,即为卡顿比
可以直接使用开发者选项自带的图表,打开手机:开发者选项 -> profile GPU rendering -> on screen as bars
操作要测试的apk
界面会显示一个统计数据表
操作要测试的apk
界面会显示一个统计数据表
GPU渲染
测试方法
手机自带的Debug GPU overdraw:
打开手机:开发者选项 -> Debug GPU overdraw -> show overdraw areas
打开被测的应用
打开手机:开发者选项 -> Debug GPU overdraw -> show overdraw areas
打开被测的应用
耗电量
测试点
测试手机安装apk前后待机功耗无明显差异
常见使用场景中能够正常进入待机,待机电流在正常范围内
长时间连续使用应用无异常耗电现象
测试方法
adb shell dumpsys batterystats |grep packageName
服务器性能
接口响应时间
吞吐量
单位时间内(秒s)处理请求的数量
QPS:一秒内处理查询的请求数量
TPS:一秒内处理事务的请求数量(多个操作/涉及数据修改的请求)
并发测试
定义:模拟多用户同时执行相同或不同操作
目的:验证系统在并发条件下的正确性和稳定性
场景:转账交易并发处理、账户余额并发查询
负载测试
定义:逐步增加系统负载直至预期最大值,达到性能瓶颈,寻求到拐点
目的:确定系统在预期负载下的性能表现
场景:日常业务高峰期的系统表现评估
压力测试
定义:超过系统正常负载能力的极端测试,系统能否稳定
目的:发现系统崩溃点及故障恢复能力
场景:双十一、春节红包等极端场景
adb常用命令
获取设备列表及设备状态:adb devices -l
获取所有应用列表:adb shell pm list packages
获取所有系统应用列表:adb shell pm list packages -s
获取所有第三方应用列表:adb shell pm list packages -3
Mac获取包名和界面名:adb shell dumpsys window windows |grep mFocusedApp
Win获取包名和界面名:adb shell dumpsys window windows |findstr mFocusedApp
安装apk:adb install 路径(adb install /Users/test.apk)
卸载apk:adb uninstall test.apk
发送文件到手机:adb push (电脑文件路径 手机中文件夹路径)
adb push /User/cwn/Decument/test.txt /sdcard
从手机中拉取文件:adb pull(手机中文件夹路径 电脑文件路径)
adb pull /sdcard/test.txt /User/cwn/Decument
cmd窗口查看手机的log:adb logcat
查看不同级别log:adb logcat \*:E
清除旧的log:adb logcat -c
将log写入文件中:adb logcat -v time >/User/cwn/Decument/log.txt
将log写入当前目录:adb logcat -v time >./log.txt
获取所有应用列表:adb shell pm list packages
获取所有系统应用列表:adb shell pm list packages -s
获取所有第三方应用列表:adb shell pm list packages -3
Mac获取包名和界面名:adb shell dumpsys window windows |grep mFocusedApp
Win获取包名和界面名:adb shell dumpsys window windows |findstr mFocusedApp
安装apk:adb install 路径(adb install /Users/test.apk)
卸载apk:adb uninstall test.apk
发送文件到手机:adb push (电脑文件路径 手机中文件夹路径)
adb push /User/cwn/Decument/test.txt /sdcard
从手机中拉取文件:adb pull(手机中文件夹路径 电脑文件路径)
adb pull /sdcard/test.txt /User/cwn/Decument
cmd窗口查看手机的log:adb logcat
查看不同级别log:adb logcat \*:E
清除旧的log:adb logcat -c
将log写入文件中:adb logcat -v time >/User/cwn/Decument/log.txt
将log写入当前目录:adb logcat -v time >./log.txt
测试工具
自动化测试工具
UI自动化:Appium、Airtest、Macaca
接口自动化:Postman、JMeter、RestAssured
性能测试:JMeter、LoadRunner、GT
云测试平台
设备云:Testin、WeTest、AWS Device Farm
安全测试:Fortify、Burp Suite、MobSF
内部工具
移动安全检查平台
金融交易模拟器
合规检查工具
测试报告与质量评估
缺陷管理
缺陷分级
致命(Block):导致系统崩溃或核心功能不可用
严重(Critical):主要功能失效
一般(Major):次要功能问题
轻微(Minor):UI问题或优化建议
缺陷跟踪
使用JIRA等工具全生命周期管理
测试报告
日报:每日测试进度和问题汇总
总结报告
测试覆盖率统计
缺陷分布分析
性能指标达标情况
风险评估和建议
准出标准
致命/严重缺陷解决率100%
功能测试用例通过率≥98%
性能指标符合SLA要求
安全漏洞全部修复或有效规避
特殊要求
金融业务专项测试
交易金额准确性验证
对账功能测试
日终批处理测试
监管合规测试
个人信息保护合规验证
金融消费者权益保护检查
反洗钱相关功能测试
生成环境验证
灰度发布验证
监控系统联动测试
应急回退方案验证
0 条评论
下一页