news 2026/7/28 21:11:56

智能体测开Day36

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
智能体测开Day36

app专项测试-兼容测试

对于web兼容测试:不同系统,不同浏览器,相同浏览器的不同版本

对于app的兼容测试:不同型号,不同系统,不同屏幕大小,不同分辨率的手机

手机的机型比较多,品牌比较多,分辨率比较多,屏幕大小比较多,造成需要测试的机型比较多

手工测试:

迭代测试:需要对Top50的机型进行测试

上线前:需要对Top20/10的机型进行测试,对之前有问题的机型进行测试

云平台测试:

testin

wetest

蒲公英云测

关注点:

1.操作系统 ios 8 9 10 11 android 5.0 6.0 7.0

2.分辨率 800*480 960 * 640

3.硬件的系统架构(32位 ,64 位)

4.rom 厂商 底层服务 。 miu oppo

5.网络兼容:蜂窝 wifi 弱网 流量

APP专项测试-交叉事件(中断测试)

在某个操作的过程中,另一个事件或者操作对其进行了干扰,或者在使用某个功能的过程中,同时使用另一个功能。验证多个APP同时使用时,是否有影响。

使用APP的过程中拨打/接听电话

使用APP的过程中发送/接收短信

使用APP的过程中发送/接收邮件

使用APP的过程中发送/接收微信

使用APP的过程中闹钟响了、使用计算器、相机、 查看天气等

使用APP的过程中使用蓝牙发送/接收文件

app运行,切换无线网络

APP专项测试-消息推送测试

推送设置:全部推送、部分推送 消息形式:弹窗、消息通知栏推送 测试点

测试消息推送按照设置的规则进行推送。

APP在后台运行下,能收到推送消息。

APP在锁屏状态下,能收到推送消息。

APP在网络断开重连后,能收到推送消息。

设置不接收推送消息,不能收到推送消息。

设置免打扰时间段,在免打扰的时间段内不能收到推送消息。在非免打扰的时间段内,能收到推送消息。

推送消息针对登录用户时,使用A登录后退出,使用B登录,应该只对B用户推送,也就是最后一个登录的用户。

使用真机来测试。

APP专项测试-稳定性测试

在一定压力下,长时间操作,观察app是否有功能问题、内存泄露、闪退、崩溃等问题

一般使用工具去模拟用户的操作:点击/旋转/放大/滑动等事件,通过大量的随机事件,来验证程序的稳定性

monkey工具去模拟稳定性测试

monkey工具

1)是Android自带的一个程序,放在system/bin/monkey。

2)可以模拟人的操作

3)通过adb命令来启动monkey工具

monkey命令

1)执行操作1000次,adb shell monkey -v-v-v 1000

2)查看monkey帮助文档 adb shell monkey --help

-p 指定包

[--ignore-crashes] [--ignore-timeouts] [--ignore-security-exceptions]

一般情况下,如果 monkey执行过程中碰到崩溃,超时,其他异常的情况,会停止运行,可以设置忽略,让monkey继续运行

-s 设置seed种子

-v 详细的日志信息 -v-v更详细的信息 -v-v-v最详细的

11个事件 设置事件的比重

[--pct-touch PERCENT] 触碰事件

[--pct-motion PERCENT] 滑动事件

[--pct-trackball PERCENT] 轨迹球事件

[--pct-syskeys PERCENT] 系统按键事件

[--pct-nav PERCENT] 基本导航栏事件

[--pct-majornav PERCENT] 主要导航栏事件

[--pct-appswitch PERCENT] app切换事件

[--pct-flip PERCENT] 键盘相关事件

[--pct-anyevent PERCENT] 任意事件

[--pct-pinchzoom PERCENT] 二指缩放

[--pct-permission PERCENT] 权限相关

3)设置事件比重

adb shell monkey --pct-touch 40 --pct-motion 20 --pct-trackball 20 --pct-pinchzoom 20 -v-v-v 1000 1>d:\apks\log.txt 2>d:\apks\error.txt

4)指定包

查看包名:adb shell pm list packages

adb shell monkey --pct-touch 40 -p com.mt.mtxx.mtxx --pct-motion 20 --pct-trackball 20 --pct-pinchzoom 20-v-v-v 1000 1>d:\apks\log.txt 2>d:\apks\error.txt

5)忽略异常

--ignore-crashes --ignore-timeouts --ignore-security-exceptions

adb shell monkey --pct-touch 40 -p com.zzb.memoryleak --pct-motion 20 --pct-trackball 20 --pct-pinchzoom 20 -v-v-v --ignore-crashes --ignore-timeouts --ignore-security-exceptions 1000 1>d:\apks\log.txt 2>d:\apks\error.txt

6)设置种子

adb shell monkey -s 1785467127536 --pct-touch 40 -p com.zzb.memoryleak --pct-motion 20 --pct-trackball 20 --pct-pinchzoom 20 -v-v-v --ignore-crashes --ignore-timeouts --ignore-security-exceptions 1000 1>d:\apks\log.txt 2>d:\apks\error.txt

分析日志文件

在日志中搜索ANR CRASH ERROR EXCEPTION等,看是否有异常

ANR:无响应

crash:崩溃

error:异常

exception:异常

常见的Java异常

1. NullPointerException (空指针异常)。

原因:尝试调用未初始化对象的方法或属性,例如访问空引用对象的成员变量。

解决:使用 Optional 类包装对象,或在调用前显式检查对象是否为null。

2. ArrayIndexOutOfBoundsException (数组越界异常)。

原因:访问数组时索引超过数组长度范围,例如访问长度为5的数组的第6个元素。

解决:通过 arr.length 检查索引范围,或使用增强型 for 循环遍历数组。

3. ClassCastException (类型转换异常)。

原因:强制将对象转换为不兼容的类型。

解决:转换前使用 instanceof 关键字校验类型。

4. ArithmeticException (算术异常)。

原因:数学运算错误,如除数为零。

解决:通过条件判断避免非法运算,例如检查除数是否为0。

常见编译时异常

1. IOException (输入输出异常)。

原因:文件不存在、网络中断等外部因素导致IO操作失败。

解决:使用 try-catch 捕获异常,或在方法签名中声明 throws 。

2. FileNotFoundException (文件未找到异常)。

原因:尝试打开不存在的文件路径。

解决:使用 File.exists() 方法检查文件是否存在。

APP专项测试-性能测试

服务端的性能:响应事件,吞吐量,错误率,并发用户数 cpu 内存 网络io 磁盘io

app的性能:app的启动时间,界面响应时间,内存,cpu的使用情况,单位时间内的流量消耗,单位时间内的耗电 量,FPS(帧率)

测试方式:1)adb命令 2)使用工具prefdog(性能狗工具)

app的启动时间

冷启动:app在后台没有运行的情况下,启动时间应该在1.5s以内

热启动:app在后台运行的情况下,启动时间应该在1s以内

命令:adb shell am start -W 包名/.activity

aapt dump badging d:/apks/meitu8.6.2.0.apk

adb shell am start -W com.mt.mtxx.mtxx/.TopViewActivity

界面响应时间

手工测试:掐表

自动化测试:使用python代码去记录时间差

内存,cpu

空闲状态下(将app放在后台运行),查看内存,cpu的使用情况

中等状态下(手动使用app一段时间),查看内存,cpu的使用情况

高强度状态下(使用monkey去执行),查看内存,cpu的使用情况

内存:

adb shell dumpsys meminfo 包名

adb shell dumpsys meminfo com.mt.mtxx.mtxx

1024byte=1kb

1024kb=1mb

1024mb=1G

1024G=1T

CPU

空闲状态下(将app放在后台运行),查看cpu的占比 0%

中等状态下(手动使用app一段时间),查看cpu的占比 <30%

高强度状态下(使用monkey去执行),查看cpu的占比 <50%

adb shell dumpsys cpuinfo 查看所有的app的cpu占比

adb shell dumpsys cpuinfo | findstr "mt" 查看某个包的cpu占比

adb shell dumpsys cpuinfo 包名

adb shell dumpsys cpuinfo com.mt.mtxx.mtxx 根据包名查看

adb shell top -d 3| findstr com.mt.mtxx.mtxx 每个3s去打印cpu的使用

adb shell top -s 10 根据内存占比情况排序去查看内存,cpu的使用

adb shell top -s 9 根据cpu占比情况排序去查看内存,cpu的使用

FPS

帧率:当帧率高于24时,就认为手机屏幕是连贯的,当app是游戏app是,需要高于30,否则会出现卡顿

前提打开:开发者选项--》Gpu呈现模式--》adb shell dumpsys...

adb shell dumpsys gfxinfo 包名

adb shell dumpsys gfxinfo com.mt.mtxx.mtxx

60的帧率 60/s 60/1000ms 1000/60=16.7

Draw:表示在Java中创建显示列表部分中,OnDraw()方法占用的时间

Prepare:准备时间

Process:表示渲染引擎执行显示列表所花的时间,view越多,时间就越长

Execute:表示把一帧数据发送到屏幕上排版显示实际花费的时间,其实是实际显示帧数据的后台缓存区与前台缓冲区交换后并将前台缓冲区的内容显示到屏幕上的时间

将上面的四个时间加起来就是绘制一帧所需要的时间,如果超过了16.67就表示掉帧了

单位时间的耗电量

adb shell dumpsys battery

单位时间的流量消耗

adb shell cat /proc/进程id/net/dev

进程id: adb shell pidof 包名

adb shell pidof com.mt.mtxx.mtxx

adb shell cat /proc/3280/net/dev

Recevice: 表示收包 Transmit: 表示发包 bytes: 表示收发的字节数 packets: 表示收发正确的包量 errs: 表示收发错误的包量 drop:表示收发丢弃的包量

性能狗

perfDog工具

https://perfdog.qq.com/article_detail?id=10089&issue_id=0&plat_id=1

a. 非安装模式:手机即插即用,无需任 何设置及安装,使用非常简单,但手机屏幕上没有实时性能数据显示。

b. 安装模式: 需要在手机上自动安装 PerfDog.apk,手机屏幕上有实时性能数据显示(允许USB应用安装和PerfDog悬浮窗 管理权限),启动PC版 PerfDog.exe,则会在手机上自动PUSH安装PerfDog.apk,具体安装类似各个手机 厂商安装第三方APP提示安装即 可。(注:由于很多手机安装需要账号密码,导致无法自动安装,如果自动安装失败,则会把安装文件 PerfDog.apk释放到当前文件夹里,手动安装PerfDog.apk即可)。此模式下,在测试过程中,可能由于系统资源 紧缺会kill PerfDog显示app(手机界面性能数据显示),但不影响正常测试功能

弱网测试(抓包)

APP在使用过程中,可能会在公交、地铁、山上等地方使用,网络可以会出现波动、超时等。一般我们要模拟弱网环境, 测试点 看是否存在界面卡死、崩溃等异常。 提示是否有合理的重连机制。 超时后的提示信息是否符合用户的习惯。

模拟弱网环境:

charles 收费的 window mac

Net-simulator 专业的模拟弱网工具

fiddler工具:可以用于web程序、app程序的抓包,模拟浏览器和手机的弱网环境 只能用于window系统

弱网的环境模拟:

1)配置fidder:允许外界设备去连接fiddler

2)让手机和fiddler处于同一个网络环境

3)配置手机的ip为fiddler所在电脑的ip, 配置手机的端口号为fiddler的端口号,保证他们能建立连接

4)手机上下载配置证书,此时手机和fiddler就建立了连接

5)在fiddler上进行弱网的配置

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 21:10:59

AsrTools:智能语音转文字解决方案,高效处理音频内容

AsrTools&#xff1a;智能语音转文字解决方案&#xff0c;高效处理音频内容 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into …

作者头像 李华
网站建设 2026/7/28 21:04:44

Python开发实战:从基础到工程化的完整指南

1. Python学习路线全景解析作为一名从2010年开始接触Python的老程序员&#xff0c;我见证了这门语言从科学计算工具成长为全能型选手的完整历程。今天想和大家系统性地聊聊Python学习的核心路径&#xff0c;特别是那些官方文档不会告诉你的实战经验。不同于市面上零散的教程&am…

作者头像 李华
网站建设 2026/7/28 21:02:44

AIGS技术驱动Java企业架构转型实践与优化

1. AIGS技术浪潮下的Java企业转型契机当我在2023年参与某跨国零售集团的库存优化系统重构时&#xff0c;首次将AIGS&#xff08;AI-Generated Software&#xff09;技术栈引入传统JavaEE架构。项目上线后&#xff0c;需求响应周期从原来的3周缩短至72小时&#xff0c;这个数字让…

作者头像 李华
网站建设 2026/7/28 21:02:28

MSC外泌体怎么从科研制备到规模化生产?Rooster HD-EV连续培养体系思路

摘要&#xff1a; MSC外泌体生产从科研级制备走向规模化时&#xff0c;上游培养体系会成为影响产量、纯度、成本和批次一致性的核心变量。传统“扩增—洗涤—换液—收集”流程操作复杂、颗粒损耗风险高、培养基背景可能影响下游纯化和表征。Rooster HD-EV以化学成分限定、低颗粒…

作者头像 李华
网站建设 2026/7/28 21:01:05

Android NDK中C++ fstream文件操作实战:路径、权限与性能优化

1. 项目概述&#xff1a;为什么要在Android的C层用fstream&#xff1f;在Android开发里&#xff0c;Java/Kotlin处理文件读写是家常便饭&#xff0c;但当你深入到NDK&#xff08;Native Development Kit&#xff09;的世界&#xff0c;在C层直接操作文件时&#xff0c;情况就变…

作者头像 李华