谈到软件测试,就会想到性能测试,弹起性能测试便会想到QPS、TPS、吞吐量,有很多人认为这三个是一个东西,实际上并不是。此处以一个业务举例。
业务A:一个登陆的功能,主要页面为登陆页面、登陆成功后跳转页面success.html。整个事务的主要资源有登陆接口(api)、success页面的样式css.css,加载的js脚本script.js。
整个事务流程:发起请求-后端接口处理请球-返回到前端页面并请求加载前端资源
一、TPS
TPS(Transactions Per Second ),字面意思即每秒处理事务数,以业务A为例, 发起登录请求-后端处理请求-返回前端页面就是一整个事务,如果一秒钟能处理N个这样的流程,那么TPS就是N/S。
二、QPS
QPS(Queries Per Second),字面意思即每秒查询数。其实这个最早大部分时候被用来描述数据库中SQL的查询性能,后面也有人用它描述请求,用请求来计算的话,就不包含插入、更新、删除操作了,只针对查询接口。一般对于一个事务访问,会形成一个 “ T ”;但一次 " T " 中,可能产生多次对服务器的请求,服务器对这些请求,就可计入 QPS 之中。例如在业务A中,除了接口还有其它页面资源信息,一次请求包括css.css,script.js以及api,向服务器发起了3次请求,那么QPS=3。
个人认为QPS现在的含义混淆不清,很容易产生误解,所以应该很少会用到这个来判断性能指标,还是TPS较为准确。
三、RPS
RPS(Request Per Second),字面意思即每秒请求数。一般我们将它理解为一个HTTP请求。如果一个事务只有一个接口,那么TPS=RPS,如果这个接口是查询接口,那么TPS=RPS=QPS。用到的也较少
四、吞吐量
用于衡量网络成功传输的数据量,单位是Byte/s,一个系统的吞度量(承压能力)与request对CPU的消耗、外部介面、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统介面、IO影响速度越慢,系统吞吐能力越低,反之越高。也就是说吞吐量一般要根据实际情况看与什么指标关联性更大来判断系统的承受能力。
吞吐量这个概念争议也比较大,有人说吞吐量和TPS一样,实际关系并不是特别大。注:jmeter报告中的吞吐量指的可不是这个,而是TPS
五、资源利用率
服务器主要包含:CPU、内存、磁盘、网络
总结:个人认为现在最好判断性能的指标就是TPS,QPS和RPS实际很少用到,吞吐量的概念现在也模糊不清。概念什么的就看看知道是什么是什么意思以及它们的区别就好了。