一、录制
1、Web(HTTP/HTML)协议脚本制作
打开loadrunner11,点击“Create/Edit Script”启动Virtual User Generator。点击File--new,创建脚本文件,选择Web(HTTP/HTML)协议。
2、socket协议脚本制作
打开Loadrunner 11,创建/编辑脚本,选择 Windows Sockets协议,创建—开始录制。
二、优化
在录制脚本后,产生大量脚本代码,需要清理web_url()方法中的EXTRARES与LAST之间的代码。(在清理代码前,对脚本文件进行备份,然后对备份文件进行删改。如产生错误,即可对照原脚本文件进行删改。)
1、web_add_cookie("")、 lr_think_time("")、 web_url("") 几乎都是可以删掉;如果需要模拟真实的用户行为,思考时间是有必要留住的,当然还有关键的url,图片、样式等url除外,因为毕竟不是做前端性能测试;
注意:EXTRARES所包含的代码为png、css、jpg、css等格式的多余链接,清理掉可以加快代码运行效率。
2、需要参数化、做关联、检查点:
检查点:
转换编码格式:
lr_convert_string_encoding(lr_eval_string("{P_res}"),"UTF-8",NULL,"P_res");
lr_save_string(lr_eval_string("{P_res}"),"P_res");
if (strcmp(lr_eval_string("{P_res}"), "处理成功") == 0) {
lr_end_transaction("enter_homepage", LR_PASS);
}else{
lr_end_transaction("enter_homepage", LR_FAIL);
lr_error_message("失败:%s",lr_eval_string("{E_errMsg}"));
return 0;
}
三、socket协议脚本
打开Loadrunner 11,创建/编辑脚本,选择 Windows Sockets协议,创建—开始录制
录制完成后,目录会多出一个data.ws的文件,用于存放数据
报文体中需要用到转义符“ \ ”,转义 “ " ”,最好每一行后面加上换行符“ \n ”。
action部分:
#include "lrs.h"
Action()
{
int rc;
int len=0;
int rcelen=0;
// 建立到服务端的连接
rc = lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=(填ip)", LrsLastArg);
if (rc == 0){
lr_output_message("Socket was successfully created");
}else{
lr_output_message("An error occurred while creating the socket. Error Code: %d".rc);
}
lr_start_transaction("交易");
lrs_send("socket0", "buf0", LrsLastArg);
lrs_set recv_timeout(2400,0); //接收报文接收超时时间设置 600秒
lrs_receive("socket0", "buf1", LrsLastArg);
lrs_save_searched_string("socket0",NULL,"P_RESULTCODE", "LR/BIN=<ResultInfoDesc>",NULL,1,0,8);
lrs_save_searched_string("socket0",NULL,"P_RESULTCODE_1","LB/BIN=<TXLife>","RB/BIN=</TXLife>",1,0,-1);
// 这样设置的目的是报错时取到<TXLife></TXLife>中的所有响应报文
// 有左右边界的,最后三个参数 1是代表取第几次取到的, 0表示从第几位开始取,-1是全取。
if(strcmp(lr eval string("{P_RESULTCODE}"),"交易成功”)==0){
//lr_error_message("%s",lr_eval_string("{P_RESULTCODE_1}")); // 再次打印"P_RESULTCODE_1"的目的是看报错时取的值范围
lr_end_transaction(“交易”,LR_PASS);
else{
lr_error_message("%s",lr_eval_string("{P_RESULTCODE_1}"));
lr_end_transaction(“交易”,LR_PASS);
}
lrs_close_socket("socket0");
return 0;
}