LoadRunner 简单笔记

来源:互联网 发布:c php扩展 编辑:程序博客网 时间:2024/04/29 16:26

竟然要帮测试写loadrunner的脚本,也不好意思让别人来干,只好自己上咯。

借了本书,看了下,写了一天,完成了。特意记录下几个注意点。

 

1:基本情况

对我来说,loadrunner脚本编程=loadrunner系统函数调用+基本C编程。前者实现了网络相关应用以及一些基本系统功能,如类似printf功能。

所有函数我就都加在Action函数里面。其实实际上,loadrunner会有一个Action.c 文件在本地,可以直接编辑。

可以在代码里面直接加事务范围或者同步点。

 

通过设置Iterations来实现反复调用或者Concurrent来并发执行。

 

2:重要函数

参考下面代码,实现了:设置事务,get操作,post操作,并得到了每次连接的返回数据指针(preturn )

   

  lr_start_transaction("uploading"); 

  web_reg_save_param("preuploadcontents", "LB=", "RB=", "SEARCH=BODY", LAST);

  sprintf(szURL,"URL=http://xxx.xx.xxx.xxx:8080/rest?appkey=testkey&method=ps.preupload&token=%s&appsig=8aae40dc374ea0367cf25f86fcdef9f8",token);

 web_url("rest",
   szURL,
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t1.inf",
  "Mode=HTML",
  LAST);

    preturn = lr_eval_string("{preuploadcontents}");

     rc = atoi(&preturn[14]);

     lr_output_message("preload rc = %d", rc);

  if(rc != 0)
  {
   goto END;
  }
  

  memcpy(transid, preturn+25, 36);

  //lr_output_message("transid = %s", transid);

 
     web_reg_save_param("loadcontents", "LB=", "RB=", "SEARCH=BODY", LAST);


  sprintf(sttoken,"Value=%s", token);
  sprintf(sttransid,"Value=%s", transid);
 // sprintf(stname,"Value=G://sb_facebook//%s.jpg", lr_eval_string("{filename}"));
      sprintf(stname,"Value=G://sb_facebook//%s//%s.jpg", lr_eval_string("{logID}"), lr_eval_string("{filename}"));
    lr_output_message("stname = %s", stname);
     web_submit_data("upload",
                "Action=http://xxx.xx.xxx.xxx:8080/rest?",
                "Method=POST",
                "EncType=multipart/form-data",
                "RecContentType=text/html",
                "Referer=http://localhost:8080/Demo/upload/uploadDemo02.html",
                "Snapshot=t2.inf",
                "Mode=HTTP",
                ITEMDATA,
                "Name=appkey", "Value=testkey", ENDITEM,
                "Name=method", "Value=ps.upload", ENDITEM,
    "Name=token", sttoken, ENDITEM,
                "Name=tranid", sttransid, ENDITEM,
    "Name=appsig", "Value=8aae40dc374ea0367cf25f86fcdef9f8", ENDITEM,
                "Name=file1", stname, "File=Yes", ENDITEM,
                LAST);


   preturn = lr_eval_string("{loadcontents}");

     rc = atoi(&preturn[14]);

     lr_output_message("upload rc = %d", rc);

  if(rc != 0)
  {
   goto END;
  }

 

END:

 lr_end_transaction("uploading", LR_AUTO);

 

 

 

 

另外,有点要注意:

如果下载的是文本文件(XML),其大小应该是iflen = strlen(lr_eval_string("{fcontents}")); //试验过

如果下载的是raw数据,其大小应该是iflen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE); //据说,我没试验

 

 

3:设置参数

这个是重点了。

参数文件其实就是本地的dat文件,就是文本文件格式。

 

有两个属性要设置:

select next row:

update value on:

 

我上面的logID,因为要每个vuser有一个独立的logID,并且在每次迭代中都是不变的,所以前者选择Unique,后者选择Once。

我上面的filename,因为要每个vuser在每次迭代使用不同的文件,而vuser之间保持一致,所以前者选择Sequential,后缀选择Each iteration。 其实前者选random也是可以的,这样vuser之间就不一致了。

 

 

 

 

 

 

 

原创粉丝点击