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