webhttphtml协议脚本编写技术指南V10.docx

上传人:b****3 文档编号:7002857 上传时间:2023-05-10 格式:DOCX 页数:19 大小:234.40KB
下载 相关 举报
webhttphtml协议脚本编写技术指南V10.docx_第1页
第1页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第2页
第2页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第3页
第3页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第4页
第4页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第5页
第5页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第6页
第6页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第7页
第7页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第8页
第8页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第9页
第9页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第10页
第10页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第11页
第11页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第12页
第12页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第13页
第13页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第14页
第14页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第15页
第15页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第16页
第16页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第17页
第17页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第18页
第18页 / 共19页
webhttphtml协议脚本编写技术指南V10.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

webhttphtml协议脚本编写技术指南V10.docx

《webhttphtml协议脚本编写技术指南V10.docx》由会员分享,可在线阅读,更多相关《webhttphtml协议脚本编写技术指南V10.docx(19页珍藏版)》请在冰点文库上搜索。

webhttphtml协议脚本编写技术指南V10.docx

webhttphtml协议脚本编写技术指南V10

 

WEB脚本编写

技术指南

(初稿)

 

1.前言

1.1.文档目标

本文档描述了Web(http/html)协议脚本的编写方法,为以后同类型协议脚本的开发提供参考。

1.2.适用范围与对象

本文档仅供脚本数据职能组脚本开发人员编写Web(http/html)协议脚本时参考使用。

1.3.术语及参考

协议:

网络协议,也可简称协议,由三要素组成:

(1)语法:

即数据与控制信息的结构或格式;

(2)语义:

即需要发出何种控制信息,完成何种动作以及做出何种响应;

(3)时序(同步),即事件实现顺序的详细说明。

2.Web(http/html)协议介绍

2.1.Web(http/html)协议简述

Web(HTTP/HTML)协议是基于浏览器请求响应数据的脚本。

   当选择Web(HTTP/HTML)协议录制时,VuGen记录的是在Internet上传送的“浏览器发出的HTTP请求和服务器的响应”的数据,脚本中包含了浏览器请求的数据详细信息,而不是操作过程的信息。

Web(HTTP/HTML)协议提供了两种录制方式,基于HTML的方式和基于URL的方式。

2.2.HTML方式与URL方式的区别

HTML录制

HTML录制级别是工具默认的选项。

使用HTML录制级别,VuGen将会基于当前Web页面的HTML上下文来产生语句。

优点:

减少了捕获动态值的需要。

Action标签值和隐藏值不是硬编码的。

(1)脚本回放的过程中,标签值或隐藏值从内存中重新得到。

(2)如果它们是动态值,虚拟用户仍然可以正常运行。

(3)脚本长度与业务过程相仿,每个页面一个业务步骤。

缺点:

脚本回放需要更多的CPU和内存。

(1)回放的时候,需要搜寻内存或cache。

所以,需要消耗更多的内存和CPU资源。

总结:

HMTL录制级别会为每一个HTML用户动作产生一个单独的步骤。

而且HTML方式产生的脚本非常简洁和直述,易于阅读。

在工具默认配置下,使用此模式。

Tips:

当在表单提交或者点击链接时遇到问题,使用高级选项下的URLOption来录制。

(二)URL录制

VuGen会录制所有的客户端请求和从服务器返回的资源。

这种录制级别下,VuGen会录制URL步骤为web_url语句。

录制表单提交为web_submit_data语句。

优点:

脚本具有灵活性和可量测性。

(1)脚本回放过程中,不再搜索内存和Cache。

(2)脚本更具可扩展性。

支持页面上的JavaApplets和ActiveX对象。

缺点:

更多的关联需求。

(1)Action标签值和隐藏值在脚本中是硬编码的。

所以,脚本需要做更多的关联(不是从Cache中获取的)。

(2)脚本长度更长。

(图片和框架作为单独的步骤被录制下来)

2.3.录制方式选取建议

1、如果应用是WEB应用,首选是HTML-based方式;

2、如果应用是使用HTTP协议的非WEB应用,首选是URL-based方式;

3、如果WEB应用中使用了javaapplet程序,且applet程序与服务器之间存在通讯,选用URL-based方式;

4、如果WEB应用中使用的javascript、vbscript脚本与服务器之间存在通讯(调用了服务端组件),选用URL-based方式。

3.Web(http/html)协议脚本函数说明

3.1.常用函数说明

01),名称:

web_reg_save_param();

说明:

此函数是Web(http/html)协议的关联函数,用于解决服务器和客户端之间动态数据的一种技术,通过关联规则来获取客户端与服务器之间的动态数据。

实例:

web_reg_save_param("outFlightVal", "LB=outboundFlightvalue=","RB=checked>",LAST);

    web_submit_form("reservations.pl",

        "Snapshot=t4.inf",

        ITEMDATA,

        "Name=depart","Value=London",ENDITEM,

        "Name=departDate","Value=11/20/2003",ENDITEM,

        "Name=arrive","Value=NewYork",ENDITEM,

        "Name=returnDate","Value=11/21/2003",ENDITEM,

        "Name=numPassengers","Value=1",ENDITEM,

        "Name=roundtrip","Value=",ENDITEM,

        "Name=seatPref","Value=None",ENDITEM,

        "Name=seatType","Value=Coach",ENDITEM,

        "Name=findFlights.x","Value=83",ENDITEM,

        "Name=findFlights.y","Value=16",ENDITEM,

        LAST);

 02),lr_save_string();

说明:

将字符变量里的值传递给指定参数。

实例:

lr_save_string("777","emp_id");

03),lr_eval_string()

说明:

取得参数的数值。

实例:

lrd_bind_col(Csr1,1,&COUNT_D1,0,0);

lrd_exec(Csr1,0,0,0,0,0);

lrd_save_col(Csr1,1,1,0,"row_cnt");

lrd_fetch(Csr1,1,1,0,PrintRow2,0);

lr_output_message("value:

%s",

    lr_eval_string("Therowcountis:

{row_cnt}"));

04),lr_start_transaction();lr_end_transaction();

说明:

事务开始和结束函数,此两个函数是成对出现

实例:

lr_start_transaction("deposit");

/*ServerAPIcall*/

status=bank_deposit(50);

/*Endtransactionwithoperationresult-passorfail*/

if(status==0)

    lr_end_transaction("deposit",LR_PASS);

        else

    lr_end_transaction("deposit",LR_FAIL);

05),lr_output_message();

说明:

将消息发送到输出窗口

实例:

lr_output_message("Weareoniteration#%s",lr_eval_string("{iteration}"));

06),web_reg_find();

说明:

文本检查函数,

实例:

web_reg_find("Text=Welcome",

        LAST);

//Nowlogin

    web_submit_form("login.pl",

        "Snapshot=t2.inf",

        ITEMDATA,

        "Name=username","Value=jojo",ENDITEM,

        "Name=password","Value=bean",ENDITEM,

        "Name=login.x","Value=35",ENDITEM,

        "Name=login.y","Value=14",ENDITEM,

        LAST);

3.2.其他函数说明

1、事务函数

  lr_end_transaction_instance/标记事务实例的结束以便进行性能分析

  lr_fail_trans_with_error/将打开事务的状态设置为LR_FAIL并发送错误消息

  lr_get_trans_instance_duration/获取事务实例的持续时间(由它的句柄指定)

  lr_get_trans_instance_wasted_time/获取事务实例浪费的时间(由它的句柄指定)

  lr_get_transaction_duration/获取事务的持续时间(按事务的名称)

  lr_get_transaction_think_time/获取事务的思考时间(按事务的名称)

  lr_get_transaction_wasted_time/获取事务浪费的时间(按事务的名称)

  lr_resume_transaction/继续收集事务数据以便进行性能分析

  lr_resume_transaction_instance/继续收集事务实例数据以便进行性能分析

  lr_set_transaction_instance_status/设置事务实例的状态

  lr_set_transaction_status/设置打开事务的状态

  lr_set_transaction_status_by_name/设置事务的状态

  lr_start_sub_transaction/标记子事务的开始

  

  lr_start_transaction_instance/启动嵌套事务(由它的父事务的句柄指定)

  lr_stop_transaction/停止事务数据的收集

  lr_stop_transaction_instance/停止事务(由它的句柄指定)数据的收集

  lr_wasted_time/消除所有打开事务浪费的时间

  lr_end_sub_transaction/标记子事务的结束以便进行性能分析

  r_end_transaction/标记LoadRunner事务的结束

  lr_end_transaction_instance/标记事务实例的结束以便进行性能分析

  lr_fail_trans_with_error/将打开事务的状态设置为LR_FAIL并

  2.     命令行分析函数

  lr_get_attrib_double/检索脚本命令行中使用的double类型变量

  lr_get_attrib_long/检索脚本命令行中使用的long类型变量

  lr_get_attrib_string/检索脚本命令行中使用的字符串

  3. 信息性函数

  lr_user_data_point/记录用户定义的数据示例

  lr_whoami/将有关Vuser脚本的信息返回给Vuser脚本

  lr_get_host_name/返回执行Vuser脚本的主机名

lr_get_master_host_name/返回运行LoadRunnerController的计算机名

4. 字符串函数

  lr_eval_string/用参数的当前值替换参数

  lr_save_string/将以NULL结尾的字符串保存到参数中

  lr_save_var/将变长字符串保存到参数中

  lr_save_datetime/将当前日期和时间保存到参数中

  lr_advance_param/前进到下一个可用参数

  lr_decrypt/解密已编码的字符串

  lr_eval_string_ext/检索指向包含参数数据的缓冲区的指针

  lr_eval_string_ext_free/释放由lr_eval_string_ext分配的指针

lr_save_searched_string/在缓冲区中搜索字符串实例,并相对于该字符串实例,该缓冲区的一部分保存到参数中

  5. 消息函数

  lr_debug_message/将调试消息发送到输出窗口

  lr_error_message/将错误消息发送到输出窗口

  lr_get_debug_message/检索当前的消息类

lr_log_message/将输出消息直接发送到output.txt文件,此文件位于Vuser脚本目录中。

该函数有助于防止输出消息干扰TCP/IP通信。

  lr_set_debug_message/为输出消息设置消息类

  lr_vuser_status_message/生成格式化输出并将其打印到ControllerVuser状态区域。

  lr_message/将消息发送到Vuser日志和输出窗口

  6. 操作函数

  web_custom_request允许您使用HTTP支持的任何方法来创建自定义HTTP请求

  web_image在定义的图像上模拟鼠标单击

  web_link在定义的文本链接上模拟鼠标单击

  web_submit_data执行“无条件”或“无上下文”的表单

  web_submit_form模拟表单的提交

  web_url加载由“URL”属性指定的URL

  7. 身份验证函数

身份验证函数web_set_certificate使Vuser使用在InternetExplorer注册表中列出的特定证书

  身份验证函数web_set_certificate_ex指定证书和密钥文件的位置和格式信息

身份验证函数web_set_user指定Web服务器的登录字符串和密码,用于Web服务器上已验证用户身份的区域

  8. 缓存函数

  缓存函数web_cache_cleanup清除缓存模拟程序的内容

  9. 检查函数

  检查函数web_find在HTML页内搜索指定的文本字符串

  检查函数web_global_verification在所有后面的HTTP请求中搜索文本字符串

  检查函数web_image_check验证指定的图像是否存在于HTML页内

  10. 连接定义函数

  连接定义函数web_disable_keep_alive禁用Keep-AliveHTTP连接

  连接定义函数web_enable_keep_alive启用Keep-AliveHTTP连接

连接定义函数web_set_connections_limit设置Vuser在运行脚本时可以同时打开连接的最大数目

  11. 并发组

  web_concurrent_end标记并发组的结束

  web_concurrent_start标记并发组的开始

  12. cook函数

  web_add_cookie添加新的Cookie或修改现有的Cookie

  web_cleanup_cookies删除当前由Vuser存储的所有Cookie

  web_remove_cookie删除指定的Cookie

  13. 关联函数

  web_create_html_param将HTML页上的动态信息保存到参数中。

(LR6.5及更低版本)

  web_create_html_param_ex基于包含在HTML页内的动态信息创建参数(使用嵌入边界)

4.脚本录制实例

4.1.录制

1)打开VuGen,点击新建

,选择

协议

2)在弹出的对话框内填入URL(128.192.74.1:

8003)地址、工作目录(本次使用默认目录)等信息,点击0ptions选项可选择相应的录制方式:

3)点击Options…设置相应的录制选项。

4)点击OK开始录制。

5)录制过程中添加事务

Ø点击按钮

Ø在弹出的对话框中输入开始事务的名称,例如:

登录;点击OK。

Ø完成页面的登录操作步骤后,点击按钮

Ø在弹出的对话框内结束事务的名称已经被自动输入,点击OK。

6)按照交易操作步骤录制脚本,交易完成时,点击按钮

7)保存录制的脚本

4.2.增强

4.2.1.检查点

定义:

用来确定业务流程是否得到了正确的执行

分类:

1)文本检查点:

web_find

web_reg_find

2)图片检查点:

web_image_check

lr_start_transaction("登录");

web_reg_find("Text=欢迎",

"Savecount=count",

LAST);

web_submit_data("B2BMainPlat",

"Action=http:

//128.192.74.15:

8003/NCCB/B2BMainPlat",

"Method=POST",

"TargetFrame=",

"RecContentType=text/html",

"Referer=http:

//128.192.74.15:

8003/b2bmainV5.htm",

"Snapshot=t2.inf",

"Mode=HTML",

ITEMDATA,

"Name=PT_LANGUAGE","Value=CN",ENDITEM,

"Name=CUSTOMERID","Value=JS60817904-5#0G",ENDITEM,

"Name=USERID","Value=666666",ENDITEM,

"Name=LOG_PWD","Value=999999",ENDITEM,

"Name=TXCODE","Value=690101",ENDITEM,

"Name=CCB_IBSVersion","Value=V5",ENDITEM,

"Name=PT_STYLE","Value=3",ENDITEM,

"Name=resType","Value=jsp",ENDITEM,

"Name=log_buttom.x","Value=31",ENDITEM,

"Name=log_buttom.y","Value=10",ENDITEM,

EXTRARES,

"URL=../V5/STY3/CN/images5/welcome.gif",ENDITEM,

LAST);

if(strcmp(lr_eval_string("{count}"),"0")!

=0)

{

lr_end_transaction("登录",LR_PASS);

}

else

{

lr_end_transaction("登录",LR_FAIL);

return0;

}

4.2.2.参数化

定义:

将脚本中录制下来的特定值,用一个变量替代,而该变量的值是变化的。

本次以用户登录名(CUSTOMERID)为例:

1、选中需要参数化的数据,点击右键,选择Replacewithaparameter

2、在弹出的对话框内,输入参数的名字,然后点击OK按钮

4.2.3.关联

定义:

解决服务器和客户端之间动态数据的一种技术,通过关联规则来获取客户端与服务器之间的动态数据。

用法:

web_reg_save_param

注意事项:

a)web_reg_save_param只适用于Web协议脚本

b)注意关联函数的左右边界

c)注意ORD参数的设置

d)关联函数为注册类函数

操作步骤:

1)确定需要获取的动态数据

a)使用相同的数据、相同的业务流程录制两个脚本,然后点击Tools->ComparewithVuser…将两个脚本进行对比找出不同的地方,进行确定是否是需要关联的数据

b)录制脚本后进行回放,根据错误提示信息进行判断需要关联的数据

2)确定动态数据的左右边界

将Extendedlog中的Datareturnedbyserver选项勾上,之后回放脚本,根据变量名,在Replaylog中找到关联的数据,进而确定左右边界。

a)确定关联函数添加的位置

b)在Replaylog中找到关联的数据后,双击该数据,loadrunner会自动定位发送该数据的函数,将关联函数添加在该函数的上面。

c)添加关联函数,并把脚本中的动态数据用变量进行替代

以用户卡号为例:

//OPTIONvalue='4367422005520008424'

web_reg_save_param("S_ACC_NO",

"LB=OPTIONvalue='",

"RB='",

"ORD=1",

"Search=Body",

LAST);

web_submit_data("B2CMainB1L2",

"Action=http:

//{P_loginPort}/app/B2CMainB1L2?

CCB_IBSVersion=V5&SERVLET_NAME=B2CMainB1L2",

"Method=POST",

"TargetFrame=",

"RecContentType=text/html",

"Referer=http:

//{P_loginPort}/app/B2CMainPlatV5?

CCB_IBSVersion=V5&SERVLET_NAME=B2CMainPlatV5",

"Snapshot=t29.inf",

"Mode=HTML",

ITEMDATA,

"Name=BRANCHID","Value={S_branchid}",ENDITEM,

"Name=TXCODE","Value=410505",ENDITEM,

"Name=SKEY","Value={S_SKEY}",ENDITEM,

"Name=USERID","Value={P_UserID}",ENDITEM,

"Name=USERNAME","Value=Addr",ENDITEM,

//"Name=COOKIES","Value=ME6dibMrDHnfTra0PN6xU5Kvbi46T1KjHy4bTUKdLq49Tyq9c9SKd4NGkuP0aiqmLI5QU0azfZ5wUD6xjt98VhKljW3qUJKETLGcfq3zGTMEJT",ENDITEM,

"Name=FIRSTPAGE","Value=0010",ENDITEM,

"Name=MENUPAGEFLAG","Value=1",ENDITEM,

LAST);

lr_st

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2