假设一个页面有一百个HTTP请求(CSS、图片、JS、HTML等等),浏览器使用6个并发线程(即同时建立6个TCP连接并发请求HTTP),假设每个HTTP请求响应时间都是100毫秒。
总的HTTP时间是100*100=10秒,但由于浏览器使用6个线程,所以认为每个线程处理100/6的17个HTTP请求,所以浏览器打开这个100个HTTP请求大概2秒(17*100=1.7秒)时间,
所以用户感知到的是访问一个页面只要2秒时间。

使用性能测试工具录制这个页面,产生了100个HTTP请求的脚本。
性能测试时一般需要为一个页面或者一个交易配置一个事务,目的输出响应时间与成功、失败的统计就可以方便得到页面或交易是否成功,时间是否合理。

1、使用lr其他不支持模拟浏览器并发的执行脚本,由于每个虚拟用户是串行执行脚本,即一个一个执行HTTP,执行100个,此时每个HTTP请求响应时间都正常,还是100毫秒,
则工具输出事务(即页面)的时间是100*100=10秒。
如果你不懂看HTTP,不懂页面有多少个HTTP,不会去分析HTTP请求时间是否合理(这个也要求高且复杂,因为每个请求响应时间多少合理可能都不一样,不一定都为100)
这时候,你就有疑问,为什么我用页面是2秒,工具执行是10秒呢,其实每个HTTP还是正常,页面还是正常范围内,但你不会分析,你就会奇怪(性能分析是一门很有难度的技术,一般是很有经验,高手才会分析)
很多lr用户都可能会遇到这样问题,这个在51测试论坛发现很多这样的贴:http://bbs.51testing.com/thread-1077093-1-4.html

OK,假设上面你会看每个HTTP请求时间都为100毫秒,知道合理;但当并发多个虚拟用户时,由于并发压力大,导致有些HTTP请求已经超过100毫秒,甚至达到1秒了,输出的事务时间有的10秒,有的12,15秒, 这时候,你怎么知道哪些时间是合理的呢?
lr与其他测试工具没有提供查看每个虚拟用户里面HTTP请求执行时间,只有汇总的。


举个道理:
100辆车,需要到达终点,两种方式:
1)在一个车道一辆一辆向前开
2)在6个车道同时向前开
肯定6车道花的时间小,对路的压力大。如果第1种方式堵车(阻塞,如访问数据库),就会导致后面的车也堵住,整个时间就长;而6车道影响不大;

2、kylinPET实现了模拟浏览器并发,录制时记录了浏览器并发多少个线程,每个线程是怎么发送HTTP的,间隔多长时间
上面例子,100个请求,一个虚拟用户就能启动6个线程去执行,假设每个HTTP请求都正常响应,则事务(页面)时间为2秒,与正常浏览器一样,用户一看就知道正常,不用去分析

假设并发多个虚拟用户时,由于并发压力大,导致有些HTTP请求已经超过100毫秒,甚至达到1秒了,输出的事务时间有的2秒,有的4,5,10秒,这时候,你就知道哪些用户时间是不合理,
然后再从用户详情看这些不合理用户是哪些请求导致的,这样用户分析就很方便,不会看不懂。

3、上面例子,假设服务器每个请求响应都是100毫秒,则串行时一个用户一秒对服务器的压力是10个请求;而模拟浏览器并发则一个用户对服务器的压力是近60个请求;串行TCP连接是只有一个,并行是6个;
压力是不一样的,并行压力更大,且才更真实,因为与浏览器基本一样。

所以,你使用串行工具测试说你服务器可以支持100个用户,其实是错的,因为实际真实浏览器并发时100个用户压力比串行要大得多,所以你工具测试的结果是错的。


另外,从需求或领导层面,需要提供的是系统能支持多少用户,而不是系统能支持多少HTTP请求/秒。
系统能处理1万个HTTP请求,不代表系统能支持1万/100(假设页面100个请求)个用户;
因为请求有快有慢、有大有小,不能简单的乘除,也没有这样的公式。