不要追求绝对的公平,红尘之中没有公平而言,人活一世,难得糊涂。
it is no use doing what you like, you have got to like what you do.
使用自定义代码对数据池进行随机访问
上一篇 /
下一篇 2006-12-08 09:05:39
/ 精华(2)
/ 置顶(2)
/ 个人分类:软件测试技术
使用自定义代码对数据池进行随机访问51Testing软件测试网#n,\&?-Soj'g9sFA*p 51Testing软件测试网#F/p&p?n+\2H.W[关键字]代码 数据池
51Testing软件测试网o0fNha"LT HkA 为了更加稳健的
测试,可以用自定义代码使 Performance Tester
随机化。目前,Performance Tester 数据池中的元素只能按照顺序进行访问。这篇文章讨论了作者如何
创建自定义的 Performance Tester 代码,并用随机数据访问来实现数据池。这篇文章提供的了 RPTDataPool 类,以及如何实现它的详细说明。
Sm)gmbjq051Testing软件测试网ON@CgC~&g#gF 注意:这篇文章适用于 IBM® Rational® Performance Tester Version 6.1.2.002
51Testing软件测试网CQDo#g9\ w51Testing软件测试网2xp{5Q^/]s$F 好的测试不仅仅是重复执行相同的动作。为了更好的模拟实际用户的动作,测试人员可以利用IBM Rational Performance Tester 中的数据池。这是远超出使用静态记录测试的一步,因为它允许测试为每个执行来选择不同的变量。例如,无论什么时候
应用软件要求用户输入搜索条件,比如一个电影的名字,一个标题或者标题的一个部分都可以从数据池中选择。
!sv8Vs QV
m,m8w051Testing软件测试网O:Q!Z1lr:@] ~k;k 目前Rational Performance Tester数据池仅仅是顺序存储。在这个电影搜索的例子中,每次你运行这个测试时,相同电影名称的搜寻都是以相同的顺序来进行处理的。通过对要搜索的标题进行随机选择,可以提高测试的稳健性。
51Testing软件测试网9qp
Ag%e`a7@yN.QG&y
Y1V0 数据池文本文件
0] q.d0H*r!T4V0'{
`(c
U|1`7Ki0 在i5/OS系统测试环境中,IBM测试自动化小组自从2004年就一直在将Mercury
LoadRunner的脚本转换到 Rational Performance Tester。为了随机化i5/OS测试的变量选择,我们创建了一个 Rational Performance Tester自定义代码的包,来对数据池中的元素进行随机存储。这个执行一点都没有用到 Rational Performance Tester数据池的特性。相反,Rational Performance Tester
DataPool 类读取的文本文件中包含要使用的数据池条目。
51Testing软件测试网.D
p)_[5u51Testing软件测试网'V1Bf#ac?(W ZE&I 这个将选择元素随机化的数据池文件是一个每行仅包含一个元素的纯文本文件。用Rational Performance Tester来实现它的一个简单的方法,就是为测试项目的文本文件创建一个数据池文件夹。一个文件输出包括这些文本文件,因为它们被包含在 Rational Performance Tester项目中。当转换Mercury LoadRunner脚本时,你可以通过LoadRunner数据文件来实现。
51Testing软件测试网`f2JTy8NVR!ZCk!vTS'j0RPTDataPool类
*f s"Y*f1e/U0%uRi'e
[
@0 这个文本数据的文件名传给创建者,整个文件在首次访问尝试时就被读取进入了 Java™ Vector 对象。为了从这个数据池中随机重新找到一个条目,可以使用getaDataPoolItem 方法。(参见列表1。)
0kyLUbR00BvMIHi4T3p'v0注意事项
51Testing软件测试网f.?
B.x l;i51Testing软件测试网Ql~ cdg9~!@ 记住整个文件在测试的开始就已被读入存储器是十分重要的。巨大的数据池将会用到大量的内存,这将会降低加载和Rational Performance启动的速度。巨大的Rational Performance Tester测试数据池也会发生类似的情况。
+}L n}x+KY8Hd3e0iIiSwW0 你可以使用每行包含多个元素的数据池,但是用户必须在这个测试的自定义代码中增加一些功能来取出单个元素。
:PQ7x3E*V'_#NO&j051Testing软件测试网my(ZtluKTw*O LQ
]8iu0 列表1. getaDataPoolItem 方法
q&e+Y+u0i-t0 51Testing软件测试网;X:O]TWCfTimport .io.*;
51Testing软件测试网&SE.Gm&a'N%aimport .util.Vector;
51Testing软件测试网1E5v`5VnO%}4Kpublic class RPTDataPool {
"D6mQq'T5B#E0 private boolean DataPoolIsLoaded = false;
51Testing软件测试网5X(|;O,~'aY8lDs private String DataPoolFileName;
I9a{
D
R8xf}
[
jU0 private Vector DataPool;
btChf i0p0 private int DataPoolCount = 0;
)BQ,IO\6odXz0 51Testing软件测试网r5s1[-j
m public RPTDataPool( String fileName ) {