转载于lhdyt_tl
性能测试的定义
(转)观察系统在给定环境和场景下的性能表现是否与预期目标相符,评估系统是否存在性能缺陷,根据测试结果找出性能瓶颈,改善系统性能的完整过程
性能测试的分类
基准:生成单用户、单次请求和基准性能数据
负载测试:多用户、用户量逐渐增加,持续同时发送同一业务要求,生产最大TPS
压力测试:多用户、资源使用饱和,持续同时发送同一业务请求,生产系统瓶颈或使用极限
混合方案测试:多用户、资源使用不饱和,持续同时发送不同的业务请求,验证系统的稳定性
性能测试的指标
响应时间:用户从客户端发出请求,获得响应,展示的整个过程的时间。
加载速度:通俗理解的话,是页面内容显示的速度。
内存占用:APP的内存开销。
电量:APP的功耗。
流量:APP消耗的流量
并发用户数:在同一时间点请求服务器的用户数。
33558 www.Sina.com/transactionpersecond,每秒的事务数。 没有性能瓶颈时: TPS=并发用户数*事务数/响应时间。
吞吐量(TPS):失败的事务数/事务总数。
错误率:CPU使用率、内存使用率、磁盘I/O和网络I/O。
资源使用率:用户没有等待时间且没有资源浪费时的并发行数。
最佳并发用户数:所有用户接受的最大响应时间并发行数。
最大并发用户数:
从客户提出请求到得到响应的整个过程的时间。 在某些工具中,请求响应时间通常称为ttlb(timetolasterbyte ),是指从启动请求到客户端收到最后一个字节响应所用的时间。 因此,也可以获得响应时间=网络响应时间APP响应时间。
因此,大多数公司项目都将绩效测试分为两个部分。 也就是说,APP前端的响应时间、后端接口的请求时间和返回时间分别是系统级性能测试和接口级性能测试。
网络传输时间: T3 T4 T5 T6
APP应用处理时间: T5 T7 T8
数据库服务器处理时间: T7 T8
响应时间=N1 N2 T3 T4 T5 T6 T7 T8
那么,什么是合理的响应时间呢?
响应时间
详细情况如下
2秒内得到响应,认为系统响应迅速。
如果在5秒钟内得到响应,则系统的响应速度被认为不错。
如果在10秒内得到响应,则系统的响应速度可能会很差。
如果超过10秒没有响应,则认为系统没有响应。 我想知道
互联网上对于用户响应时间,有一个普遍的标准,2510原则。
通俗地理解的话,加载速度可以看作是页面内容显示的速度。 以谷歌搜索为例,从用户输入搜索内容并按enter键到查看搜索内容的过程速度就是加载速度。 假设您选择并单击某个内容,然后跳转到某个页面。 页面内容可见的过程也是加载速度。
几年前,亚马逊曾统计过网页加载时间每增加1秒,每年就会减少16亿美元的收益。
一般来说,有什么方法可以通过加载速度改善用户体验?
l 加载速度
黄金法则:只有10%~20%的最终用户响应时间用于下载HTML文档,而剩下的80%~90%用于下载页的所有组件。 因此,改善响应时间的最简单方法是减少HTTP请求的数量,并消除不必要的重复请求。
l 减少HTTP重复请求
HTTP请求和响应的时间受离web服务器的距离的影响。 如果用户接近APP应用程序的web服务器,则可以缩短多个HTTP请求的响应时间。
内容分发网络(CDN )是一组地理位置分散的Web服务器,为了更有效地向用户分发内容,可以选择网络步数最少或响应时间最短的服务器。
l 使用CDN
例如通过压缩图像,减少图像的大小,缩短下载时间。 此外,通过比较客户端和服务器端的差异,可以快速展示本地缓存资源,减少同一内容的重复下载。
p>
CPU
在Linux系统下,CPU利用率分为用户态、系统态、空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间。平时所说的CPU利用率是指:CPU执行非系统空闲进程的时间 / CPU总的执行时间。
CPU可能出现的问题是,持续CPU占用较高、设备发热、使用非常卡顿、程序卡死。
什么情况下会消耗CPU 呢?
就是大量的运算。比如某个Activity或者方法有一直不停的运算消耗CPU(比如:不停止的while 或者for 循环)
一般从哪些指标监控CPU情况呢?
l 设备的应用在空闲时间,CPU的占用情况
l 应用使用时,CPU的占用走势,持续变化
l CPU的占用峰值
内存占用
Android系统中,每个APP进程除了同其他进程共享(shared dirty)外,还独用私有内存(private dirty),通常使用PSS(=私有内存+比例分配共享内存)来衡量一个APP的内存开销。
移动设备的内存资源有限,因此为每个APP进程分配的私有内存也是有限制的。APP 的内存常见问题有内存占用过高、内存泄露,以及内存溢出。
内存泄漏:程序在向系统申请内存分配后,使用后未释放。
内存溢出:程序向系统申请的内存空间超出了系统本身的内存,会出现崩溃,也就是客户端的carsh。
电量
Android的很多特性都比较耗电(屏幕、GPS、唤醒机制、CPU、连网等的使用)。
流量
目前的网络类型包含2G3G4Gwifi,其中还有不同运营商的区分。APP 使用过程中,常见的网络流量严重消耗的原因主要有,,调用响应慢,调用失败等各种情况。
通常从哪些指标去衡量流量消耗的状态是否正常呢?
l 应用首次启动流量提示;
l 应用处于后台,连续运行2小时的静默流量;
l 应用处于前台,高负荷运行时的流量峰值。
一般有哪些原因导致流量被大量消耗呢?
l 资源太多
l 图片太大
l 重复请求
l 日志上传
l 埋点数据
Crash和ANR
Crash的原因一般有:空指针、内存泄漏、数组越界、调用了高版本的API。
Android应用程序,如果主线程(即UI线程)在超时间内对用户输入时间没有处理完毕,就会出现Application Note Responding弹出框,用户需要选择等待或者强制关闭来杀死进程。
FPS
FPS,就是动画帧率。帧就是指动画或视频的“画面”,1幅画就叫做“1帧”,帧数就是在1秒钟时间里传输的图片的量,也可以理解为图形处理器每秒钟能够刷新几次,通常用FPS(Frames Per Second)表示。
每一帧都是静止的图象,快速连续地显示帧便形成了运动的假象,高的帧率可以得到更流畅和逼真的动画,因此每秒钟帧数 (FPS) 越多,显示出来的动作就越流畅。
那么什么是合理的FPS呢?
帧率达到60FPS以上,人眼主观就感受不到差别了。所以一般以60FPS作为衡量标准,即要求每一帧刷新的时间小于16ms,这样才能保证滑动中平滑的流畅度。
上面主要讲了性能的指标,具体各个性能指标的测试工具及方法,分别见其他文章。