同样的项目、同样的性能需求,让不同的测试人员来测,会是相同的结果么?

  假设有这样一个小论坛,性能测试人员得到的需求是“支持并发50人,响应时间要在3秒以内”,性能测试人员A和B同时开始进行性能测试(各做各的)。

  只考虑发帖这个操作,A设计的测试场景是50人并发发帖,得到的测试结果是平均完成时间是5秒。于是他提出了这个问题,认为系统没有达到性能期望,需要开发人员进行优化。

  B设计的测试场景是,50个人在线,并且在5分钟内每人发一个帖子,也是1分钟内有10个人发帖子,后得到的测试结果是平均完成时间2秒。于是他的结论是系统通过性能测试,可以满足上线的压力。

  两个人得到了不同的测试结果,完全相反的测试结论,谁做错了?

  或许这个例子太极端,并发和平均分布的访问压力当然是截然不同的,那我们再来看个更真实的例子。

  还是一个小论坛,需求是“100人在线时,页面响应时间要小于3秒”。A和B又同时开工了,这时他们都成长了,经验更加丰富了,也知道了要设计出更符合实际的测试场景。假设他们都确认了用户的操作流程为“登录-进入子论坛-(浏览列表-浏览帖子)×10-发帖”,即每个用户看10个帖子、发一个帖子。于是他们都录制出了同样的测试脚本。

  A认为,每个用户的操作,一般间隔30s比较合适,于是他在脚本中的每两个事务之间加上了30秒的等待(思考时间)。

  B想了想自己看论坛时的情景,好像平均每次鼠标点击要间隔1分钟,于是他在脚本中的每两个事务之间加上了1分钟的等待。

  他们都认为自己的测试场景比较接近实际情况,可惜测试结果又是不同的,很显然A场景的压力是B的两倍。那谁错了呢?或者有人说是需求不明确导致的,那么你需要什么样的需求呢?

 这里我想问几个问题,希望各位看完了上面的小例子后想一想:

  如果有另一个人和你测同样的系统,你们的测试结果会一致么?

  如果不一致,那么谁是正确的?

  如何证明测试结果是有效的?

  如果你有了一些疑惑,对之前的测试结果少了一些自信,那么请继续。

  服务器视角 vs. 用户视角

  性能测试中非常重要的一块内容是模拟预期的压力,测试系统运行在此压力下,用户的体验是什么样的。

  那么压力是什么?压力是服务器在不断的处理事情、甚至是同时处理很多事情。压力是服务器直接处理的“事情”,而不是远在网络另一端的用户。