项目背景
某通信产品在提测阶段,领导要求支持1w人同时在线,支持1000并发,去测吧
理解需求
“支持1w人同时在线,支持1000并发”
“1w人同时在线”这个理解起来简单一些,对于即时通讯产品来说,就是1w个长链接,直接写脚本建立长链接就行。
“支持1000并发”这里就产生歧义了:
1、什么功能支持1000并发?所有接口吗?
2、1000并发指的是什么?
你问领导啥是1000并发,他半天讲不出来,因为他也不知道要的是什么,听别人说并发越高越好啊(-_-||)
我们从测试角度理解,需求就是服务端能处理1000个人在单位时间内同时发送一次请求的能力,即该功能模块处理能力可达到1000tps
好的,那开始用jmeter模拟
线程数就是并发量吗
那么问题来了,jmeter的线程数就是并发量就是tps吗,不是
1000用户同时使用,1s内产生的请求数可能大于也可能小于1000,是一个不可控的过程
jmeter设置1000线程,如果不设置集合点,不能认为是1000并发,并且这1000并发指的是客户端产生的1000个请求,不代表服务端一定能处理完成,也就是说1000线程不一定能达到1000TPS
服务端1000TPS,指的是服务端在单位时间内能处理1000个请求,这1000个请求可能是10个线程并发就能完成,也可能是100个线程并发完成
或者100个线程达到了2000TPS,却因为继续增加线程,导致队列堵塞,服务端TPS从2000掉到了1000TPS都有可能,这种情况就是出现了性能问题。所以做性能测试时要使用阶梯式加压的方法
结论
所以,并发是指客户端在同一时间发出的请求数,线程是jmeter为模拟发出请求创建的实现方式,TPS是服务端实际处理的请求数,三者无必然关系。