51Testing软件测试论坛

标题: 参数化后怎么知道哪些用户用了具体哪些数据? [打印本页]

作者: andrew_zx    时间: 2007-10-11 21:09
标题: 参数化后怎么知道哪些用户用了具体哪些数据?
或是及时看到现在用了什么数据是什么用户用得更好   从哪里看得到啊  谢谢
作者: fish_yy    时间: 2007-10-11 23:11
你的问题好有趣:)
作者: andrew_zx    时间: 2007-10-12 09:44
能否告知啊  谢谢了 急需
作者: least    时间: 2007-10-12 10:40
标题: 在“运行时设置”选项中选择扩展日志
在“运行时设置”选项中选择扩展日志,然后在场景中运行脚本时,查看用户的日志就可以看到该用户使用的参数表中哪一个数据
作者: tongfenglcz    时间: 2007-10-12 11:56
目前我只知道一种最笨的办法,就是再程序中加记录日志功能
作者: qiguojie    时间: 2007-10-12 11:59
1、按4#的说,把log里的参数化相关打开
2、在场景执行时,选择对应的vuser,然后右键可以打开该vuser的日志,查看到参数替换的过程

再者自己使用fopen  fclose fprintf这3个函数输出的文本文件里也可以。

可以参考我的blog文章:
http://www.51testing.com/?6343/action_viewspace_itemid_18124.html
作者: hdgx    时间: 2007-10-15 11:50

作者: tongfenglcz    时间: 2007-10-16 08:57
原帖由 qiguojie 于 2007-10-12 11:59 发表
1、按4#的说,把log里的参数化相关打开
2、在场景执行时,选择对应的vuser,然后右键可以打开该vuser的日志,查看到参数替换的过程

再者自己使用fopen  fclose fprintf这3个函数输出的文本文件里也可以。

可以 ...

vuser的日志里面的替换次数与实际写入到系统的记录数不同,这又是什么原因呢?在我的个人空间[http://www.51testing.com/?676/action_viewspace_itemid_64436.html中有详细描述,有空的话请帮忙看看,然后指点迷津 谢谢了。

[ 本帖最后由 tongfenglcz 于 2007-10-16 08:59 编辑 ]
作者: ly_xixihaha    时间: 2007-10-16 09:46
也想知道楼上的问题是怎么一回事
作者: qiguojie    时间: 2007-10-16 09:51
原帖由 tongfenglcz 于 2007-10-16 08:57 发表

vuser的日志里面的替换次数与实际写入到系统的记录数不同,这又是什么原因呢?在我的个人空间[http://www.51testing.com/?676/action_viewspace_itemid_64436.html中有详细描述,有空的话请帮忙看看,然后指点迷津 ...


指点迷津不敢~~说说我的理解给你参考一下:

被参数化设置的一般都是向server提交数据的函数,例如web_url、web_submit_data等函数,这些函数通常都是一个整体,无法进行分拆的参数化输入,因此每次进行参数化时,要考虑所有的被参数的参数的取值问题,引申出来参数化的最重要的步骤——做数据。

数据集有很多种,比如说 txt bat文件,比如说直接从数据库中读取,这些不同的数据集,lr应该处理的方式都是一样的,就是都是从数据集中先读取,然后存放到默认的bat文件中,然后再进行固定策略的参数化活动,因此,我们在做数据时,完全没有必要区分不同的数据集,我就只使用txt文件做数据集,如果是从数据库中读取数据,我就先自己select出来我要的,然后保存到txt文件中。同样,excel也是如此。

做数据时需要选择不同的策略,就是不同的数据存放在几个文件中!需要仔细考虑好,例如你的文章:LoadRnner参数化之疑问一之续一
中就有如下参数要进行参数化:
TBillNo、tranID、realCode、TBillDate、invoiceNo、contractNo、inUnitecode
其中TBillNo、tranID、realCode、inUnitecode你选择的策略是取唯一值,其它的3个值估计就是无所谓了,可以随便选择一些,但是我不明白的时,你为什么更新值策略每个参数都不相同,做的很复杂,建议只用一个数据集文件,把所有取唯一值的数据放入这个文件,其他无所谓的值就不参数化了,手动填写一些值就OK了;文件格式类似:
TBillNo tranID realCode inUnitecode
a1 b1 c1 d1
a2 b2 c2 d2
a3 b3 c3 d3
……
然后选择更新值策略为唯一,选择下一行为每次迭代,步长为1即可;这样参数化就完成了,直接执行虚拟用户就OK。

再回答你的几个问题:
1、实际完成的数据是否等于 迭代次数*vuser数??
答:这个【迭代次数*vuser数】理论上是提交请求数,实际的交易成功数可能不是,如果你没有做返回的检查的话,提交失败的你有时无法检查出来。因为lr的录制的时候提交的数据都是正确的,返回也是正确的,但是实际在vuser执行时,可能你提交的数据有问题,程序给你返回错误的结果,但是你没有做判断,lr依然认为这个是正确的,没有报错,这样,实际上你10条记录提交了,实际只完成2条,完全有可能。因此,在脚本中增加对应的返回值检查是很必要的。

2、如何取得唯一值?
答:在场景中执行的vuser脚本,使用唯一(unique)+每次迭代即可;
   例如:你设置了【唯一(unique)+每次迭代】,然后用10个vuser来跑,不设置持续运行时间的话,那么你提交的请求就是 10个【每个vuser选取一个唯一值】,当然前提是你的参数化数据足够多。
   再例:你设置runtime-setting的action的迭代次数为10,然后再用10个vuser来跑【唯一(unique)+每次迭代】的脚本,那你最好设置一下步长,就是规定每个vuser的取值空间,这样不会造成取值冲突;如果设置步长为10,那么你第一个vuser取值就是【1+10的倍数】行,这样可以避免有些策略提交了同样的值,造成请求发出,但是实际没有成功。

你可以参考我的blog文章:http://www.51testing.com/?6343/action_viewspace_itemid_64365.html

有问题继续讨论,呵呵~~~~




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2