- 浏览: 29856 次
最新评论
流畅度测试简单的来说就是Android页面绘制。Android系统每秒60hz,也就是大约每16ms刷新一次界面。但是在我们使用APP过程中,经常会看到页面有卡顿,或者说丢帧的现象。也就是说可能此刻两个页面绘制的时间差超过0.1S(人眼视觉残留0.1S)。总的来说,就是页面
原理分析
在确定衡量指标之前,先来说Android的UI更新机制。
在Android版本更新过程中,发现在Jelly Bean中Google加入了一个Project Butter,用来解决严重影响Android口碑的问题之一“UI流畅性差”的问题。而Project Butter中主要引入了三个核心元素:VSYNC(垂直同步)、Triple Buffer和Choreographer。
VSync是Vertical Synchronization(垂直同步)的缩写,是一种在PC上很早就广泛使用的技术,可以简单的把它认为是一种定时中断。而在Android 4.1(JB)中已经开始引入VSync机制。CPU和GPU的处理时间都少于一个VSync的间隔,即16.6ms。如果每个间隔都有绘制的情况下,当前的FPS即为60帧。
VSync机制就像是播放动画片(60帧/s)。每次都会播放画面,有的时候有人偷懒了,机器坏了,就会出现播放速度降低的状况。我们把这个播放速度叫做流畅度。
从FPS&丢帧到流畅度
实际上在很多Android的App中,很少有需要不断地去绘制的场景,很多时候页面都是静态的。也就是会出现这样的状况,虽然1s中VSync的60个Loop不是每个都在做绘制的工作,FPS会比较低,但并不代表这个时候程序不流畅(如我将App放着不动,实测FPS为1)。所以FPS较低并不能代表当前App在UI上界面不流畅,而1s内VSync这个Loop运行了多少次更加能说明当前App的流畅程度。所以,下面这2个指标比FPS更能代表当前的App是否处于流畅的状态。同样这2个指标更加能够量化App卡顿的程度:
1)丢帧(SF: Skipped Frame):如上图2所示情况应该在16.6ms完成工作却因各种原因没做完,占了后n个16.6ms的时间,相当于丢了n帧。
2)流畅度(SM: SMoothness):和丢帧相对,在VSync机制中1s内Loop运行的次数。
和丢帧相对1s内有60个Loop因为某几次工作时间超过了16.6ms(丢帧),这样Loop就无法运行60次(理论最大值)。
当流畅度越小的时候说明当前程序越卡顿。
如何得到流畅度(SM: SMoothness)
接着上面的结论,如果在这样的机制下每次Loop运行之前进行通知,记个数就好了。
很幸运我们在新的Android的那一套机制中找到了一个画图的打杂工Choreographer这个对象。根据Google的官方API文档描述中,它是用来协调animations、input以及drawing时序的,并且每个Loop共用一个Choreographer对象。
结论
通过如上原理分析可以得出结论:
1) Android 4.1引入了VSync机制后,可以通过其Loop来了解当前App最高绘制能力。
固定每隔16.6ms执行一次(这个值是一个静态变量,会根据系统版本不同而采用不同的值,目前测试版本是16.6ms这样最高的刷新的帧率就控制在60FPS以内);
如果没有以上事件的时候同样也会运行这样一个Loop;
这个Loop在1s之内运行了多少次,即可以表示当前App绘制的最高的能力,也就是Android App卡顿的程度;
另外,在一次Loop时如果执行时间超过了16.6ms,那么用多于16.6ms的时间除以16.6ms,即是当前App的丢帧(SF: Skipped Frame)。
2) 可以在Choreographer的回调FrameCallback中,按秒计数表示当前App的流畅程度,即流畅度SM(SMoothness)。
采用这样方式就可以在App内部观测当前App的流畅度了。并且在丢帧的地方打印traceView,就可以知道丢帧的大概原因,大概位置。定位代码问题。
TestBird
发表评论
-
移动互联网时代,传统金融行业的转变?
2017-10-16 16:57 326互联网正不断与越来越 ... -
移动APP领域的新战场—用户争夺战
2017-10-12 15:01 374之前,工信部发布的“ ... -
在金融APP做自动化这条路上,我们填过哪些坑?
2017-09-05 16:33 485从市场上金融企业对app ... -
浅谈移动端性能测试的方法和应用
2017-08-30 11:34 371随着移动设备的普及 ... -
谷歌正式发布Android 8.0,TestBird支持Android Oreo测试
2017-08-24 16:57 4188月22日凌晨,谷歌发布了 Android 8.0 操作系统的 ... -
重度游戏热度居高不下,中轻度游戏如何突出重围?
2017-08-22 17:06 395据当乐网报道,早 ... -
移动web性能测试要点
2017-07-07 17:47 380性能测试 1.连接速度测试 用户连接到Web应用系统的 ... -
对于性能测试的那些需要注意的事
2017-07-06 18:12 486之前有做过几次做性能 ... -
Android app安全性能测试
2017-07-04 18:18 7861.安装包测试 (1)能否反编译代码(源代码泄露问题): ... -
一般app测试的最佳方法
2017-06-23 17:39 332一提到软件测试,测试员基本想到的就是去检查文件,功能,AP ... -
App测试中需要考虑网络因素的测试点
2017-06-16 18:10 409当前app的网络环境比 ... -
移动应用安全测试方法总结
2017-06-09 15:27 3151.软件权限 1)扣费风 ... -
Android应用功能测试策略
2017-06-06 17:27 274根据软件说明或用户需求验证App的各个功能实现 ,采用如下 ... -
品质化时代 CP如何把控手游产品质量关
2017-05-31 17:41 322近年来,手游业发展迅 ... -
对移动测试领域来说,精准测试是否重要
2017-05-26 17:33 364是否在做回归测试的时候常常会因为范围评估不准而遗漏一些bu ... -
移动app测试之怎么避免bug漏测
2017-05-17 17:49 385下面分析出现缺陷漏 ... -
移动app如何进行自动化和探索性测试
2017-05-12 16:48 399在测试设计时最主要依据的就是测试金字塔的测试结构。如果在项目 ... -
详解iOS和Android在测试上的不同
2017-05-11 16:52 307只有了解iOS和Android操作系统的不同设计理念,才能 ... -
移动app增量升级测试需注意的问题
2017-05-04 17:43 443作为一个用户,测试 ... -
Android app开发捷径,让你少去踩坑
2017-04-28 15:10 316最近一朋友提了几个And ...
相关推荐
《Android性能测试》这本书深入探讨了Android应用性能优化的关键技术和实践方法。在移动开发领域,尤其是在竞争激烈的Android市场,提供高性能、低资源消耗的应用是开发者必须面对的重要挑战。本篇文章将依据书中的...
在Android开发过程中,性能测试是优化应用不可或缺的一部分。Android提供了多种开源的性能测试工具,帮助开发者监测和提升应用的性能。这些工具涵盖了CPU使用率、内存占用、网络流量、启动速度以及电池消耗等多个...
在Android应用开发中,性能测试是一项至关重要的环节,它确保了应用在运行时的流畅性、效率和用户体验。APT(Android Performance Testing)测试工具就是专为Android开发者设计的一款强大工具,用于评估和优化应用...
在Android游戏开发中,性能测试是一项至关重要的任务,它直接影响到游戏的运行流畅度、用户体验以及设备资源的消耗。这个“android 游戏性能测试 源码”压缩包很可能是提供了一套用于评估和优化Android游戏性能的...
腾讯推出的GT(GaoTong)框架是一个专业的Android性能测试和优化工具,它为开发者提供了详尽的性能监控和分析功能。下面将详细阐述GT框架的主要特点、使用方法以及如何通过它进行性能测试和优化。 一、GT框架简介 ...
在Android app性能测试领域,GT3.1.0提供了丰富的测试指标和分析功能,包括CPU使用率、内存占用、GPU渲染帧率、网络流量、磁盘I/O等关键性能参数。这些数据对于理解和优化应用的性能瓶颈至关重要。通过GT,开发者...
【Android移动App性能测试】 性能测试是评估应用在各种条件下的运行效率和稳定性的关键环节。在Android平台上,性能测试涵盖了多个方面,如CPU使用率、内存占用、FPS(帧率)、流量消耗以及响应时间等。以下是这些...
Android系统UI性能测试是确保应用软件提供良好用户体验的关键环节。随着Android应用的爆炸式增长,用户对于应用的性能要求越来越严格,尤其是UI的启动速度、流畅度和内存管理等方面。传统的手工测试方法往往忽视了...
2. 性能测试:评估系统响应速度、功耗、内存占用等,确保流畅运行。 3. 兼容性测试:测试系统对不同硬件设备、屏幕尺寸、Android版本的适应性。 4. 稳定性测试:长时间运行应用,检查系统崩溃、重启等问题。 5. 安全...
总的来说,Android客户端性能测试是保障产品质量和用户体验的重要环节。通过持续监控和优化,开发者可以确保他们的应用在日益竞争激烈的市场中脱颖而出,满足用户对速度、稳定性、流量消耗和电池寿命的高要求。测试...
"android触摸屏测试程序"是一个专门用于检测Android设备触摸屏性能和功能的工具,它可以帮助开发者、硬件制造商以及普通用户评估设备的触控灵敏度、准确性和稳定性。 一、触摸屏测试的重要性 1. 用户体验:触摸屏...
本文将详细介绍Android性能监控检测工具——FPSCPUPSSPrivateDirty,并探讨这些指标在Android系统中的作用。 首先,让我们了解这些术语的含义: 1. **FPS (Frames Per Second)**:帧率,衡量的是设备每秒渲染图像...
【Android性能测试】Android性能测试是评估应用程序在Android操作系统上运行效率、稳定性和资源占用情况的重要环节。测试内容包括CPU使用率、内存占用、网络流量消耗、电池使用情况以及帧率等,这些因素直接影响到...
腾讯GT,全称为“Gaming Toolkit”,是由腾讯公司推出的一款专业性能测试工具,主要应用于移动应用和游戏的性能分析与优化。GT旨在帮助开发者深入理解和改善他们的应用程序在真实设备上的运行效率,确保产品在各种...
性能测试是评估软件系统在高负载或大容量数据下运行状况的一种关键测试类型。通过模拟大量用户并发操作,性能测试可以揭示系统潜在的性能瓶颈、稳定性问题以及资源管理的有效性。下面将详细介绍性能测试的各个关键...
- **基础性能测试**:能够实时展示和采集手机整机或单个APP的多项基础性能指标,包括但不限于CPU利用率、内存占用量、网络流量、流畅度/帧率、电量消耗等,并支持Excel格式存储、曲线绘制等功能。 - **日志查看**:...