关于线上与线下性能测试结果的差异

有几个学员经常会对线上与线下测试结果不一样的问题产生纠结...所以还是统一写一篇这样的文章吧
  其实这个问题本身不用纠结,就好比再牛逼的双胞胎还是有他们不一样的地方。本身性能测试就是一个预估风险、排查瓶颈、了解系统现有性能的一个手段。就好比小时候你是个好孩子,但不意味这你长大了也是一个好孩子,也许你会像海波兄那样的...so,性能测试只是一种手段,减小风险的方法而已。
  再者,本身线上和线下的测试结果就不太具有可比性,原因为:
  1、线下与线上机器环境配置的差异
  2、线下和线上业务数据的差异,虽然我们线下要最大可能的模拟用户行为,但你不能拿保证100%的模拟啊,那么多用户你都能兼顾到?
  3、线下和线上产生压力时间的差异,线下是模拟高压力大并发的情况,而线上通常压力不大,大并发主要集中在某几个特殊时段。
  说道这里,又会有童鞋继续纠结了,那为毛还做测试啊,都不准确,做个毛毛?好吧,那我想反问你一句,一辆汽车开的人不同,开车的习惯不同,会对车造成不同程度的影响,既然我们没法100%测试模拟,那我们干脆就产出汽车后直接卖给你好了,做个什么测试和路测,多tmd费劲。对吧?这时候你不干了,你说那多危险,万一有大问题呢,不就要了我的命了吗?呃...这时候你明白了?那换到性能测试中就不明白了?
  我们做性能测试的意义其实很简单:
  1、预防、评估风险,如果有大问题可以早点发现,减小风险。这里理解极其简单,你程序存在内存泄漏的问题,难道线下2g和线上4g这个内存差异就不会有内存泄漏了?这就好比,你不会骑永久牌自行车,难道给你换个小强牌(瞎编的...)自行车你就瞬间会骑了?
  2、前端性能测试。可以通过前端性能测试保证页面性能,给用户带来较好的用户体验。
  3、单接口性能调优。主要目的是优化接口性能,排查接口性能问题,及应用内存隐患。
  比如,我们会准备几种业务场景,比如全走DB和全走缓存,分别得到这几种场景下,应用最佳处理能力情况下,在测试中排查是否存在性能提升的地方,及代码问题导致的内存泄露等。
  4、容量评估。可以根据线上机器比例,线下模拟配比来估算。

最新内容请见作者的GitHub页:http://qaseven.github.io/

上一篇:photoshop设计绚丽闪电效果的网页宣传广告


下一篇:CentOS 6.4 下搭建 MongoDB 2.4.9 环境