性能测试工具的出现有很长时间了,而且已经有很多的领先者,比如Mercury LoadRunner, Rational Performance Tester, Segue SilkPerformer, 还有Empirix, Compuware,Quest的产品,后面的因为没有机会试用,所以不熟悉。以上这些工具都是纯软件的性能测试工具的代表。各家的产品设计理念都不相同,基本上每家都提出了一些概念和卖点。但其实它们的主要架构都是类似的,大致可以分为以下几个方面:
1. Virtual User Generator。性能测试很多是要模拟多个用户或者client的行为,所以一个自然的起点是你要知道一个用户的behavior,这个模块的输出一般是一个client的脚本,可以独立执行完成一次操作。各家用的语言不同,大致有C,Java,Pascal等几种。Of coz都说自己的好,可能用的人还是觉得自己熟悉的好。这个话题也很有意思,当别论。还有一个问题是如何生成这样的脚本,基本上有两种办法,一是自己写,根据手册,甚至有些可以用标准的C和Java语言。二是录制,就是捕捉真正的client的一次操作过程,然后通过协议的反向解析,得到步骤,就是上面说的脚本。很多时候可能是先录制,再在上面改改。
2. Load Generator。 一个用户的行为已经有了,现在的问题是要模拟出成百上千的用户。这个可以借助多进程或者多线程的方法,单个机器的能力有限,所以很多都支持distribution的方法,可以把很多机器组织起来作为一个group来产生load。
3. Conductor/Controller。性能测试有时候像指挥一群人长跑,所以需要组织和协调,比如是所有人听到枪声就开始跑呢还是一批批的跑,好点的工具都支持压力曲线。如果跑的过程中队形乱了,你也可以大喊一声stop,让所有人都停下来,退回原点。Conductor做的事情还有很多,比如可以设定monitor和实时的数据显示。
4. Analysis/report generator。软件测试跑完了之后自然是要有结果的,一般都会提供一份自动生成的report,这些就是分析模块做的事情。好的工具应该可以提供详细的不同层次的数据分析,也有一些智能化的分析会给出可能的bottleneck。
潮流总是一阵一阵的,今年皮草明年复古。IT这个行业也是一样,最近几年的一个潮流是Appliance,简单的说就是以前卖软件,现在把软件装在硬件里面连硬件一起卖。比如一些网关安全产品,像http,email方面已经有很多了,还有Google也推出了search appliance。记得以前联想出过汉卡,还有什么杀毒卡,后面都被纯软件取代了。现在又开始有一些硬件取代纯软件的例子。由此可见很多东西都不是绝对的,要看环境了,有点适者生存的味道。关于纯软和appliance各自的优劣,我觉得是一个big topic,还有很多问题没有想太清楚,另找机会来讨论吧。
还是回来看性能测试工具领域,现在也有这样的趋势。其实上面说的性能测试,受个人眼光之狭隘,更偏向于应用系统的性能测试。因为在网络基础设施,比如交换 机,路由器和无线设备的测试方面,性能测试设备的使用由来已久,而且占主导地位。成熟的领域总是有一些厂商奠定了自己的领先地位,比如Spirent,IXIA和Agilent等等。现在的一个趋势是这些传统的网络性能测试厂商开始向应用性能测试领域挺进,唯一的解释是application load testing领域是一个很大的市场。是的,Yankee的预测是这个领域的revenue在08年将超过600M USD,所以对他们而言,跑到第七层是一个必然的方向。他们的宣传口号已经变成了“提供完整和先进的2-7层性能测试解决方案”。现在这方面已经有了一些比较成熟的产品,比如Spirent的Avalanche+Reflector,IXIA的硬件搭载它们的IxLoad模块。上面提到的性能测试工具的四个主要模块他们都有。很多的性能测试用纯软件和appliance都可以完成,那么他们就没有分别了吗?目前来看还是有不少差别的,比如以下几个方面。