LoaderRunner常用函数

QTP使用问题集锦

对脚本的运行速度进行设置 - by Viajar

TOOLS->OPTIONS->RUN->RUN MODE 设置就可以了;一般可以设置为500或者1000值,也就是毫秒;

 

使用QTP录制XQP/OA时的更多按钮不能被录制到的解决 - by Viajar
方法一:使用Analog录制模式录制,点击了更多中的按钮是无法刷新页面的;
方法二:tools->virtual objects->new virtual objects->选取控件,这个方法还是无效;
方法三:在QTP的tools->web event recording configuration->custom settings->webelement->event->add->onmouseover & click & onmousedown 等几个,还是无法录制XQP和OA中的更多按钮;
方法四:在QTP的option->web->advanced->record setting->Record Navigate for all navigation operations使用了还是无法录制;
解决方法五:在QTP的option->web->advanced->record setting->User standard Winsows mouse events,结果可以录制,回放了,但是在录制过程中要注意登陆的时候不能输完密码后马上按回车,这样回放时会停留在登陆那里,应该使用鼠标来点击登陆;而且在录制完关掉IE时会报内存错误;

 

在KEYWORD VIEW模式下快速操作树 - by Viajar
在VIEW中使用EXPAND ALL/COLLAPSE ALL可以对树形ACTION进行展开和收缩;

 

QTP录制过程加入screen - by Viajar
点击Tools-Options-Run-Save movice to results-Always就可以把screen放到报告中,这样做会造成运行时很慢,CPU占用率100%,而且报告文件很大,在Res中可以看到屏幕的操作过程,相当于屏幕扑捉专家工具来录制,不知道有没办法解决CPU占用过大的问题?可否选择录制文件的格式类型?可否选择录制的帧数?解决CPU的方法大概可以为:录制时并不是马上写到文件中,而是写到内存中,跑完以后在写到文件中;可以多开一个线程或进程来分开两个的操作;(猜想而已。。。)

 

如何干净删除Data Table数据 - by Viajar
解决方法一:我按Del就删除了数据,但是RUN的时候却还是会继续去读取那些删除的数据,后来发现Data Table的表格有点差异,因为在删除的行上的边框还是深色的,这就说明只是删掉了数据,但是却没有把这些行也从中删除:
解决方法二:选择已经删除的行,点击右键->EDIT->CLEAR->ALL/FORMATS,就可以完全清除了,但是当修改行高时会重现边框线;
解决方法三:选择已经删除的行,点击右键->EDIT->CLEAR->DELETE,这样就可以了,也不会出现方法二的边框线了;

 

IE记住密码问题解决 - by Viajar
取消IE中的自动完成功能,不要让浏览器帮你自动输入帐号与密码,以确保在录制的过程中,所有的操作都会被录制下来,IE->工具->IE设置->内容->自动完成->表单上的用户名密码;

 

报告中一般只会在出错的时候才会在Details加入图片的解决方法 - by Viajar
报告中一般只会在出错的时候才会在Details加入图片,PASS的就没有了,一开始以为在报告中有选项可以设置,但是找了半天没找到,LOUIS也有遇到这个问题;
解决方法:后来想了一下,根据LR的经验,QTP在RUN就生成了报告,那么报告应该是RUN中设置的,所以最后在TOOLS->OPTIONS->RUN->SAVE STILL IMAGE CAPTURES TO RESULTS 选择 ALWAYS就可以解决问题了;

 

Action之间的嵌套 - by Viajar
口述:
1:Action之间的嵌套是为了解决循环操作的问题,也就是使用参数化更大范围的测试系统,因为在录制脚本的时候是默认把所有的操作都放到一个Action里面的;
2:比较有用的脚本是这样的,比如Action1里面嵌套一个Action1_1,再有一个Action2与Action1是平级的,那么在Action1就可以解决多个帐号登陆,Action1_1就解决某个属性值的多个值测试,Action2就可以录制为退出系统;
3:注意对不同的Action使用不同的Run模式,就是对着Action点击右键设置就可以了;
4:这还是一个比较简单的脚本,因为业务逻辑是比这个要复杂的多的;

 

一个比较完整的QTP脚本例子 - by Viajar
这是一个使用QTP录制BID的例子,其中包括:
1:Checkpoint(检测点);
2:Parameter(参数化);
3:Output(输出参数);
4:Action切割;
5:Action嵌套;
6:RUN时间控制;
7:VBScript使用;
8:DataTable处理(如何干净删除DataTable数据);

 

 

 

 

LoadRunner使用遇到的问题集锦

把HTML的内容输出到LOG中的方法 - by Viajar

1:在脚本要记录HTML的URL前面加入函数:web_create_html_param("MyHtml", "<html>", "");;
2:在脚本要记录HTML的URL后面加入函数:lr_output_message("###the HTML is %s", lr_eval_string(" {MyHtml}"));;
3:在Controller中设置Run-Time Settings,把log设置为Always Send Message;
4:在Controller中设置Run-Time Settings,把Miscellaneous设置为在发生错误时继续运行(在这里不是必须);
5:在Controller中设置Run-Time Settings,把Preferences设置为Enable image and text check;(在这里不是必须);
6:在Controller的日志文件RES中可以查看到每个虚拟用户的LOG;


如何在Controller中添加系统资源检测 - by Viajar

今天早上突然想把Windows的性能监视放到LR中,达到方便快捷的目的,下面的是具体的步骤:
1:使用192.168.0.159作为监控的对象,开通Remote Procedure Call和Remote Registry两个服务,Remote Registry一般都是给禁止的,可以改为手动并启动;
2:在159中右击我的电脑,选择管理->共享文件夹->共享 在这里面要有C$这个共享文件夹;
3:在159中使用命令netstat /ano查看445端口是否被打开;
4:输入\\192.168.0.159\c$ ,再输入用户名和密码,如果能进入c盘,那就说明有控制权了;
5:在Controller的Run中找到Windows Resources,对图点击右键中的Add Measurements,添加计数器;
6:需注意159机上的BlackIce;
7:对Windows Resources Graph的技巧使用,可以冻结窗体,导出HMTL,显示某个计数器等;

 

对ANALYSIS中不能导出页面细分下的子项的问题的处理方法 - by Viajar

1:问题描述:对ANALYSIS的导出WORD功能中只能导出树中的图表,在页面细分中点击不同的节点会有不同的图表,但是却无法把所有节点的图表一起导出;
2:如果想生成Time to First Buffer Breakdown下面Login事务和Loading事务下的图表都导出来,方法就是新建两张Time to First Buffer Breakdown图表,在不同的下面点击图表,并修改名称;
3:在导出列表中选中要导出的图表:Time to First Buffer Breakdown-All && Time to First Buffer Breakdown-Login && Time to First Buffer Breakdown-Loading;
4:总结:虽然这样做有点麻烦,但是比之前点击每个图再导出一个WORD来有用的多,但是LR可以做到在导出列表中以树的形式显示可以导出的图表,不过LR要解决图表没有名称的问题;

 

在中文版Analysis中显示系统资源图的原因与解决 - by Viajar

1:是否可以通过修改ACCESS记录来修改这个BUG??
2:不知道它添加图表的列表是不是通过数据库LOAD的?? 迄今还没有找到这些记录,只找到资源图表数据;
3:解决办法1:是用VNC截图,但是这样只能看到计数器曲线,没什么意义;
4:解决办法2:在Controller中导出系统资源数据,里面有量化数据,比较真实,不过每个场景都要导出一次就很麻烦,并且不好管理,无法对数据进行帅选和合并,如果打开导出的页面有乱码,那就在编码方式选择"自动选择";
5:解决办法3:使用英文版生成的ANALYSIS,再拿到中文版下面,是可以看到系统资源这个图表的,其实我应该早想到这样的,因为在中文版下无法显示不是Analysis的错,而是Controller的错,Analysis里面是包括ACCESS和其它包含系统资源的记录的,所以在中文版是能显示的;

 

终于使用LR实现了不同虚拟用户使用不用的帐号登陆,实行不同用户并发的问题 - by Viajar

1:在脚本设计中添加参数,参数名称为LoginUserName,选择参数类型为FILE;
2:很关键的一步就是:选者UNIQUE和EACH ITERATION/ONCE;
3:在脚本中把登陆名改为参数名;
4:使用Controller进行测试,在运行时设置LOG记录;
5:查看LOG,可以看到每个虚拟用户是使用不同的帐号登陆的;
6:总结:使用SEQUENTIAL会使得参数每次出现的地方的值都不一样;如何想使用更多用户的登陆可以使用参数数据库化;

 

LR参数数据库化(姑且这么叫,就是参数的来源于数据库)实践 - by Viajar

1:以XQP登陆帐号为例,把bw_Users表中的UserName做为参数LoginUserName的值;
2:过程都比较简单,需要注意的是使用FILE参数类型,参数值列表中的值只有100个,其它的可以通过Edit with Notepad查看;
3:在Update Value on 中有以下几个选项:
Each Occurrence:在运行时,每遇到一次该参数,便会取一个新的值;
Each iteration:运行时,在每一次循环中都取相同的值;
Once:运行时,在每次循环中,该参数只取一次值;
可以看出,是按照从脚本小范围到大范围的选择;
4:在Select next row 有以下几种选择:
Sequential:按照顺序一行行的读取。每一个虚拟用户都会按照相同的顺序读取;
Random:在每次循环里随机的读取一个,但是在循环中一直保持不变;
Unique :唯一的数。注意:使用该类型必须注意数据表有足够多的数;
Same Line As 某个参数(比如Name):和前面定义的参数Name 取同行的记录;通常用在有关联性的数据上面;
可以看出,是和循环(迭代)很有关系的;

 

发现可以对参数数据库化的数据进行作弊,作弊方法如下: - by Viajar

1:使用数据库管理器导出想要的数据为EXCEL;再保存为dat文件,再参数设置里面引用该文件;
2:在脚本文件夹中找到[参数名].dat文件;
3:对[参数名].dat文件进行编辑,把EXCEL中的数据拷贝到dat文件中;
4:进入脚本编辑,查看参数,可以见到刚刚拷贝的数据;
总结:虽然这个方法没什么很大用处,但是在无法使用VUGenerator连接数据库的时候就非常有用;

 

 

 

 

LoaderRunner常用函数 作者:张晶    文章来源:Blog    点击数:    更新时间:2007-4-23    

 

 1 编译错误提示:“not writing pre_cci.ci”,是脚本语法错误。

命令行函数(Command Line Parsing Functions

2.得到命令行传来的参数lr_get_attrib_double

信息函数(Informational Functions

3应用Timer
在事务中用lr_start_timer lr_end_timer 计算检查点所花费的时间。然后用lr_wasted_time把它从事务时间中减去 “sampleTrans” .

double time_elapsed, duration, waste;
merc_timer_handle_t timer;
       lr_start_transaction(”sampleTrans”);
       web_url(”index.htm”,
              ”URL=http:
//localhost/index.htm”,
              ”TargetFrame=”,
              ”Resource=0″,
              ”RecContentType=text/html”,
              ”Referer=”,
              ”Snapshot=t1.inf”,
              ”Mode=HTML”,
              LAST);
       timer = lr_start_timer();
/**//* Do some checks the duration of which
is not to be included in the transaction. */

       web_image_check(”ImgCheck1″,
              ”src=index_files/image002.jpg”,
              LAST);
       web_image_check(”ImgCheck2″,
              ”src=index_files/planets.gif”,
              LAST);
// How long did the tests take in seconds.
       time_elapsed = lr_end_timer(timer);
// Convert to millisecond.s
       waste = time_elapsed * 1000;
/**//* Remove the time the checks took from
       the transaction. */

       lr_wasted_time(waste);
        lr_end_transaction(”sampleTrans”, LR_AUTO); 

 

4LR Example: lr_get_transaction_duration
In the following example, the lr_get_transaction_duration function checks the duration of part of a transaction, and sends it to the Output window.

double trans_time;
int status;
lr_start_transaction (”Flight”);
web_url(”home;sz=234×60;tile=1;ord=977672495775323400″,
          ”URL=http:
//ad.doubleclick.net/…ord=977672495775323400″,
          ..
          ”Mode=URL”,
          LAST);
// Get transaction time to this point
trans_time=lr_get_transaction_duration(”Flight”);
status = web_submit_data(”flight”,
“Action=http:
//www.mercury-tours.com/cgi-bin/tours?ITN_RESPONSE+”,
“Method=POST”,
“TargetFrame=”,
…              
LAST);
/**//* End transaction with operation result - pass or fail */
if (status == 0)
lr_end_transaction(”Flight”, LR_PASS);
else
lr_end_transaction(”Flight”, LR_FAIL);
if (trans_time)
lr_output_message(”The duration up to the submit 
is %f seconds”, trans_time);
else
lr_output_message(”The duration cannot be determined.”); 


5
Sleep函数

Microsoft's Windows API,win32命令,Sleep函数的单位是ms

 

sleep(1000);

 

6lr_user_data_point  

lr_user_data_point 方法允许你录制自己的数据以供分析. 每次你要录制一个点的时候, 用这个函数录制取样的名称和值. LoadRunner 自动录制被录制的取样时间. 在场景执行之后, 你可以用 LoadRunner User Defined Data Points graph 去分析结果.

 

7lr_whoami()

int id, scid;
char *vuser_group;

lr_whoami(&id, &vuser_group, &scid);
lr_message( "Group: %s, vuser id: %d, scenario id %d", 
        vuser_group, id, scid);

8lr_user_data_point_instance

9lr_vuser_status_message

//Controller监视窗口中显示当前参数值和当前vu迭代次数,在vugen调试窗口中不会显示出来
lr_vuser_status_message("Para is:%s,%dTimes Iteration",lr_eval_string("{NewParam}"),++iteration);
return 0;
}

10lr_continue_on_error (int value);

“runtime setting”中设置 Continue on Error.如果执行中遇到错误脚本将继续运行.  如果一段脚本前后加入lr_continue_on_error,在这段脚本中遇到错误脚本会停止运行

lr_continue_on_error (0); 
    web_url("MercuryWebTours", 
       "URL=http://localhost/MercuryWebTours/", 
       "Resource=0", 
       "RecContentType=text/html", 
       "Referer=", 
       "Snapshot=t12.inf", 
       "Mode=HTML", 
       LAST);
lr_continue_on_error (1);

11Lr_abort()   Aborts Vuser script execution.

lr_exit (int continueint exit_status);   Exits from the script, action, or iteration. 
 
vuser_init() 
...{

     
int status = ftp_logon("FTP", "URL=ftp://user:pwd@ftp.merc-int.com",                "LocalAddr=ca_server:21", "ClientCert=/ca/pem/", 
               "ClientKey=/ca/pem/key/", "ClientPassword=@3#$8800cvd",
               "CertificateAuthority=/ca/", "SSLVersion=SSL2", LAST); 

     
if (status == LR_FAIL) ...{

          lr_error_message ("ftp login failed");
          lr_exit(LR_EXIT_VUSER, LR_FAIL);
     }

     
return(0);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值