淘宝网每年的双11 活动都是对其服务器性能的挑战。因为在这一天所有商品半价,购物的用户量剧增。做为淘宝网的高层更多的关心在线用户数,用户交易量,总交易金额等,做为一名技术人员,我们可能更关心当天系统的吞吐量、每秒钟点击率以及系统资源的消耗情况等,对!这就是系统的性能。那么性能的本质是什么呢?我试抓住一些点来解释。
基于用户体验的性能测试
但对于一个用户来说,他可以不关心上面这些(系统的性能参数),大约有一部分的消费者会因为网站过于技术化或者性能问题而选择了离开。换言之,如果你的网站速度太慢客户就会离去。这是所有的互联网用户都熟知的道理。这时你的第一想法不是“哎呀,不知道站点的吞吐量怎样”,而是“简直太慢了!我可没有时间在这里等,到别处去吧”。现在想想,人们离开你的站点是否因为性能问题?所以,在做性能测试的时候除关注吞吐量、点击率这些参数外,我们更需要站在用户的角度来测试实际的性能感受。如果你经过测试声称网站可以承受更多的用户同时访问,但实际的用户体验性非常差,那么做你的性能测试又有什么意义呢?
现在市场上有大量的书讨论如何设计良好的性能,还有更多的书把重点放在如何使得站点更加直观、生动和易于炒作上。关于速度的好处也讨论过,但如何真正并优化系统来提高用户体验呢?那就是直接的用户体验测试了。有两点方法可以做一这点。一是可以把站点直接投入到能够进行数据采集和系统调优的生产环境中,并祈祷你的网站不会太慢或崩溃。另一个种明智的选择是模拟真实的用户活动,进行重复的测试和调优,最后再投入到生产环境。
“明确”的性能需求
当测试人员进行性能测试工作时,真正让他们感到困难的不是测试工具如何使用,也不是如何对测试数据进行分析与系统调优(对于一个经验丰富有性能工程师来说,这真的不难)。让他们感到困惑的是如何得到准确的量化的需求,比如:
A. 网站可以支撑多少在线用户数
B. 网站可以支持多少用户同时交易
C. 电子邮件系统每秒种可以处理多少封邮件
D. 可以支持多少人同时浏览网页
类似于这样的数据会出现客户对系统的性能需求中,好吧,有了这些需求,我就开始性能工作了,这些需求真的很明确么?
我们来看下面的例子,一个购买汽车的用户想知道:
这辆汽车开100公里的耗油是多少升。(对,就是他坐在里面试驾的那辆车)
如果你是一个严谨的汽车销售,不会马上会说这辆车每公里的耗油是多少。而是在大脑中快速的列出的汽车驾驶环境:
1、车上坐几个人?
2、车上带多重的物品?
3、路况如何,是高速还是拥挤的市区?
4、天气如何,温度如何,要开空调码?
5、驾驶时间是白天还是晚上(如果是晚上要开车灯)?
6、驾驶习惯是怎样的?
你唯一能做的就是继续向客户确认更明确的需求,很多时候其实客户也无法给出精确的需求。这个时候你就要多参考常规的情况下,参考同类产品,或尽量引导用户去明确具体的需求,尽量与客户达到统一的共识。
“假设”的测试环境
现在是不是觉得性能测试有太多的前置条件,它们或大或小的影响着测试的结果。
关于这些前置条件,或者我们称之为假设(assumption),我把一些做法归纳为三个阶段。
一:做了假设却不知道自己做了假设
比如前面提到的那个耗油的问题,有人的做法是我就开100公里看看,得出来是多少就是多少,比如9L。然后就告诉别人这个车的100公里耗油是9L。
问题是这样的结果对你是OK,因为你有切身的的体验,知道遇到的状况,可是测试的报告是要给别人,甚至你都无法直接面对或者沟通的人参考。这就会很容易误导别人,即便这不是你的本意,而且你自已也确定你是真实的记录了结果。这里的问题在于你并不清楚自己所做的假设,因为我们一直在做这样的假设。
二:做过多的假设
“当路面平坦,无任何红绿灯,风速5km/h只有一名70kg的乘客,时速稳定在70km/h,良好驾驶习惯,....的情况下,耗油是7.1L/100km。”
原文转自:http://www.uml.org.cn/Test/201301104.asp