51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2435|回复: 12
打印 上一主题 下一主题

[原创] 如何自动更换从数据库中取出的动态参数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-3-21 08:43:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在参数化动态变量的时候.我从数据库中取了一列的数据.
在参数化之后.执行第一次没有问题,可执行第二次的时候.LR还使用的前一个数据,而没有自动向下更换参数.
设置中我选择的是
BY number:1 column delimiter:comma
frist line:9
select next row:sequential
update value on:each occurrence
我希望每次执行的时候能够自动更换这个动态参数.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-3-21 09:23:27 | 只看该作者
update value on设置,用once试试。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-3-21 09:30:20 | 只看该作者
这个问题很有深度的,不是说问题本身,而是需不需要动态抓数据。as we all know,lr是模拟正常用户的行为从而测试性能的(协议解析和数据包捕获),如果动态取得数据库内的数据的话,我想的出的方案是写程序读数据库内的内容然后写进数据驱动文件。问题来了,程序放在那里?as we all know,这样的程序只能放在vuser脚本里 ,如果每个虚拟用户都来那么一下子(写在vuser_init单用户里多次叠代也只运行一次,n个用户并发就运行n次,如果有场景级别的脚本可能就可行了)那么会增加额外的系统负担,性能测试结果就会不准,所以我认为事先做充分的数据准备是有必要的。所谓自动化测试并不是一切都交给工具。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-3-21 09:49:49 | 只看该作者
同意楼上的说法,应该是提前取出,否则数据库的性能可能要受到考验了
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2007-3-21 10:14:23 | 只看该作者
数据库中的数据已经是取出来的了.在param list中可以看到.
是一列从1开始排号到65的数据.
我的问题是:第一次执行脚本的时候取的是排号为1的数据.
第二次执行脚本的时候取的还是排号为1的数据.导致系统警告要做的事情已经做过了.产生了异常.
我是想在第一次执行的时候取第1行.第二次执行的时候取第2行...第N次执行的时候取第N行.这样的.
选择once我也试过了.不好使.
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-3-21 11:48:04 | 只看该作者
看了半天,我也没看清楚,你到底是如何取值的。

你能不能把脚本打个包扔上来看看。

P.S.:LR的参数化是事前条件,所以我觉得你们的理解有问题。

再P.S.:如果是我的理解有问题,也请明示.
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-3-22 12:54:43 | 只看该作者
是需要做关联吧
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2007-3-22 13:52:17 | 只看该作者
问题已经解决.这是一个例子的测试可以看一下:
在一个action下加三句。
lr_error_message ( "Error at iteration #%s", lr_eval_string ( "{aaa}" ) );
lr_error_message ( "Error at iteration #%s", lr_eval_string ( "{aaa}" ) );
lr_error_message ( "Error at iteration #%s", lr_eval_string ( "{aaa}" ) );
{aaa}的有这些值可选:111,222,333,444,555,666,777,888,999
迭代次数选3:
Select next row>Sequential
Update value on>Each iteration(说明在一个迭代中每个参数都相同只有下一次迭代才升级)
Results:
111
111
111
222
222
222
333
333
Select next row>Sequential
Update value on>Each occurrence(说明每一次参数出现升级)
111
222
333
444
555
666
777
888
999
Select next row>Sequential
Update value on>Once(说明只取一次值再不升级了)
111
111
111
111
111
111
111
111
111
Select next row>Random
Update value on>Each iteration
555
555
555
444
444
444
222
222
222
Select next row>Random
Update value on>Each occurrence
888
666
  为什么会有空值?
111
333
444
222
888
Select next row>Random
Update value on>Once
888
888
888
888
888
888
888
888
888
Select next row>Unique
结果与Sequential一样!
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-3-22 15:11:29 | 只看该作者
顶顶。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2015-3-3 19:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    10#
    发表于 2007-3-23 17:57:14 | 只看该作者
    see nex time!thanks!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2007-3-23 19:06:57 | 只看该作者
    又看了一下,你什么值是从数据库里取的?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2007-3-26 09:59:04 | 只看该作者

    回复 #11 Zee 的帖子

    你指的是哪个?是111.222--999.么?
    我是在数据库中新建的一个表create table tablename(id number(20));
    insert into tablename values(111);
    -
    -
    insert into tablename values(999);
    然后就是参数化变量了.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2007-3-27 16:58:48 | 只看该作者
    楼主也可以实验一下,在参数属性里的Allocate        valule for each Vuser处填上“1”。应该也能解决这个问题。。。。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-10-5 16:32 , Processed in 0.111704 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表