对Rational Performance Tester的改进

发表于:2008-05-30来源:作者:点击数: 标签:rationalRationalPerformanceperformanceTester
前言 在 性能测试 中,我们往往遇到这样的一些问题,比如需要通过不同的用户进行登录操作,或者需要动态的输入数据,在 测试工具 中往往我们是通过数据池来进行完成的。比较全面的数据池的设计往往会考虑用户数据的来源,比如文件, 数据库 等多种形式,但其
前言

  在性能测试中,我们往往遇到这样的一些问题,比如需要通过不同的用户进行登录操作,或者需要动态的输入数据,在测试工具中往往我们是通过数据池来进行完成的。比较全面的数据池的设计往往会考虑用户数据的来源,比如文件,数据库等多种形式,但其实如果采用直接映射数据库中的某些列来进行实现,虽然在操作上会省下很多数据加工的时间,但在实际运行过场中会有诸多缺点,主要体现在每个用户每次获取数据时就需要消耗大量的时间,因为往往数据库在远程的服务器上而非本地,如果频繁的交互会使真正需要了解的响应时间大打折扣。出于测试尽可能反映真实的应用响应时间的考虑,Rational Performance Tester 采用了文件的方式来进行数据的导入。

  Rational Performance Tester 内置的 DataPool 的实现机制

  Rational Performance Tester 内置的数据池采用了 TPTP 的前身 Hyades 测试框架的实现方式,也就是通过 EMF 进行实现。其设计图为:

  图 1: 设计图

设计图

设计图

 

设计图

  其中比较主要的几个概念是:

  •  Variable:主要指一个列,通常包含一个名字和建议的类型
  •  Record:行,包含多列的数据
  •  Cell:数据块,对应的是某行某列
  •  EquivalenceClass:等价类,数据池中记录的逻辑组合
  •  Datapool:数据池

  往往我们在通过 RPT 的界面建立数据池或者从 CSV 文件导入数据池时,会发现在我们的 workspaces 项目的根目录下中生成了一个 .datapool 的文件,把文件通过 winrar 解开,可以看到是一个 xmi 文件,格式如下:

<?xml version="1.0" encoding="UTF-8"?><Common_Datapool:DPLDatapool xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"     xmlns:Common_Datapool="http://www.eclipse.org/hyades/models/common/datapool.xmi"     id="E123A884D00625FC60097F300AD111DC" name="aa">    <equivalenceClasses id="E123A884D00625FC6021E9300AD111DC" name="String">        <records>            <cells value="&lt;Literal>eric&lt;/Literal>"                 variable= "E123A884D00625FC600C8C700AD111DC "/>            <cells value="&lt;Literal>ericnie&lt;/Literal>"                 variable="E123A884D00625FC602062900AD111DC"/>        </records>        <records>            <cells value="&lt;Literal>eric1&lt;/Literal>"                 variable="E123A884D00625FC600C8C700AD111DC"/>            <cells value="&lt;Literal>ericnie1&lt;/Literal>"                 variable="E123A884D00625FC602062900AD111DC"/>        </records>        <records>            <cells value="&lt;Literal>eric2&lt;/Literal>"                 variable="E123A884D00625FC600C8C700AD111DC"/>            <cells value="&lt;Literal>ericnie2&lt;/Literal>"                 variable="E123A884D00625FC602062900AD111DC"/>        </records>        <records>            <cells variable="E123A884D00625FC600C8C700AD111DC"/>            <cells variable="E123A884D00625FC602062900AD111DC"/>        </records>    </equivalenceClasses>    <datapoolSpec id="E123A884D00625FC60097F310AD111DC">        <variables id="E123A884D00625FC600C8C700AD111DC" name="name" type="String”/>        <variables id="E123A884D00625FC602062900AD111DC" name="password"    type="String”/>    </datapoolSpec></Common_Datapool:DPLDatapool>

 这个 xmi 文件实际就是我们数据池实例 aa 的序列化后的形式,系统在实际调用时会将其反序列化同时将相关的数据 load 到内存中去。在 Rational Performance Tester 中打开这个 xmi 文件,可以清晰的看到它的层次结构,同时可以对它进行修改。

  图 2: 层次结构

层次结构

层次结构

 

层次结构

 

原文转自:http://www.ltesting.net