APP项目测试 之 APP性能测试

性能指标描述:一定是某种时间内某种条件执行某种操作,性能指标如何?


性能测试可以考虑和稳定性结合,monkey测试时使用性能监控工具监控性能数据。

例如: 2小时内持续刷新操作,性能如何? 持续运行8小时,性能如何?


常见的性能指标有:内存,CPU,流量,电量,启动速度,流畅度、稳定性等

性能测试关注点:

  • APP使用时对CPU、内存的占用情况;
  • APP使用时是否流畅等
  • APP使用时,电量流量的消耗情况;
  • APP的启动时间是否过长;
  • APP是否能长时间稳定运行

1.CPU

基线:如果有基线要求,CPU曲线图是否存在长期超过基线的现象(min)

           如果没有基线,行业默认90%.

蓝色曲线是问题曲线(长时间超过基线),红色曲线是正常曲线。


CPU占用过高时可能出现的问题:        

  • 手机发烫
  • 页面卡顿
  • 电量消耗严重
  • 快速恢复:清空后台运行的进程

实操:

需求:打开TP商城单商户,进入首页-我要拼团,上下滑动动态2分钟,CPU指标正常。 


测试方法:

(1)打开SoloPi工具,勾选CPU监控指标

(2)进入TP商城单商户APP,操作上述业务,观察运行时的CPU指标

(3)查看CPU运行结果

  • 检查APP运行时CPU是否有快速飙升
  • 检查APP运行时CPU是否长时间处于90%以上

(4)保存CPU详细数据后,可以查看CPU详细的数据统计


2.内存

内存泄露内存的曲线持续增长(增的远比减的多)

内存溢出一定是因为有内存泄露才会出现.内存持续增加突然降为0 (应用停止运行)

异常曲线图
正常曲线图 

实操:

需求:打开TP商城单商户,进入首页-我要拼团,上下滑动动态2分钟,内存指标正常。 


测试方法:

(1)打开SoloPi工具,配置内存监控

(2)进入TP商城单商户APP,操作上述业务,观察运行时的内存指标

(3)查看内存运行结果

  • 检查程序实际使用的内存PSS是否持续增长
  • 检查程序是否出现crash

3.流量

流量(指网络流量):

  • 用手机打开APP进行互联网操作时,会和服务器之间交换数据,手机流量就是指这些数据的总大小。
  • 数据报文是包含手机上下行的报文

上行消息:是APP发送给服务器的报文,但上行消息不一定都是请求消息

下行消息:是APP接收的服务器的报文


SoloPi工具提供了流畅度的监控指标:网络

  • 网络:即网络流量,可以自动统计APP每秒上行和下行的报文大小

常用的流量测试方法:

  • 统计测试法 :利用工具获取应用程序收发的数据报文,统计出对应的流量

使用了多长时间,消耗了多少流量

测试怎么测: 例如: 1小时持续刷新,查看流量消耗


面试题:打开页面速度过慢,如何优化?

流量优化方法:

  • 数据的压缩
  • 不同数据格式的采用
  • 控制访问的频次
  • 只获取必要的数据
  • 缓存机制
  • 针对不同的网络类型设置不同的访问策略

实操:

需求打开TP商城单商户,进入首页-我要拼团,上下滑动动态2分钟,获取消耗的网络流量。


测试方法:

(1)打开SoloPi工具,勾选流量监控指标网络

(2)进入TP商城单商户APP,操作上述业务,观察运行时的流量指标

(3)查看流量统计结果


4.电量(不能充电测试)

使用了多长时间,消耗了多少电量

测试怎么测:例如: 1小时持续刷新,查看电量消耗


常用的电量测试方法:

系统自带接口

  • 最新的IOS和Android系统内置的Setting里可以查看各个APP的电池消耗
  • 该方案不能检测固定某一时间段内的电池精准消耗。

硬件检测

  • 通过硬件可以精准地获得应用的电量消耗(如: PowerMonitor 硬件设备)
  • 该方案测试时需要拆机,成本太高比较麻烦。

软件工具检测

  • 通过第三方的软件来获取应用的电量消耗(如: AccuBattery、360省电王、SoloPi等)
  • SoloPi 工具提供了电量的监控指标:电池。
  • 该方案取决于第三方软件的计算准确性。

通过API计算应用电量消耗

  • 通过代码方式调用电量相关API接口,获取应用维度精细的电量消耗
  • 该方案计算准确,但是计算方式复杂,难度高。

常见的电量消耗较大的场景:

  • 定位,尤其是调用 GPS 定位。
  • 网络传输,尤其是非 Wi-Fi 环境。
  • 屏幕亮度
  • CPU 运算:复杂的运算逻辑、死循环等会直接导致CPU负载过高,会导致耗电;
  • wake_locker(锁屏-解锁)时间和次数

注意: 公司是否有基线要求,如果有要求,那么我们需要去检验产品是否达标;如果没有基线,可以和竞品对比测试

实操: 

需求打开TP商城单商户,进入首页-我要拼团,上下滑动动态2分钟,获取消耗的电量


测试方法:

(1)打开SoloPi工具,勾选电量监控指标:电池

(2)进入TP商城单商户APP,操作上述业务,观察运行时的CPU指标

(3)保存电量详细数据后,可以查看电量详细的数据统计。


5.启动速度

冷启动: APP离线的状态下启动。时间长

热启动: APP后台运行的状态下启动。时间短

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

  • ThisTime: 当前activity的时间。
  • TotalTime:应用的启动时间,包括创建进程、App初始化、Activity初始化到界面显示。
  • WaitTime:前一个应用activity pause的时间+TotalTime

6.流畅度

流畅度:

我们都知道动画片其实是由一张张画出来的图片连贯执行产生的效果,当一张张独立的图片切换速度足够快的时候,会欺骗我们的眼睛,以为这是连续的动作。反之,当图片切换不够快时就会被人眼看穿,反馈给用户的就是卡顿现象。


SoloPi工具提供了流畅度的监控指标:帧率FPS

  • FPS:即Frames per second:GPU在一秒内绘制的帧数。(简单理解为一秒内呈现给用户的图片数) FPS值越高画面越流畅(每秒切换多少帧,60fps位最佳)

流畅度问题产生的影响:

  • 想要让大脑觉得动作是连续的,至少是每秒10-12帧的速度
  • 想达到流畅的效果,至少需要每秒24帧
  • 60帧每秒的流畅度是最佳的,我们的目标就是让程序的流畅度能接近60帧每秒
    1. 当页面多为静态时,FPS值很小是正常的
    2. 页面数据多为动态加载时,FPS值比较大(建议在24帧以上)

实操:

需求:打开TP商城单商户,进入首页-我要拼团,上下滑动动态2分钟(下滑1分钟,再上滑1分钟),记录FPS值。


测试方法:

(1)打开SoloPi工具,勾选帧率

(2)进入TP商城单商户APP,操作上述业务,观察运行时的流畅度指标

(3)查看流畅度运行结果

(4)保存流畅度详细数据后,可以查看流畅度详细的数据统计。


7.稳定性(monkey)

稳定性测试:通过长时间对应用程序进行无序操作,检验应用程序是否会出现异常。如闪退crash、无响应ANR等。(通过命令让其自动执行)


稳定性测试工具——Monkey:

  • Monkey是一个命令行工具,是由安卓官方提供的。
  • 测试人员可以通过Monkey来模拟用户的触摸点击滑动以及系统按键等操作(操作事件都是随机的),从而实现对APP压力的测试和稳定性测试。
  • 开发人员结合monkey 打印的日志和系统打印的日志,修改测试中出现的问题


稳定性测试的时机:

  • 一般需要等产品稳定了,bug比较少的时候,再用monkey去测试待测试应用的稳定性。

  • 注意性能数据监控
  • 注意日志收集

未完待续。。。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】详解

SQL语句的分类: 1.DDL(Data Definition Languages)语句: 数据定义语言 ,这些语句定义了不同的数据段,数据库,表,列,索引等数据库对象的定义。常用的语句关键字主要包括…

随笔(一)

1.即时通信软件原理(发展) 即时通信软件实现原理_即时通讯原理-CSDN博客 笔记: 2.泛洪算法: 算法介绍 | 泛洪算法(Flood fill Algorithm)-CSDN博客 漫水填充算法实现最常见有四邻域像素填充法&#xf…

Studio One直播声音怎么调 Studio One直播没有声音输出怎么办 studio one如何设置声音变好听

Studio One做为新生代音乐工作站,凭借更低的价格和完备的功能,获得了音乐人和直播行业工作者的青睐,尤其是对硬件声卡的适配支持更好,特别适合用来配合线上教学和电商带货。 一、Studio One直播声音怎么调 在Studio One进行直播时…

AdaBoost集成学习算法理论解读以及公式为什么这么设计?

本文致力于阐述AdaBoost基本步骤涉及的每一个公式和公式为什么这么设计。 AdaBoost集成学习算法基本上遵从Boosting集成学习思想,通过不断迭代更新训练样本集的样本权重分布获得一组性能互补的弱学习器,然后通过加权投票等方式将这些弱学习器集成起来得到…

P8306 【模板】字典树

题目描述 给定 n 个模式串 s1​,s2​,…,sn​ 和 q 次询问,每次询问给定一个文本串 ti​,请回答 s1​∼sn​ 中有多少个字符串 sj​ 满足 ti​ 是 sj​ 的前缀。 一个字符串 t 是 s 的前缀当且仅当从 s 的末尾删去若干个(可以为 0 个&#…

Scissor算法-从含有表型的bulkRNA数据中提取信息进而鉴别单细胞亚群

在做基础实验的时候,研究者都希望能够改变各种条件来进行对比分析,从而探索自己所感兴趣的方向。 在做数据分析的时候也是一样的,我们希望有一个数据集能够附加了很多临床信息/表型,然后二次分析者们就可以进一步挖掘。 然而现实…

【深度学习基础】MacOS PyCharm连接远程服务器

目录 一、需求描述二、建立与服务器的远程连接1. 新版Pycharm的界面有什么不同?2. 创建远程连接3. 建立本地项目与远程服务器项目之间的路径映射4.设置保存自动上传文件 三、设置解释器总结 写在前面,本人用的是Macbook Pro, M3 MAX处理器&am…

【Linux】多线程_2

文章目录 九、多线程2. 线程的控制 未完待续 九、多线程 2. 线程的控制 主线程退出 等同于 进程退出 等同于 所有线程都退出。为了避免主线程退出,但是新线程并没有执行完自己的任务的问题,主线程同样要跟进程一样等待新线程返回。 pthread_join 函数…

接口测试(3)

接口自动化 # 获取图片验证码import requestsresponse requests.get(url"http://kdtx-test.itheima.net/api/captchaImage")print(response.status_code) print(response.text) import requestsurl "http://kdtx-test.itheima.net/api/login" header_da…

ffmpeg滤镜-drawtext-命令行

使用 FFmpeg 在视频上添加文字可以通过 drawtext 滤镜来实现。这个滤镜允许你指定字体、大小、颜色、位置等。 基本用法 以下命令将 "Hello, World!" 添加到视频的顶部左侧: ffmpeg -i input.mp4 -vf "drawtexttextHello, World\!:fontcolorwhite…

使用redis进行短信登录验证(验证码打印在控制台)

使用redis进行短信登录验证 一、流程1. 总体流程图2. 流程文字讲解:3.代码3.1 UserServiceImpl:(难点)3.2 拦截器LoginInterceptor:3.3 拦截器配置类: 4 功能实现,成功存入redis (黑…

飞速(FS)10G光模块选择指南

飞速(FS)的10G SFP光模块专为万兆每秒(10 Gbps)的数据传输设计,满足多样化网络需求。该光模块支持多种传输距离,具备热插拔和数字诊断监控功能,全面适配200品牌,为客户提供更灵活的选…

CTF php RCE(二)

0x04 php伪协议 这种我们是先看到了include才会想到,利用伪协议来外带文件内容,但是有些同学会问,我们怎么知道文件名是哪个,哪个文件名才是正确的,那么这里我们就得靠猜了 include函数 因为 include 是一个特殊的语…

Tomcat的安全配置

1、生产环境优化 2、部分漏洞修复 转载自风险评估:Tomcat的安全配置,Tomcat安全基线检查加固-CSDN博客

氛围感视频素材高级感的去哪里找啊?带氛围感的素材网站库分享

亲爱的创作者们,大家好!今天我们来聊聊视频创作中至关重要的一点——氛围感。一个好的视频,不仅要有视觉冲击力,还要能够触动观众的情感。那我们应该去哪里寻找这些充满氛围感且高级的视频素材呢?别急,我这…

telnet在windows和linux上的使用方法

telnet在windows上使用 ‘telnet’ 不是内部或外部命令,也不是可运行的程序或批处理文件。 windows上有自带的telnet工具的,这只是没有安装添加进来而已。 处理 方法: 打开控制面板-点击程序与功能 进到程序与功能界面,点击启用或…

Debezium报错处理系列之第114篇:No TableMapEventData has been found for table id:256.

Debezium报错处理系列之第114篇:Caused by: com.github.shyiko.mysql.binlog.event.deserialization.MissingTableMapEventException: No TableMapEventData has been found for table id:256. Usually that means that you have started reading binary log within the logic…

产品原型设计:从概念到实现的完整指南

如果你是一位产品经理,那么你一定会和原型图打交道,产品原型是产品设计方案和底层逻辑的可视化表达,需要完整清晰地表达出产品目的及需求,在整个产品创造的过程中发挥着不可或缺的作用。而对于一些刚入行的产品经理来说&#xff0…

C++基础语法

目录 一、命名空间 1.1 什么是命名空间 1.2 命名空间的定义 1.3 命名空间的使用 二、输入输出流 三、缺省参数 四、函数重载 五、内联函数 C是一种通用的编程语言,具有面向对象、泛型编程和低级内存操作等特性。它是由Bjarne Stroustrup在20世纪80年代初开发…

idea集成本地tomcat

由于网课老师使用的是eclipse,但是……本人用的是idea,所以不得不去找教程。 解决方案1: https://blog.csdn.net/weixin_54048131/article/details/131359793 这个地方,路径一定要到这个tomcat 否则不识别: 这里的JRE也要配置一下 新问题&…