51Testing软件测试论坛

标题: 请问各位前辈,LoadRunner8.1怎么运行SQL语句? [打印本页]

作者: dlsc2010    时间: 2010-11-25 16:19
标题: 请问各位前辈,LoadRunner8.1怎么运行SQL语句?
各位前辈,我用LR8.1,数据库用Oracle,录完一遍脚本之后,对数据库中的一条记录做了操作,使这条记录的Status变成了1,但是我回放的时候会报错,因为录制的时候数据库的这条记录的status是2,所以我执行一次update语句,使这条记录的status变成2,然后回放脚本才能成功。但是在Controller中持续运行的时候,我就没法一遍一遍的更改了,请问我该怎么操作,才能让脚本运行一次之后,执行一次update语句,从而可以持续运行?
作者: hgl    时间: 2010-11-25 16:24
呵,这个是动态的,我也想知道
作者: 云层    时间: 2010-11-25 16:57
写个关联
作者: dlsc2010    时间: 2010-11-25 17:15
写个关联
云层 发表于 2010-11-25 16:57


      云层前辈,您这话真是太精辟了,我回去试试,谢谢您了先
    还想顺带问下,需要在Controller里面设置连接Oracle数据库么?
作者: 云层    时间: 2010-11-25 23:19
controller只是加监控而已,我是觉得oracle数据库性能测试没啥意义而已
作者: dlsc2010    时间: 2010-11-26 09:10
controller只是加监控而已,我是觉得oracle数据库性能测试没啥意义而已
云层 发表于 2010-11-25 23:19

    其实我不是打算监控Oracle的性能,只是想问下执行Sql的时候,不用连接数据库之类的么?因为LR在测java的时候可以导入包,然后直接执行sql语句,但是LR在录制web网页的时候没法添加jar包.
   做关联的时候,手动设置的话,需要录制2遍,但是执行一遍之后,就没法执行第二遍了,因为记录的status变了,我在VuGen里面设置自动关联,但是没看出来有什么变化,sql语句应当放哪执行啊?
比如sql语句就是例如下面这个:update request_form   set ARF_STATUS_C = 2   where arf_n='20101112/04-051'
作者: 云层    时间: 2010-11-26 10:40
关键看你录制什么层次了,如果是Http级别的其实是你驱动中间层来实现调用数据库的
作者: dlsc2010    时间: 2010-11-26 13:41
关键看你录制什么层次了,如果是Http级别的其实是你驱动中间层来实现调用数据库的
云层 发表于 2010-11-26 10:40

   B/S架构,就是web的一个网站,里面有一个更新的操作,会改变Oracle里一条记录的status,该怎么做呢?
作者: 云层    时间: 2010-11-26 13:47
你录制对web网站的操作就行了,后面的系统的应用层会自己搞定
作者: dlsc2010    时间: 2010-11-26 15:47
你录制对web网站的操作就行了,后面的系统的应用层会自己搞定
云层 发表于 2010-11-26 13:47

    在Controller里运行完一遍之后,数据库里数据的status会由2->1,界面上对应的字段有Reauest->Approved,再次运行就会报错,我只有手动执行那条语句把数据库的那条记录的status由1->2,才能再一次的运行,我现在想连续运行,在脚本里添加这条语句,让脚本执行完一次,这条sql语句也会执行一遍,从而能在Controller里连续执行,该怎么做呢?
作者: 云层    时间: 2010-11-26 17:16
还是那句话,关联,不要处理status为2的记录,你改数据库就是违反逻辑么
作者: PrefTest    时间: 2010-11-26 21:57
回复 1# dlsc2010

解决的办法很多,但是最好先把你录制的操作的业务流程说一下,请解释一下为什么要重复执行这个操作
作者: dlsc2010    时间: 2010-11-28 13:57
还是那句话,关联,不要处理status为2的记录,你改数据库就是违反逻辑么
云层 发表于 2010-11-26 17:16

一般情况下,确实不应当直接更改数据库里记录的状态,那就只有多用几条数据按顺序执行一遍。其实我只是希望这条数据可以重复利用,重点是怎么能在LR录制web页面的时候可以的执行sql语句,谢谢您的提示,看来我得详细的学习一下关联的内容了
作者: dlsc2010    时间: 2010-11-28 14:27
回复  dlsc2010

解决的办法很多,但是最好先把你录制的操作的业务流程说一下,请解释一下为什么要重复执 ...
PrefTest 发表于 2010-11-26 21:57

这位兄台,其实业务流程就是更新web页面的一条记录。我想重复执行这个操作,选用不同的数据可以达成目的,但是我想利用这一条数据来达到重复执行的目标。因为每执行一次更新的操作,Oracle里这条记录的status的就会由2->1,下次执行就会报错,我只有手动执行一次update的语句,把这条记录的status由1->2,才可以再次执行。现在我希望在录制为web脚本里,添加一条sql语句,让脚本每回放一次之后,执行一次sql语句,这样我在Controller里就可以连续的进行,我该怎么做呢?
作者: PrefTest    时间: 2010-11-30 20:59
回复 14# dlsc2010


    从精确模拟用户行为的角度看,还是应该将数据参数化,不要重用同一条数据

如果确实要这样做,办法也很多,例如:
1、在脚本中调用外部DLL,由DLL访问数据库更新数据
2、在脚本中调用System函数执行包含SQL脚本的命令行
3、在数据库中添加触发器,修改staus字段
作者: dlsc2010    时间: 2010-12-7 13:40
回复  dlsc2010


    从精确模拟用户行为的角度看,还是应该将数据参数化,不要重用同一条数据

如果 ...
PrefTest 发表于 2010-11-30 20:59


谢谢这位兄弟,我用的就是您说的第二种方法,也参数化了数据,好使,谢谢~
至于您说的第一种和第三种方法,我希望以后会接触到,进一步学习,呵呵,谢谢~




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