资深测试老鸟,APP性能测试-全覆盖测试点(详细整理)

news2024/11/18 8:13:35

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

android的app性能测试包括的测试项:
响应、内存、CPU、FPS、GPU、耗电、耗流量

响应
响应主要测试点:
启动:首次启动app的时间间隔(只是启动时间,不包括页面加载)
热启动:非首次启动 app的时间间隔(只是启动时间,不包括页面加载)
完全启动:从启动到首页完全加载出来的时间间隔

有网启动:从发起跳转,到页面完全加载出来的时间间隔
无网启动:从发起跳转,到页面完全加载出来的时间间隔 (在项目中,主要测试关注点是冷启动,热启动)

测试方法:
使用adb命令
冷启动 adb shell am start -W packageName/ActivityName(绝对路径,首个 Activity)

11

ThisTime:该Activity的启动耗时;
TotalTime: 应用自身启动耗时, ThisTime+应用application等资源启动时间;
WaitTime: 系统启动应用耗时,TotalTime+系统资源启动时间;

热启动:按back按键后再启动adb命令

12

测试标准:冷启动时间不超过1.5s, 热启动不超过1s

完全启动,无网启动,有网启动都可以通过fiddler抓包来获取启动的时间,通过设置网速和抓包,可以获取启动时 间,但是有一定的误差。在项目中,一般只需要测试冷启动,热启动便可

内存
测试点:
空闲状态:切换至后台或者启动后不做任何操作,消耗内存最少。
中强度状态:时间偏长的操作应 用。
高强度状态:高强度使用应用,可以跑monkey来测试(通常用来测试内存泄漏)。
内存泄漏:指应用里的内存一直没有释放,内存一直增加 ,系统内存一直减少

测试方法:
使用adb命令: adb shell dumpsys meminfo packageName

获取应用包名和Actively: adb shell dumpsys window | findstr mCurrentFocus

13

测试关注点:
Native heap alloc:JIN的内存分配   
Dalvik heap alloc:Java层的内存分配   
PSS

14

关注点:
退出某个页面后,内存是否有回落。 如果没有及时回落,且程序自动GC或者手动GC,那便可确认有问题。

进行某个操作后,内存是否增长过快。 如果增长过快,也有可能存在风险,需重复操作确认。测试方法:借助性能测试工具:GC、Emmagee(只支持安卓6.0及以下的版本)、iTest等工具均可以监控。

android检查内存泄露步骤:
运行Monkey进行压力测试:

adb shell monkey -p cn.microinvestment.weitou --pct-touch 100 --ingore-crashes --throttle 1000 -s 100 -v -v 50

监控内存值,如果出现过大等递增异常则保存HPROF文件(hprof文件是Java 虚拟机的Heap快照)用于分析查看应用内存的命令:

adb shell dumpsys meminfo cn.microinvestment.weitou(进程名)

如果发现内存过大,则保存HPROF文件:adb shell am dumpheap <进程名> <保存路径>

分析hprof文件
用工具MAT来查看,首先还要这个HPROF文件转换成MAT可读的文件

在Android SDK tool里面有个hprof-conv命令:

hprof-conv <原HPROF文件路径> <转换后的HPROF路径>
hprof-conv a.hprof b.hprof

用MAT工具打开转换后的HPROF文件
一般选择Leak Suspects Report(通过SQL语句来查询对象有没有被释放掉,如果有多个相同的对象,则会存在内存泄露的问题)

CPU
测试点:
在空闲时间(切换至后台)的消耗,基本没大应用使用cpu
在运行一些应用的情况下,cpu已占50%的情 况下,观察应用程序占用cpu的情况
在高负荷的情况下看CPU的表现(cpu占用应是在80%以上)

具体场景:

应用空闲状态运行监测CPU占用率 空闲状态:应用按Home键退到后台,不再占用系统的状态(通常 是灭屏半分钟后) CPU占用率=0%

应用中等规格运行监测CPU占用率 中等规格:模拟用户最常见的使用场景;CPU占用率≤30%

应用满规格长时间正常运行监测CPU占用率 Monkey测试;CPU占用率≤30%

应用正常运行期间监测CPU占用率峰值 应用正常运行:打开应用进行基本操作;CPU占用率≤50%

测试方法:
使用adb命令:adb shell

adb shell dumpsys cpuinfo | grep packagename

14

top命令

adb shell top -m 10 -s cpu

查看占用cpu最高的前10个程序(-t 显示进程名称,-s 按指定行排序,-n 在退出前刷新几次,-d 刷新间隔,-m 显示最大数量)

adb shell top | grep PackageName

查询某个应用的CPU占用率(如果反复进行某个操作,cpu占用过高且一直无法释放,那便可能存在风险)

TPS

FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显 示动态视频的信息数量。每秒钟帧数越多,所显示的动作就会越流畅。 一般来说,Android设备的屏幕刷新率为60帧/s,要保持画面流畅不卡

顿,要求每一帧的时间不超过 1000/60=16.6ms,这就是16ms的黄金准则,如果中间的某些帧的渲染时间超过16ms,就会导致这段时间的画面发 生了跳帧,因此原本流畅的画面变发生了卡顿。

测试方法:
adb命令
打开手机:开发者选项—>profile GPU rendering(GPU渲染模式分析/GPU显示配置文 件/GPU呈现模式分析) —> in adb shell dumpsys gfxinfo

操作要测试的apk
cmd窗口输入命令: adb shell dumpsys gfxinfo packageName
得到一个矩阵数据,计算矩阵中帧率大于16的点所占比例,即为卡顿比

15

含义:
Draw: 表示在Java中创建显示列表部分中,OnDraw()方法占用的时间
Process:表示渲染引擎执行显示列 表所花的时间,view越多,时间就越长
Execute:表示把一帧数据发送到屏幕上排版显示实际花费的时间

Draw + Process + Execute = 完整显示一帧 ,这个时间要小于16ms才能保存每秒60帧

通过excel进行表格处理可以直观的查看软件的流畅度;
也可以使用第三方测试工具:Emmagee、GT等;

GPU
GPU渲染是指在一个像素点上绘制多次(超过一次):显示一个什么都没有做的activity界面算作画了1层,给activity 加一个背景是第2层,在上面放了一个Text View(有背景的Text View)是第3层,Text View显示文本就是第4层仅仅只是为了显示一个文本,却在同一个像素点绘制了四次,这是一定要优化的。

过度绘制对动画性能的影响是极其严重 的,如果你想要流畅的动画效果,那么一定不能忽视过度绘制。

GPU过渡渲染不同的颜色代表不同的绘制程度
原色:无过渡绘制
蓝色:绘制一次 (理想状态)
绿色:绘制二次
浅红:绘制三次 (可以优化)
深红:绘制四次 (必须优化)

测试指标:
控制过渡绘制为2x
不允许存在4x过渡绘制
不允许存在面积超过屏幕1/4的3x过渡绘制

电量
测试场景:
app运行但没有执行业务操作时的耗电量
app运行且密集执行业务操作时的耗电量
app后台运行的耗电量

测试方法:
方法1:
采用市场上提供的第三方工具,如金山电池管家之类的

方法2:
android通过adb命令“adb shell dumpsys battery”来获取应用的耗电量信息,adb shell dumpsys battery set level 100,修改电量

16

iOS通过Apple的官方工具Sysdiagnose来收集耗电量信息,然后,可以进一步通过Instrument工具链 中的 Energy Diagnostics进行耗电量分析

获取整个设备的电量消耗信息: adb shell dumpsys batterystats | more
获取某个apk的电量消耗信息: adb shell dumpsys batterystats com.thestore.main | more

手机当前使用的内存情况,各个线程的内存占用情况:adb shell dumpsys meminfo
手机的电池信息:adb shell dumpsys batteryinfo

adb shell top -m 10 -s cpu CPU消耗前10的应用清单

流量
借助于Android和iOS自带的工具进行流量统计,也可以利 用tcpdump、Wireshark和Fiddler等网络分析工具

测试场景:
app执行业务操作引起的流量
app在后台运行时的消耗流量
app安装完成后首次启动耗费的流量
app安装包本身的大小
app内购买或者升级需要的流量

测试方法:
android系统
网络流量信息通常存储在/proc/net/dev目录下,也可以直接利用ADB工具获取实时 的流量信息

获取被测程序的uid,pid:adb shell ps |findstr com.thestore.main ;下面的uid:10129,pid:30608
也可以通过pid查询uid:adb shell cat proc/30608/status
获取实时的累计流量信息: adb shell

cat /proc/uid_status/10129/tcp_rcv 接收流量信息--下行流量 

cat /proc/uid_status/10129/tcp_snd 发送流量信息--上行流量 

iOS系统
可以使用Xcode自带的性能分析工具集中的Network Activity,分析具体的流量使用情况

降低流量的场景方法:
启用数据压缩,尤其是图片
使用优化的数据格式,比如同样信息量的JSON文件就要比XML文件小
遇到既需要加密又需要压缩的场景,一定是先压缩再加密
减少单次GUI操作触发的后台调用数量
每次回传数据尽可能只包括必要的数据
启用客户端的缓存机制

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

脚踏实地,勇往直前;心怀信念,追逐辉煌。拥抱挑战,超越极限;付出努力,收获荣光。相信自己的力量与才华,奋发进取,书写属于自己的传世之作。

生命短暂,理想无限;奋斗不止,永不停息。放飞心灵,攀登高峰;砥砺意志,追逐梦想。相信自己的坚持与才能,勇往直前,开创辉煌的人生华章。

执着成就伟业,毅然追求卓越;心怀激情,磨砺绽放光芒。踏上征途,超越自我;披荆斩棘,勇往直前。相信自己的力量,奋斗不息,创造无限可能的辉煌人生!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/816414.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT控件中,便捷定义信号和槽函数

QT控件中&#xff0c;便捷定义信号和槽函数 之前使用的方式为&#xff1a;自定义信号和槽函数 现在使用一种更方便的方式&#xff1a; 点击控件&#xff0c;直接可以调用槽函数了。。。&#xff08;都不用绑定&#xff09; 把另外两个控件都加上

【MySQL】mysql | linux | 离线安装mysqldump

一、说明 1、项目要求离线安装mysqldump 2、数据库服务已经使用docker进行安装&#xff0c;但是其他项目依赖mysqldump&#xff0c;所以需要在宿主机上安装mysqldum 二、解决方案 1、下载依赖 https://downloads.mysql.com/archives/community/ 2、下载内容 mysql-community-c…

uniapp小程序警告:[sitemap 索引情况提示]

这个并不算是报错&#xff0c;只是一个警告提示&#xff0c;提示开发者哪些页面被微信收录了&#xff08;代表这个页面可以在微信的搜索中被搜到&#xff09;&#xff0c;sitemap 的索引提示是默认开启的&#xff0c;如需要关闭 sitemap 的索引提示&#xff0c;可在小程序项目配…

【腾讯云 Cloud Studio 实战训练营】当我还在恐龙扛狼,隔壁IDE竟然已经卷成这样了

文章目录 前言关于cloud studio功能介绍账号注册小试牛刀深度体验使用场景和产品优势总结 手动bgm&#xff1a;沃没K~ 恐龙扛浪扛浪扛~ 恐龙扛浪扛浪扛~ 沃没K~ 布鲁biu布鲁biu~ 前言 上周很荣幸被邀请体验一款腾讯的新产品cloud studio&#xff0c;是一款在线ide&#xff0c;…

多元函数的极值和最值

目录 无约束极值 极值的必要条件 驻点和极值点的关系 多元函数极值点可能取的点&#xff1a; 极值的充分条件 条件极值与拉格朗日乘数法 最大最小值 例题 例题1&#xff1a; 例题2&#xff1a; ​编辑 例题3&#xff1a; 例题4&#xff1a; ​编辑 例题5&#xff1a; 例…

DuDuTalk:AI语音工牌如何帮助教培公司高效管理课程顾问团队

近年来&#xff0c;随着人工智能的快速发展&#xff0c;越来越多的公司开始利用AI技术来提高工作效率和管理效果。在教育培训行业中&#xff0c;课程顾问团队的管理对于公司的运营和发展至关重要。 而在实际管理中&#xff0c;受教培人员素质参差不齐&#xff0c;能力差异大&a…

Java课题笔记~Maven基础知识

一、什么是Maven&#xff1f; Maven是专门用于管理和构建Java项目的工具。 它的主要功能有&#xff1a; 提供了一套标准化的项目结构提供了一套标准化的构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布……&#xff09;提供了一套依赖管理机制 …

python小游戏课程设计报告,python游戏课程设计报告

大家好&#xff0c;给大家分享一下python2048游戏课程设计报告&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01;

安装java11( 安装jdk11)记录

下载JDK11 国内华为镜像下载&#xff1a;https://repo.huaweicloud.com/java/jdk/11.0.29/injdk 镜像下载&#xff1a;https://www.injdk.cn/官网下载&#xff1a;https://www.oracle.com/java/technologies/downloads/#java11 个人使用华为镜像下载 安装 下载后上传至Lin…

用DBeaver进行数据备份与恢复

一、数据备份 1、选择需要备份的数据库或数据表&#xff0c;鼠标右击。 2、选择“工具-转存数据库” 3、勾选需要导出备份的数据库和数据表 可自行设置&#xff0c;这里直接点击开始&#xff1b; 导出完成 二、数据恢复 1、选择需要恢复的数据库或数据表&#xff0c;鼠标右…

数学建模学习(8):单目标和多目标规划

优化问题描述 优化 优化算法是指在满足一定条件下,在众多方案中或者参数中最优方案,或者参数值,以使得某个或者多个功能指标达到最优,或使得系统的某些性能指标达到最大值或者最小值 线性规划 线性规划是指目标函数和约束都是线性的情况 [x,fval]linprog(f,A,b,Aeq,Beq,LB,U…

【C语言】通讯录2.0 (动态增长版)

前言 通讯录是一种记录联系人信息的工具&#xff0c;包括姓名、电话号码、电子邮件地址、住址等。 文章的一二三章均于上一篇相同&#xff0c;可以直接看第四章改造内容。 此通讯录是基于通讯录1.0&#xff08;静态版&#xff09;的基础上进行改进&#xff0c;请先看系列文字第…

IPv4网络用户访问IPv6网络服务器

NAT64静态映射为一对一的对应关系&#xff0c;通常应用在IPv4网络主动访问IPv6网络的场景中。 要求位于IPv4网络中的PC通过IPv4地址1.1.1.10能够直接访问位于IPv6网络中Server。 操作步骤 配置FW。 # 配置接口GigabitEthernet 0/0/1的IPv4地址。 <FW> system-view [F…

MyBatis-Plus 分页插件实现分页查询

目录 1. 配置分页查询的拦截器 2. 使用 Page 对象实现分页功能 1. 配置分页查询的拦截器 因为 MyBatis-Plus 里面使用了分页插件来实现分页查询, 所以我们需要将 MyBatis-Plus 的插件添加到当前的项目里, 这样我们执行的查询操作才会生效. 创建 PageConfig 类: Configurat…

华为云hcip核心知识笔记(存储服务规划)

云上存储 &#xff1a; 云硬盘:基于分布式架构&#xff0c;可弹性扩展的虚拟块存储服务 注意事项 挂载云硬盘实例和云硬盘必须在同一区域&#xff0c;否则挂载失败文件存储服务&#xff1a;完全托管的共享文件存储 可以为多个实例实现共享访问&#xff0c;不同vpc中可以进行对…

用python需要下载软件吗,python需要安装哪些软件

大家好&#xff0c;本文将围绕安装python需要什么样的电脑配置展开说明&#xff0c;python需要安装哪些软件是一个很多人都想弄明白的事情&#xff0c;想搞清楚用python需要下载软件吗需要先了解以下几个事情。 编程这东西很神奇。对于那些知道如何有用和有趣的这个工具,对于Xi…

数字IC验证高频面试问题整理附答案(二)

近日后台有同学私信还想要验证的面试题目&#xff0c;这不就来了~ Q16.权重约束中”:”和”: /”的区别 : 操作符表示值范围内的每一个值的权重是相同的,比如[1:3]:40,表示1&#xff0c;2&#xff0c;3取到的概率为40/120&#xff1b; :&#xff0f;操作符表示权重要平均分到…

手把手教你在云环境炼丹(部署Stable Diffusion WebUI)

前几天写了一篇《手把手教你在本机安装Stable Diffusion秋叶整合包》的文章&#xff0c;有些同学反映对硬件的要求太高&#xff0c;显卡太TM贵了。今天我再分享一个云服务器炼丹的方法&#xff0c;方便大家快速入门上手&#xff0c;这个云服务不需要特殊网络设置&#xff0c;能…

【rtmp】2: rtmp 推送 annexb

参考RTMP协议封装H264和H265协议详解 大神分析rtmp推送的大部分是annexb的h264 因此,我们就以此为格式 转为rtmp avcc 推送到服务器端。 一般sps、pps 前面有4个 字节的起始码,所以要跳过,不要计算在sps pps 长度里。 对于视频,先发avc头 第一个 5个字节 第一个字节 0x17 ,…

source insight常用操作

1、窗口布局 SI窗口十分丰富&#xff0c;通过菜单栏View->Toolbars/panels选择显示那些工具栏/窗口 Source Insight 窗口介绍_sourceinsight窗口_STCNXPARM的博客-CSDN博客 2、RGB护眼色 Source Insight4.0字体大小及护眼背景配置_sourceinsight4背景色配置_ProYuan28的…