性能测试的核心原理
1 基于协议,前后端交互机制,性能核心。基于界面决定和前端用户交互,基于代码决定了后端。
1 网络分布式架构。
2 单机应用,比如安安兔,鲁大师。主要判断io读写,以及对资源的消耗。
2 多线程,模拟多个虚拟用户量同时访问系统。
3 模拟真实的场景。场景的设计合理直接决定了你得出的性能数据,从而影响你对系统的性能判断。
核心指标:
1 响应时间:
前端发送请求,到后端返回的时间,从测试角度看,不包含前端对响应的渲染时间。
响应时间=发送网络延时+应用程序处理的时间(包含应用程序和数据库处理时间)
一般遵循3,5,8原则。取决于用户带宽,服务器带宽,服务器处理时间。
2 事务处理能力(TPS):
TPS标识单位时间内能够完成事务数量,也成为每秒事务数TPS。每个系统的TPS都有上限,并不随着用户的增加而增加。
泛指的概念:比如打开一个页面-----登录----挑选商品-----网购支付,这每一个步骤都是可以理解成一个事务,甚至整个流程都可以理解成一个事务。每一个事务都有开始和结束,比如lr中要用lr_start_transaction("start_xiaohua")标识事务开始,lr_end_transaction("start_xiaohua", LR_AUTO)标识事务结束,所以TPS是软件测试结果的测量单位
对于已经上线的系统,可以选取高峰时刻,在5分钟内,获取系统每笔交易的业务量和总业务量推算出TPS。
TPS=请求数/时间
3 每秒查询率(QPS):
QPS标识一个特定的查询服务器在规定时间内处理流量多少。QPS类似于TPS。假如一个TPS中只有一个接口且接口内部没有向服务器再请求资源,那么此时TPS=QPS,否则不等。比如打开一个页面,就可以认为是一个TPS,但是一个页面的请求可能回像服务端再次请求多次请求,服务器对着这些请求,就可以计算计入QPS。例 每秒能进行N个事务的请求,假设一个TPS内包含4个QPS,那么就是N*4,通常QPS用来衡量单接口,TPS用来衡量多接口的混合场景,当然你把单个接口当做一个事务也可以。
一个系统的吞吐量通常有QPS(TPS)并发数来决定,这两个值都有一个相对的极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去,如果压力持续增大,系统的吞吐量反而回下降,因为系统超负荷工作,频繁的上下文借还,内存等其他小号导致性能下降。
原理:每天80%的访问集中在20%时间内,即根据二八原则,这20%时间叫做峰值时间
4 思考时间:
用户打开一个页面之后,回浏览该页面,此时并不向服务器发送请求,以8秒为基数,进行50%---200%的随机取值。以便更好的模拟用户请求的时间。
5 每秒点击数(HPS):
html中的一个img src就可以理解成一个HPS,,应该尽量较少HTTP请求,这取决于用户的数量。常见问题图片过大,连接数过多,该压缩的压缩,该合并的合并。
和tps qps的区别,个人认为 tps>qps>hps
6 最大连接数;
系统的最大连接数通常受制于容器例如tomcat,apache等以及数据库的最大连接数。当tps出现瓶颈的时候,但是资源没有到达瓶颈,那么很大可能就是此类的性能问题。
7 系统资源:
1 cpu:
1 %Processor Time cpu使用率。70%--80%一般视为最大值,当然cpu使用率达到100%也不代表系统会崩溃,加入cpu等待队列不超过4的化。
2 %Processor Queue Length cpu等待队列长度。一般控制在2*内核数
2 内存:
1 总体可用数
2 虚拟内存交换率 page/sec。
虚拟内存,通常内存会将一部分数据放入到硬盘缓存中去,使用的时候再读回来,这种来回的数据交换就叫做内存的交换律,交换的单位是页page,所以也叫做内存的也交换率。
3 缓存:
分配给一个应用程序使用的内存。
进行系统级优化的时候,重点利用好缓存机制。代码层面算法 sql语句等,减少内存,减少运算次数,预算次数决定cpu消耗,内存决定了资源占用。
3 磁盘io
应用程序存在硬盘谁给你,但是使用的时候,需要加载在内存上。
1 硬盘使用率 %diskTime
2 硬盘使用队列长度
4 网络带宽(Bytes Total/sec):
上相和下行相对而言
1 每秒接受的数据量,低于下行带宽/8
2 每秒发送的数据量,低于上行带宽/8
Bytes Total/sec 用来描述发送和接受字节的速度,一次来判断网络带宽是否存在性能瓶颈。
5 线程:
进程是资源单位,线程是执行单位,在cpu三状态轮换图中,实际执行的是线程。
如需了解更多测试技术信息请关注:深圳多测师软件与技术服务有限公司