性能测试工具的基本功能和可能出现的技术要点分析(2)

发表于:2014-09-09来源:uml.org.cn作者:王玉亭点击数: 标签:性能测试
压力脚本的方式给我们提供了模拟各种压力状况的有力手段,通过人为制造各种类型的压力,我们可以观察被测系统在各种压力状况下的表现,从而定位系

  压力脚本的方式给我们提供了模拟各种压力状况的有力手段,通过人为制造各种类型的压力,我们可以观察被测系统在各种压力状况下的表现,从而定位系统瓶颈,作为系统调优的基础。因此,提供丰富的对后台系统进行监控的手段是性能测试工具第二个最主要的评价指标。监控应该不在被测系统上安装任何软件,否则的话,为了监控而引入的 “ 代理 ” 之类的小软件将给被测系统引入新的可变因素,一方面造成了测试结果的不准确,另一方面会给用户的系统的稳定性可能造成影响,从而导致用户的反感和拒绝。目前,各种监控手段大都采用所谓 “ 无代理 ” 的方式,即不在被测系统上安装任何软件,仅仅通过改变被测系统的配置,就可以对被测系统进行监控。需要监控的部件多种多样,包括操作系统、数据库、中间件、应用系统、安全模块、网络、防火墙等等。

  一组压力测试运行完毕后,我们会得到详尽的性能数据。这些数据包括最终用户的响应时间,后台系统各个部件的运行数据。这些数据的量非常大,往往包括几千个变量的运行曲线,大小可能达到上 G 的规模。靠人工去分析这些数据几乎是不可能的,性能测试工具必需提供数据分析工具,帮助性能测试人员去阅读、解读和分析数据,辅助测试人员定位系统的瓶颈。数据分析工具是保证最终测试成果的手段,因此它是性能测试工具中最重要的部分之一。

  目前已经存在的性能测试工具林林总总,数量不下一百种,从单一的开放源码的免费小工具如 Aapache 自带的 web 性能测试工具 ab 到大而全的商业性能测试软件如 Mercury 的 LoadRunner 等等。任何性能测试工具都有其优缺点,我们可以根据实际情况挑选用最合适的工具。

  前面已经指出,性能测试是一项复杂的工作,一个性能测试项目的质量如何,测试人员的素质、能力和经验是最关键的因素。拥有世界上最先进的 CT 扫描仪并不能让你成为一个优秀的医生。不过, “ 工欲善其事,必先利其器 ” , 拥有一套自己非常熟悉,功能全面、质量可靠的性能测试工具对于从事性能测试的人员非常有吸引力。在商业性能测试软件中,大多价格非常昂贵。由于大多数性能测试工具是按照并发用户数收取费用,因此要获得大的并发量的价格是很高的。虽然存在很多免费的性能测试工具,但其功能不足,彼此不成系统,不能灵活搭配使用。

  一套功能全面的性能测试工具的开发工作量是非常大的,这也是为什么商业性能测试软件价格昂贵的主要因素之一。由于互联网和开放源码运动的发展,性能测试工具的各种功能都以各种形式的开源软件存在了。 如果我们设计出一套合理的架构,在统一的架构下整合各种缺乏系统性的开源工具软件,使之能够彼此配套,搭配出一套功能全面、质量可靠,而且是开放源码的性能测试工具是完全有可能的。

  本文的下面部分具体论述性能测试工具的基本框架和技术要点,希望热爱编程,希望对开放源码运动有所贡献的读者能从本文的论述中获得一些启发,沿着作者的思路继续往前行。

  • 性能测试工具的体系架构

作者对性能测试工具 LoadRunner 比较熟悉,通过对 LoadRunner 的了解和评估,作者设计的性能测试工具体系架构如下图所示:

  性能测试工具的组成部分有如下几个:

  • 虚拟用户脚本产生器 Vugen(Virtual User Generator)

  • 压力调度和监控系统 Conductor

  • 压力产生器 Player

  • 压力结果分析工具 Analysis

  通常,进行性能测试项目的一般步骤如下:

  • 用户确定需要录制的交易,通过用户操作和 Vugen 的录制,记录并生成自动化脚本。

  • 修改脚本,确定脚本能够回放成功。

  • Conductor 是一个集中控制平台,它和压力产生器 player 互连,指定脚本在 player 上的分配,并控制 player 向被测系统的加压方式和行为。

  • Conductor 同时负责搜集被测系统的各个环节的性能数据。各个 Player 会记录最终用户响应时间和脚本执行的日志。

  • 压力运行结束以后, Player 将数据传送到 Conductor 中, Conductor 负责将数据汇总。

  • 数据分析工具 Analysis 读取压力测试数据,进行分析工作,确定瓶颈和调优方法。

原文转自:http://www.uml.org.cn/Test/200503183.htm