zoukankan      html  css  js  c++  java
  • LoadRunner性能测试系统学习教程:脚本编写之检查点函数(2)

    上期讲到LoadRunner性能测试脚本编写,这期我们来讲讲检查点函数。一起学习吧!

    检查点函数

    常用的检查点函数有web_find()和web_reg_find()两个

    web_find()函数

    该函数作用是在页面中查找相应的内容。常用参数的含义如下:

    web_find("Text Check",        //检查点步骤名称        "RightOf=Go to",        
    //定义查找字符串右边界
    "LeftOf=page", //定义查找字符串左边界
    "What=Home", //定义检查字符串内容
    LAST);

    使用该函数时要注意以下几个问题:

    1.该函数只能对基于HTML模式录制的脚本进行查找。

    2.该函数必须在页面内容显示出来以后才能进行查找,所以该函数必须写在查找内容所在页面的后面。

    3.必须启用内容检查选项,在Run-time Settings→Preferences里面,把Enable Image and text  check复选框选中,否则不执行该查找函数,如图所示。

    4.在VB和Java语法中不支持该函数。

    该函数存在下面两个缺点:

    1.执行效率较低。

    2.不返回查找结果情况。例如,要查看有多少个虚拟用户登录成功的情况,这个函数无法做到,必须进一步操作才能实现。

    web_reg_find()函数

    该函数是在缓存中查找相应的内容,是一个注册函数,常用参数及含义如下:

    web_reg_find("Text=Welcome",            
    //定义要查找的内容

    "SaveCount=Welcome_Count",
    //定义查找计数变量名

    "Search=Body",
    //定义查找范围

    LAST);

    该函数必须写在要查找内容的请求之前,一般情况下都会写在如下六个函数之前:

    Web_custom_request()、web_image()、web_link()、web_submit_data()、web_submit_form()、web_url()

    SaveCount参数用来记录在缓存中内容被查找到的次数,因此在实际应用中经常会使用这个参数来统计查找成功的次数,进而来判断欲查找的内容是否真的被查找到。

    下面是一个实例。

    web_reg_find("Text=Welcome",           
    "SaveCount=Welcome_Count",

    LAST);
    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);
    if (atoi(lr_eval_string("{Welcome_Count}")) > 0){
    lr_output_message("Log on successful.");
    }
    //判断如果计数变量Welcome_Count值大于0,则在日志中输出登录成功
    else{ lr_error_message("Log on failed");
    //反之则在日志中输出登录失败
    return(0); }

    web_find()和web_reg_find()虽然都是检查点函数,但两个函数还是有区别的,主要区别有以下几点:

    1.两个函数类型不同,web_find只是一个普通函数,而web_reg_find是一个注册函数。

    2.web_find函数使用时必须开启内容检查选项,而web_reg_find函数没有此限制。

    3.web_find函数录制时只能基于HTML模式录制的脚本中,而web_reg_find函数没有此限制。

    4.web_find函数是在返回的页面中进行内容查找,web_reg_find函数是在缓存中进行查找。

    5.web_reg_find函数在执行效率上要比web_find函数高。

     

    通过检查点判断事务结束状态

    前面介绍了检查点的目的是验证业务是否成功,那么如何使用检查点来验证业务成功与否呢?需要验证业务是否成功即是需要通过检查点来确定事务结束状态。

    下面是检查点函数的参数格式:

    web_reg_find("Text=Welcome",              
    //定义要查找的内容

    "SaveCount=Welcome_Count",
    //定义查找计数变量名

    "Search=Body",
    //定义查找范围

    LAST);

    其函数中有一个很重要的参数SaveCount,这个参数是用于统计待检查数据被查找到的次数,如果需要确定业务是否成功,那么则待检查的数据至少要被查找到1次,这样才能保证业务被正确的处理。如飞机订票系统的登录功能,需要确定登录成功,那么至少需要在登录成功页面中能查找到登录的用户名(至少需要查找到一次),这样才能保证登录的业务是成功的。

    以上面的飞机订票系统的登录功能为例,首先插入检查点,插入检查点的脚本如下:

       web_reg_find("Search=Body",                   
    "SaveCount=no", //将检查到的内容(test1)的次数保存在变量no中

    "Text=test1", //需要检查的内容为test1

    LAST);

    接下来需要判断变量no的值是否大于或等于1,如果大于或等于1,那么将登录事务的结束状态设置为LR_PASS,反之将结束状态置为LR_FAIL,修改后的代码如下:

    //通过lr_eval_string函数读取变量no的值,由于lr_eval_string函数//读取的值为字符型,所以需要将它转换为整型,这样才能进行比较 if (atoi(lr_eval_string("{no}"))>=1) {                 
    lr_end_transaction("Login", LR_PASS); }
    else{
    lr_end_transaction("Login", LR_FAIL); }

    其中变量no的值为大于或等于1,因为在有些情况下,可能查找到的值不只一个,所以一般情况下判断其是否大于或等于1。

    修改后完整的代码如下:

     web_submit_data("login.pl",            
    "Action=http://127.0.0.1:1080/WebTours/login.pl",

    "Method=POST",
    "RecContentType=text/html",
    "Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",

    "Snapshot=t9.inf",
    "Mode=HTTP",
    ITEMDATA,
    "Name=userSession", "Value={WCSParam2}", ENDITEM,
    "Name=username", "Value=test1", ENDITEM,
    "Name=password", "Value=1", ENDITEM,
    "Name=JSFormSubmit", "Value=off", ENDITEM,
    "Name=login.x", "Value=46", ENDITEM,
    "Name=login.y", "Value=6", ENDITEM,
    LAST); web_concurrent_start(NULL); web_url("nav.pl_2",
    "URL=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home",
    "Resource=0",
    "RecContentType=text/html",
    "Referer=http://127.0.0.1:1080/WebTours/login.pl",
    "Snapshot=t10.inf",
    "Mode=HTTP", LAST); web_reg_find("Search=Body",
    "SaveCount=no",
    "Text=test1", LAST); web_url("login.pl_2",
    "URL=http://127.0.0.1:1080/WebTours/login.pl?intro=true",
    "Resource=0",
    "RecContentType=text/html",
    "Referer=http://127.0.0.1:1080/WebTours/login.pl",
    "Snapshot=t11.inf",
    "Mode=HTTP", LAST); web_concurrent_end(NULL);
    web_concurrent_start(NULL);
    web_url("flights.gif", "URL=http://127.0.0.1:1080/WebTours/images/flights.gif",
    "Resource=1",
    "RecContentType=image/gif", "Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home",

    "Snapshot=t12.inf",
    LAST); web_url("itinerary.gif", "URL=http://127.0.0.1:1080/WebTours/images/itinerary.gif",
    "Resource=1",
    "RecContentType=image/gif", "Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home",
    "Snapshot=t13.inf",
    LAST); web_url("in_home.gif", "URL=http://127.0.0.1:1080/WebTours/images/in_home.gif",
    "Resource=1",
    "RecContentType=image/gif", "Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home",
    "Snapshot=t14.inf",
    LAST); web_url("signoff.gif", "URL=http://127.0.0.1:1080/WebTours/images/signoff.gif",
    "Resource=1",
    "RecContentType=image/gif", "Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home",
    "Snapshot=t15.inf",
    LAST); web_concurrent_end(NULL); if (atoi(lr_eval_string("{no}"))>=1) {
    lr_end_transaction("Login", LR_PASS);
    } else{ lr_end_transaction("Login", LR_FAIL); } web_url("SignOff Button",
    "URL=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=1",
    "Resource=0", "RecContentType=text/html",
    "Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home",
    "Snapshot=t16.inf", "Mode=HTTP",
    LAST);
    如果您看了本篇博客,觉得对您有所收获,请点击右下角的[推荐]. 如果您想转载本博客,请注明出处, 如果您对本文有意见或者建议,欢迎留言. 感谢您的阅读,请关注我的后续博客!
  • 相关阅读:
    归并排序
    将文件存储到数据库中(MySQL)
    JS实现日历控件选择后自动填充
    HDU 1358 Period KMP
    Adobe Flash Player已经终止一项可能不安全的操作,解决方案
    将文件从数据库(MySQL)中进行读取
    Ubuntu java开发环境配置
    硬盘结构和原理
    杭电 HDU 1242 Rescue
    mysql workbench建表时PK,NN,UQ,BIN,UN,ZF,AI
  • 原文地址:https://www.cnblogs.com/chuansinfo/p/13677971.html
Copyright © 2011-2022 走看看