遇一山,过一山,处处有风景;只要勇敢向前,一路尽是繁花盛开。 | (点击查看→)【测试干货】python/java自动化、持续集成、性能、测开、简历、笔试面试等

性能测试:TPS和QPS的区别

做测试,ps、jps、tps、qps、rps、hps,你理解几个?

技术群里(857801887),问得最多的就是tps和qps,有相似的地方,也有差异的地方,我简单谈下自己的理解。

TPS

TPS:Transactions Per Second,意思是每秒事务数,具体事务的定义,都是人为的,可以一个接口、多个接口、一个业务流程等等。一个事务是指事务内第一个请求发送到接收到最后一个请求的响应的过程,以此来计算使用的时间和完成的事务个数。

以单接口定义为事务为例,每个事务包括了如下3个过程:

  a.向服务器发请求

  b.服务器自己的内部处理(包含应用服务器、数据库服务器等)

  c.服务器返回结果给客户端

  如果每秒能够完成N次这三个过程,tps就是N;

如果多个接口定义为一个事务,那么,会重复执行abc,完成一次这几个请求,算做一个tps。

QPS

QPS:Queries Per Second,意思是每秒查询率,是一台服务器每秒能够响应的查询次数(数据库中的每秒执行查询sql的次数),显然,这个不够全面,不能描述增删改,所以,不建议用qps来作为系统性能指标。

区别

如果是对一个查询接口(单场景)压测,且这个接口内部不会再去请求其它接口,那么tps=qps,否则,tps≠qps

如果是容量场景,假设n个接口都是查询接口,且这个接口内部不会再去请求其它接口,qps=n*tps

 

jmeter聚合报告中,Throughput是用来衡量请求的吞吐量,也就是tps,tps=样本数/运行时间;我们定义的是tps,不是qps

如果没有定义事务,会把每个请求作为一个事务

说明:实际工作中,是连续阶梯加压,所以聚合报告的tps没有参考价值,此时需要使用grafana+influxdb:https://www.cnblogs.com/uncleyong/p/11885192.html

 

个人建议

QPS是Query Per Second,是数据库中的概念,每秒执行条数(查询),被引申到压测中来了,但是不包括插入、更新、删除操作,所以不建议用qps来描述系统整体的性能;

建议用tps,这个t,你可以随意的定义,可以是一个接口,也可以是一个业务流程等等。

 

另外,面试题:pv可以用来作为性能测试的指标么?欢迎加WX群、Q群交流讨论。

 

 

 

【热门测试技术,自学提升推荐】自动化、性能、测开、项目实战、简历、笔试面试、职业规划

 

详见:https://www.cnblogs.com/uncleyong/p/15777706.html

 

posted @ 2019-06-26 22:20  全栈测试笔记  阅读(127146)  评论(3编辑  收藏  举报
浏览器标题切换
浏览器标题切换end