LoadRunner脚本开发中常用的方法

发表于:2021-3-25 09:22

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:jy ch    来源:CSDN

  本文介绍LoadRunner性能测试工具的C语言脚本开发中常用到的几个方法:
  一、事务和事务控制函数的使用案例:如何自己获取DuringTime和WastedTime
  a) 定义临时变量存储数据double duringTime;
  double wastedTime;
  b) 调用方法获取两个值(在事务中,值稍微比事务时间小,位置灵活)duringTime=lr_get_transaction_duration("login");
  wastedTime=lr_get_transaction_wasted_time("login");
  c) 输出结果lr_output_message("The duration time is %f seconds",duringTime);
  lr_output_message("The duration time is %f seconds",wastedTime);
  二、文件操作方法的使用:
  (变量放在文件的开头位置)案例:文件的创建、读写操作(如果已存在的文件,打开文件,写入数据,关闭文件;如果文件不存在,创建文件并写入数据,关闭文件流,结束)
  使用的方法:long fopen( const char *filename, const char *access_mode);
  char *fileName="d:\\123.log";//c盘符需要有管理员的权限long fileStream;//vugen中特有的,与标准c语言有差异。
  if((fileStream=fopen(fileName,"a+"))==NULL){
  lr_output_message("你打开的文件不存在,打开出现错误");
  return -1;
  }
  fprintf(fileStream,"Hello world!!!!\n");
  fclose(fileStream);
  三、系统信息函数的使用案例1:获取每个虚拟用户信息,在vugen中可以返回-1,none,0;可以借助File的操作将信息写入日志文件
  void lr_whoami (int *vuser_id, char **sgroup, int *scid);
  参数说明:【int *vuser_id】需先注册,保存正在运行的vuser的ID,在虚拟用户生成器(Virtual User Generator)中回放返回-1
  【char **sgroup】需先注册,保存正在运行的vuser的组名(脚本名),在虚拟用户生成器(Virtual User Generator)中回放返回None
  【int *scid】需先注册,保存正在运行的Scenario的ID,在虚拟用户生成器(Virtual User Generator)中回放返回0
  函数使用技巧:
  函数的所有参数都为必须,其中vuser_id、scid两个整形的变量,如果不需要返回则直接用NULL替换即可
  例:lr_whoami (&myid,&mygroup,NULL); //就用NULL把scid的变量替换掉了,也就不保存scid了
  a)定义变量名
  int id;
  int cid;
  char* group;
  b)调用方法
  lr_whoami(&id,&group,&cid);
  c)输出结果:
  lr_output_message("%d,%d,%s",id,cid,group);
  案例2:返回执行Vuser脚本的主机名及运行controller的主机名
  涉及到的方法分别是:lr_get_host_name及lr_get_master_host_name
  lr_get_host_name格式:Return Values:这个函数成功的返回值是该主机的名字,失败的返回值是空;这个返回值是指向一个静态数据并且不能修改的只读模式
  Parameterization:该函数不能被参数化
  C语言的格式是:char *lr_get_host_name();
  Java语言的格式是:String lr.get_host_name();
  a)定义变量
  char* myHost;
  b)调用方法
  myHost=lr_get_host_name();
  c)输出结果
  lr_output_message("my host is : %s",myHost);
  lr_get_master_host_name获取controller的主机名,自己尝试使用。
  四、字符串函数的使用案例1:获取当前日期,并打印到日志中(lr_save_datetime)
  lr_save_datetime的格式如下:
  void lr_save_datetime(const char *format, int offset, const char *name);
  lr_save_datetime将当前日期和时间,或具有指定偏移的日期和时间保存在参数中。如果达到MAX_DATETIME_LEN个字符,结果字符串将被截断。
  参数说明:
  1)const char *format格式化信息,同fopen、lr_message等相同;例如:"the first is %s"
  2)int offset:时间的偏移量:DATE_NOW(现在的日期)
  TIME_NOW(现在的时间)
  ONE_DAY(一天的时间)
  ONE_HOUR(一小时的时间)
  ONE_MIN(一分钟的时间)
  需要注意的是,时间的偏移量可以使用公式,例如:DATE_NOW+ONE_DAY, 这样,我们就可以取得昨天、明天的日期了:DATE_NOW-ONE_DAY(昨天)
  DATE_NOW+ONE_DAY(明天)
  那么,我们就可以使用如下表示得到前天的日期:lr_save_datetime("%Y-%B-%d",DATE_NOW-2*(ONE_DAY),"abc");
  lr_save_datetime("%Y-%B-%d",DATE_NOW-2*24*(ONE_HOUR),"abc");
  lr_save_datetime("%Y-%B-%d",DATE_NOW-2*24*60*(ONE_MIN),"abc");
  当然,我们也可以使用如下表示2个小时后的时间:lr_save_datetime("%H:%M:%S",TIME_NOW+2*(ONE_HOUR),"ab");
  lr_save_datetime("%H:%M:%S",TIME_NOW+2*60*(ONE_MIN),"ab");
  3)const char *name参数保存的参数名;使用时lr_eval_string("{参数名}")
  五、事务返回值处理
  结束事务的标记可以是LR_AUTO、LR_PASS、LR_FAIL。LR_AUTO会根据事务的执行结果直接判断事务成功还是失败。
  LR_PASS,则直接确定事务是成功的
  LR_FAIL直接确定事务是失败的
  也可以通过web_submit_data()的返回值判断事务的状态
  int result;
  lr_start_transaction("login");
  result = web_submit_data("login.pl",
  "Action=http://10.36.142.8:1080/cgi-bin/login.pl",
  "Method=POST",
  "RecContentType=text/html",
  "Referer=http://10.36.142.8:1080/cgi-bin/nav.pl?in=home",
  "Snapshot=t2.inf",
  "Mode=HTML",
  ITEMDATA,
  "Name=userSession", "Value={userSession}", ENDITEM,
  "Name=username", "Value=jojo", ENDITEM,
  "Name=password", "Value=bean", ENDITEM,
  "Name=JSFormSubmit", "Value=off", ENDITEM,
  "Name=login.x", "Value=59", ENDITEM,
  "Name=login.y", "Value=13", ENDITEM,
  LAST);
  //结束事务的标记//事务的开始和结束必须承兑出现的,同事务名称匹配//可以是LR_AUTO、LR_PASS、LR_FAIL//lr_end_transaction("login",LR_AUTO);
  if(result==1){
  lr_log_message("事务失败");
  lr_end_transaction("login",LR_Fail)
  }else{
  lr_log_message("事务通过");
  lr_end_transaction("login",LR_Pass)
  }

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号