性能测试(1):测试工具 1

最近在准备公司内部的性能测试相关的培训,然后开始整理一些相关的材料。也乘着这个机会,把手头上的一些文字整理一下,也顺便把一些想写没有写的慢慢写了,人总是有惰性的,要借着某件事的驱使才会去完成一些事情,或者是要有schedule的压力,否则会一拖再拖。做重要但不紧急的事情说起来容易,但是事情一多了之后就很难。

性能测试一直是自己喜欢的一件工作,一来是因为它牵涉的东西很多,总是可以学到很多东西。而来我想还有些深层次的原因,我喜欢速度很快,或者很犀利的东西,比如F1。估计没有机会能开上,但是我还是有机会把自行车骑到了时速50km。这不是疯狂,我也不是疯狂的人,但是就是那种对这种彪悍的东西的向往,这种向往让对技术的研究充满乐趣。遇到一个新的好的工具就很激动,上次研究JMeter 2.4的时候一个人在office折腾到10点多,看到并发上了4000之后很激动,感觉就像骑在我的Trek上飞驰。

我其实是一个讨厌做重复工作的人,非常的厌倦,所以总是愿意尝试新的东西,但是做性能测试好几年了,还是觉得很有趣,可能是要学的东西太多了,新的东西太多了。也确实如此,每次做的时候或者和别人讨论,总能发现新的东西,自己不知道的东西。

 

PS: 刚发现图片不能打开了,因为图片放在gdocs上面,大概被reset了,哎,无语,真想一脚踢到该死的墙上,我们是生活在怎样的地方啊。还没想到很好的办法,csdn居然也不能上传图片了,有时间自己弄个站点吧。



------------------------------  废话和正文的分界线 ----------------------------------------


在了解了性能测试的基本方法后,落实到实践的时候我们需要依靠相应的测试工具。简单的掌握工具的基本使用并不困难,但是这还不够,只有对测试工具,特别是后 面隐含的测试技术和方法有更深入的了解后,我们才能让测试工具更好的服务于我们的性能测试。下面我们将介绍一些业界比较常用的测试工具以及背后的测试技 术,限于篇幅,我们不可能介绍很多的工具,但是很多测试工具的基本组成都是类似的,有了这些基础之后是很容易触类旁通的。


性能测试工具的分类

如 果你在网上搜索性能测试工具的话,你会发现有非常多的选择,各种不同的来源,针对不同的应用。性能测试工具非常的庞杂,也有很多的分类方法,例如根据使用 的范围。这里为了便于分析特点,我们通过来源,大致将它们分为三类,商业工具,开源或者免费的工具,以及内部开发的工具。

       接下来我们分别介绍这三类工具,对于前两类我们会拿出一些比较知名的工具来介绍和分析,对于内部开发的工具我们会探讨一下自己开发工具中要注意的一些问题。


1 商业测试工具  

商 业测试工具是指那些以测试工具的名义作为商品来销售的软件或者硬件设备,当然,这里我们只讨论性能测试的工具,针对应用程序的性能测试,而不是交换机路由 器等网络设备的性能测试。在性能测试领域,有很多历史比较悠久的商业测试工具。其中的一个原因是性能测试一直为人们所重视,所以很多企业或者单位愿意花钱 去购买这样的测试工具,尽管通常这样的测试工具都价格不菲。如果从载体来分的话,又可以把这些商业的测试工具分为两类,一类是纯软件的测试工具,另一位是 硬件测试设备。这两类测试工具除了载体不同之外,功能或者特点都有很大的区别,所以在下面首先会分开来讨论各自的代表产品,以及一些特点,稍后会对两种类 型的工具做对比来分析。


1 .1 纯软件测试工具

纯软件的测试工具是性能测试工具比较常见的一个方式。比较知名或者常见的是下面几种:

Mercury LoadRunner, 已被惠普( HP )收购。

Segue SilkPerformer, 已被 Borland 收购。

Compuware QALoad

Empirix eTest Suite, 产品线被 Oracle 收购。

Rational Performance Tester ,已被 IBM 收购。


上面这些产品都是以软件包的形式发布,就像我们一般使用的 Windows 下面的应用程序,用户将其安装在操作系统上,目前主要支持的是 Windows 操作系统,也有些支持把产生压力的组件跑在 Linux 上面,比如 LoadRunner 。在使用的时候,用户通过产品提供的 UI 来配置和运行测试。前面三个是 Native Windows 应用程序, eTest Suite 的控制台是基于 Web 的, Performance Tester 是采用类似于 Eclipse Java UI 。在运行测试的时候,这些工具会将他们所运行其上的 PC 机作为测试流量产生的硬件平台来向被测的系统发起测试。当然,有些产品也支持将压力产生的组件分布在不同的机器上,这个后面在相应的章节会专门提到。

上面提到的几种工具在其官方网站上大多都提供使用时间受限的试用版,有兴趣的读者可以去下载并安装来直观的感受一下。通常来说,有经验的测试人员借助其提供的文档应该可以很快的建立并运行最基本的性能测试。


1 .2 硬件测试设备

除了上面提到的纯软件的测试工具,还有一类测试工具是以硬件设备的形式提供的,我们称之为硬件测试设备,也有将其称为测试仪器或者测试仪表的。顾名思义,这类工具在卖给用户的时候是以硬件的形式销售的。这个硬件可能是一台基于普通 PC 机改造的硬件,比如在一般 PC 机的基础上加入更多的网络接口和光口,预先装入专门的用于测试的操作系统及测试软件,然后定制外壳。也可能是一个专门设计的硬件平台,比如在主板上加入了 FPGA ,网络处理器等等,甚至还有些是自己设计的机框和板卡。不过无论哪一种方式,对用户来说这个硬件平台其实都是特有的,因为用户不可以自己去买台 PC ,然后把一个系统装上去就实现之前买的测试设备的功能,而必须从测试工具厂商那里去购买相应的设备。

考虑到大部分人之前接触更多的是纯软件的测试工具,所以这里我们会花更多一点的篇幅来介绍硬件测试设备。目前在国内的很多评测机构、软件开发商或者系统运营商的实验室里面,以上的一些测试设备都有一定的应用。

就目前商业性能测试工具的市场来看,硬件测试设备的种类也不少,下面列出了比较常见的几种:

Spirent (思博伦) Avalanche

IXIA 400T/1600T + CPM1000T8 XM2

Agilent (安捷伦) Network Tester

BreakingPoint BPS 系列


相对而言,前面三家进入性能测试设备领域的时间比较长,其产品也广为人知。后面则是最近几年才开始创业或者涉足这个领域,不过都开始有代表性的产品。这几家的产品都是硬件形式提供的测试工具,但是细看下来,各家的方案还是有很大的不同。


首先从产品支持的网络协议的层次来看,各家有所不同,典型的做法有三种。

1.      Avalanche 只支持从 TCP 往上的 4-7 层的测试。 就是说你可以拿它来测试一个 web 或者邮件服务器的性能,但是不适合单纯的来测试交换机或者路由器这种 2-3 层的网络设备。对于 2-3 层的测试, Spirent 通过它的另一个著名产品 SmartBits 来提供,在通信设备制造商中应用比较广泛。

2.      BreakingPoint 的测试设备在一个设备中支持 2-7 的协议,就是说在使用的时候,用户可以选择将比较底层的和应用层的流量混合在一起来做。

3.      IXIA 的做法和上面都不太一样,因为它的硬件架构不同。它采取的是机框加板卡的方式,不同的板卡配合相应的应用程序来完成不同类型的测试。比如有的板卡主要用来做 2-3 层的测试,有的专门用来做内容相关的应用层的测试。针对硬件架构的差异,后面还会有详细的分析。


很难讲哪家的做法是最好,因为这个要结合测试的需求。比如对用户来说,如果只有应用层测试的需求,那么 2-3 层的测试功能可能就意义不大。但是如果在有些需要将不同层次的流量混合在一起的场合,可能会有不同的选择。


关于对测试协议的支持这一块,现在在测试领域还有一个比较热门的概念是“ Triple play ”,直译过来就是“三重播放”,“三重业务”,就是说在同一个 IP 网络上提供语音、视频和数据业务。那么对于测试而言,要求工具能模拟出三种不同的流量。关于这种测试类型,在选择和评估测试工具的时候要仔细的考虑,请读者查阅相关的资料,限于篇幅我们在这里不做深入的探讨。


硬件架构

       既然是硬件测试工具,那么我们接下来就来分析一下他们的硬件架构的特点。

1.      类似 PC 的架构

Avalanche 的硬件比较接近普通的 PC ,目前最新的型号是 2900 ,见下图,它采用了两颗 Intel 的四核处理器和 16GB 的内存,支持 8 个独立的 Gbps 测试端口,也可以选配光口。相比之前的 2500 2700 型号,新版把之前分别称为 Avalanche Reflector 的两个独立的 2U 的设备集成到了一个 3U 的设备上。在 2500 2700 Avalanche 只能用来模拟客户端, Reflector 只能用来模拟服务器,而且受硬件设计的限制每次只能跑一个独立的测试,无法被多个不同的测试共享。在新的 2900版本中,这个问题得到了比较好的解决。关于这一部分,后面会作更详细的讨论。


2-1   Avalanche 2900

注:以上图片来自 Avalanche 2900 datasheet


2900 是一个独立的 3U 的机器,其上运行的其实是一个 Linux 操作系统,也可以通过 telnet 连接上去,左边的两个网络接口是管理口,运行在 PC 上的控制软件通过这个接口来管理测试设备。右边的口是测试端口,图上显示的 8 个均为千兆的普通以太网接口,俗称的电口。


2.      PC + 定制的架构

BreakingPoint BPS 测试设备可以算是 PC+ 定制的一个代表。以 BPS-1000 为例,它有 4 1 G 的电口和 4 1G 的光口, 3 FPGA 16 个处理器,外加 4 个定制的安全模块。其中三个 FPGA 用来实现高性能的不基于状态的 L2-3 层流, 16个可编程网络处理器 (NP) 实现基于状态的 L4-7 层业务流, PowerPC 处理器用来实现恶意攻击流。


3.      机框 + 板卡的架构

IXIA 的硬件实现方式和上面的两家都不一样。它采用的是机框加板卡的方式。测试仪器用来测 2-3 层的设备还是 4-7 的设备是由所插入的卡来决定的。机框为运行其上的板卡提供一个基本的环境,包括电力的供应,一些控制功能。这种方式有点类似于工业控制和通信设备中使用的单板机。

       为了便于说明和理解,下面给出 IXIA 400T 的图片。

2-2   IXIA 400T 机框

       还有一个机框的型号为 1600T ,体积要大很多,可以同时支持 16 块板卡。

上图中的 IXIA 400T (不包括其中已插入的 4 块板卡)是一个能支持 4 块板卡的机框。机框本身带有一个 PC 机,和我们使用的普通 PC 一样,装的是 Windows 系统,用户可以远程连接上去。在实际使用过程中,用户可以根据需要选配相应的板卡,机框可以看做是一个通用的平台。比如如果想测试 4-7 层的应用,我们可以选择一块型号为 CPM 1000T8 (可能还会有其它的型号,这里以这个为例)的板卡,插入到 400T 中,然后这就成为了一个应用性能测试的硬件平台,配合 IXIA 的性能测试的配置和管理软件 IxLoad 就可以开始性能测试了。下图所示的就是 IXIA CPM1000T8 ,它有 8 1 G 的测试端口,每一个端口都可以独立的被用于某个测试。



2-3   IXIA CPM1000T8 板卡

注:以上 IXIA 相关设备的图片均来自 IXIA 官方网站。


为了便于理解, 下面给出了一个关于 IXIA 400T + CPM 1000T8 的示意图。分别装在测试 PC 400T 机框上的 IxOS 可以看成是一个比较底层的平台,它运行在 Windows 上面,同时为上层的测试应用提供接口。 IxLoad 则是测试人员直接打交道的应用软件。


2-4   IXIA 测试系统示意图

上面提到的 1600T/400T 以及 CPM 1000T8 都是 IXIA 稍早一些的型号,后续推出的有 Optixia XM12 XM2 两种机框,分别可以支持 12 块和两块新型的卡。新卡的体积更大,端口密度也可以做得更高。


上面介绍了三种不同的硬件架构,接下来我们比较一下以上的三种架构。第一种和第二种的差别其实并不大,只是针对测试的范围加入了相应的硬件,和第三种相比差别就比较大了。相比而言,第三种的扩展性是最好的,以 CPM 1000T8 为例,每块卡就有 8个独立的测试端口,一个 400T 的机框就可以支持 4 块 这样的卡。所以对于大规模的测试,可能这种方式会更高效。但是如果一般不需要那么高的并发,也不需要很多不同测试项目并行的话,前面的也能满足要求。需要 注意的一个问题是,如果实际测试中需要并行采集的数据很多,而且频率很高,那么背板的速度和带宽可能会成为瓶颈。因为在这种架构中,每张卡的每个端口运行 的程序是在测试运行的时候,由机框上的程序装载到卡上的,然后机框采集每个端口的实时测试数据,传回给 PC 端的控制软件。对于这种架构,大家可以看出,核心的功能是在板卡上,所以通常板卡的价格要高于机框的价格。


to be continued...



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值