[TOC]
前后端性能指标
性能测试的定义和分类
定义:
察看零碎在一个给定的环境和场景中的性能体现是否与预期指标统一,评判零碎是否存在性能缺点,并依据测试后果辨认性能瓶颈,改善零碎性能的残缺的过程。
分类:
- 基准测试:单用户,发单次申请,产出基准性能数据
- 负载测试:多用户,用户数渐增,继续同时发同一业务申请,产出最大 TPS
- 压力测试:多用户,资源应用饱和,继续同时发同一业务申请,产出零碎瓶颈或应用极限
- 混合场景测试:多用户,资源应用不饱和,继续同时发不同业务申请,验证零碎稳定性
性能测试的指标
前后端的性能测试关注点和指标是不一样的。
前端关注点
- 响应工夫:用户从客户端发出请求,并失去响应,以及展现进去的整个过程的工夫。
- 加载速度:艰深的了解为页面内容显示的快慢。
- 电量:APP 的耗电量。
- 流量:APP 所耗费的流量
1、加载速度
艰深的了解,能够 将加载速度视为页面内容显示的快慢。拿 Google 搜寻的例子来说,从用户输出搜寻内容按下 enter 键,到看到搜寻进去的内容,这个过程的快慢就是加载速度。假如选中一个内容点击,跳转到一个网页,网页的内容显示进去能让用户看见的过程,也是加载速度。
早些年 Amazon 已经做过一个统计:网页加载工夫每缩短 1 秒钟,一年将缩小 16 亿美元的营收。
个别有哪些形式能够改善加载速度带来的用户体验呢?
-
缩小 HTTP 反复申请
性能黄金法令:只有
10%~20%
的最终用户响应工夫花在了下载 HTML 文档上,其余的 80%~90% 工夫花在了下载页面中的所有组件上。因而,改善响应工夫最简略的路径就是缩小 HTTP 申请的数量,并且去除不必要的反复申请。
- 应用 CDN
HTTP 申请和响应的工夫会受到离 web 服务器间隔的影响。如果用户离应用程序的 web 服务器离用户更近,那么多个 HTTP 申请的响应工夫将缩短。
CDN(内容公布网络)是一组散布在多个不同地理位置的 Web 服务器,能够选择网络阶跃数最小的服务器,或者具备最短响应工夫的服务器,用于更加无效地向用户公布内容。
- 缩小下载的资源
比方通过压缩图片的形式,缩小图片的大小,缩短下载的工夫。另外能够通过比对客户端与服务端差别的形式,疾速展现本地的缓存资源,缩小同样内容的反复下载。
2、电量
Android 的很多个性都比拟耗电(屏幕、GPS、唤醒机制、CPU、连网等的应用)。
3、流量
目前的网络类型蕴含 2G\3G\4G\wifi,其中还有不同运营商的辨别。APP 应用过程中,常见的网络流量重大耗费的起因次要有,调用响应慢,调用失败 等各种状况。
通常从哪些指标去掂量流量耗费的状态是否失常呢?
- 利用首次启动流量提醒;
- 利用处于后盾,间断运行 2 小时的静默流量;
- 利用处于前台,高负荷运行时的流量峰值。
个别有哪些起因导致流量被大量耗费呢?
- 资源太多
- 图片太大
- 反复申请
- 日志上传
- 埋点数据
4、Crash 和 ANR
Crash 的起因个别有:空指针、内存透露、数组越界、调用了高版本的 API。
Android 应用程序,如果主线程 (即 UI 线程) 在超工夫内对用户输出工夫没有处理完毕,就会呈现 Application Not Responding 弹出框,用户须要抉择期待或者强制敞开来杀死过程。
5、FPS
就是动画帧率。帧就是指动画或视频的“画面”,1 幅画就叫做“1 帧”,帧数就是在 1 秒钟工夫里传输的图片的量,也能够了解为 图形处理器每秒钟可能刷新几次,通常用 FPS(Frames Per Second)示意。
每一帧都是静止的图象,疾速间断地显示帧便造成了静止的假象,高的帧率能够失去更晦涩和真切的动画,因而每秒钟帧数 (FPS) 越多,显示进去的动作就越晦涩。
那么什么是正当的 FPS 呢?
帧率达到 60FPS 以上,人眼主观就感触不到差异了。所以个别以 60FPS 作为衡量标准,即要求每一帧刷新的工夫小于 16ms,这样能力保障滑动中平滑的晦涩度。
后端关注点
- 响应工夫:接口从申请到响应、返回的工夫。
- 并发用户数:同一时间点申请服务器的用户数,反对的最大并发数。
- 内存占用:APP 的内存开销。
- 吞吐量(TPS):Transaction Per Second, 每秒事务数。在没有遇到性能瓶颈时:TPS= 并发用户数 * 事务数 / 响应工夫。
- 错误率:失败的事务数 / 事务总数。
- 资源使用率:CPU 占用率、内存使用率、磁盘 I /O、网络 I /O。
1、响应工夫
指的是 客户发出请求到失去响应的整个过程的工夫。在某些工具中,申请响应工夫通常会被称为 TTLB(Time to laster byte),意思是从发动一个申请开始,到客户端收到最初一个字节的响应所消耗的工夫。所以也能够了解成,响应工夫=网络响应工夫 + 应用程序响应工夫。
因而在大部分公司的我的项目理论运作中,会把性能测试分为两局部,APP 前端的响应工夫、后端接口申请和返回的工夫,即别离是 零碎级性能测试和接口级性能测试。
- 网络传输工夫:T3+T4+T5+T6
- 应用服务器解决工夫:T5+T7+T8
- 数据库服务器解决工夫:T7+T8
<span style=”color:#ff0000;”> 响应工夫 </span>= N1+N2+T3+T4+T5+T6+T7+T8
那么什么是正当的响应工夫呢?
- 互联网上对于用户响应工夫,有一个广泛的规范,2-5-10 准则
具体来说,就是:
- 2 秒之内失去响应,会认为零碎响应的很快
- 5 秒之内失去响应,会认为零碎响应的速度还不错
- 10 秒之内失去响应,会认为零碎响应的速度很蹩脚
- 超过 10 秒还未失去响应,会认为零碎是没有响应的
2、CPU
在 Linux 零碎下,CPU 利用率分为 用户态、零碎态、闲暇态,别离示意 CPU 处于用户态执行的工夫,零碎内核执行的工夫,和闲暇零碎过程执行的工夫。平时所说的 CPU 利用率 是指:CPU 执行非零碎闲暇过程的工夫 / CPU 总的执行工夫。
CPU 可能呈现的问题是,继续 CPU 占用较高、设施发热、应用十分卡顿、程序卡死。
什么状况下会耗费 CPU 呢?
-
就是 大量的运算
比方某个 Activity 或者办法有始终不停的运算耗费 CPU(比方:不进行的 while 或者 for 循环)
个别从哪些指标监控 CPU 状况呢?
- 设施的利用在闲暇工夫,CPU 的占用状况
- 利用应用时,CPU 的占用走势,继续变动
- CPU 的占用峰值 **
**
3、内存占用
Android 零碎中,每个 APP 过程除了同其余过程共享 (shared dirty) 外,还独用 公有内存 (private dirty),通常应用 PSS(= 公有内存 + 比例调配共享内存) 来掂量一个 APP 的内存开销。
挪动设施的内存资源无限,因而为每个 APP 过程调配的公有内存也是 有限度 的。APP 的内存常见问题有内存 占用过高、内存泄露,以及内存溢出。
- 内存透露:程序在向零碎申请内存调配后,应用后未开释。
- 内存溢出:程序向零碎申请的内存空间超出了零碎自身的内存,会呈现解体,也就是客户端的 carsh。
下面次要讲了性能的指标,具体各个性能指标的测试工具及办法,别离见其余文章。
本文由 mdnice 多平台公布