LoadRunner自动化测试的这些招,嘴角都压不住了!

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


问题描述

LoadRunner是Web应用性能测试常用的一个工具,它可以录制浏览器操作,并模拟大量用户并发访问系统。

LoadRunner的脚本通常只能对同步操作的功能进行测试,对于异步操作的功能则需要一些方法来进行处理才能够实现自动化测试。

本文通过一个具体的例子来讲解如何解决此类问题。

解决方案

01 测试功能描述:

某个性能测试的需求是要测试并发导入人员信息,人员信息数据通过excel模版进行维护,通过系统提供的导入功能进行导入。

系统的导入功能是通过异步任务来实现的,当执行导入操作时,系统不必等待导入结束就可以继续操作其它功能,导入任务同时会在后台执行,导入任务结束后,会返回成功或者失败之类的提示信息。

下图显示导入操作正在进行:

下图显示导入操作成功:

上图中可以看到,导入耗时为15秒。

02 脚本修改方法

这个导入功能相对于主程序来说,就是一个异步的功能,用LoadRunner录制脚本后,大概类似如下代码段:

    //选择导入文件
    ……
    //执行导入操作,记录事务
    lr_start_transaction("导入");
    //导入任务的页面请求
    web_custom_request("xmlhttp",
    "URL=http://192.168.25.22/test/xmlhttp?bid=addTaskDAO",
    "Method=POST",
    "Resource=0",
    "Snapshot=t12.inf",
    "Mode=HTML",
    "EncType=",
    "Body=<burlap:call>\n"
    "<method>getTaskById</method>\n"
    "<string>{taskId1}</string>\n"
    "</burlap:call>",
    EXTRARES,
    LAST);
    lr_end_transaction("导入", LR_AUTO);

    回放脚本时,脚本很快通过,“导入”这个事务的时间在0.0X秒,而实际导入的时间却是十几秒。显然,这样的脚本无法满足测试的需求,需要对此脚本进行完善处理。

    调整后的脚本如下所示:

      //选择导入文件
      ……
      //执行导入操作,记录事务
      int num=0;
      lr_start_transaction("导入");
      do{
      web_reg_save_param("status_success",
      "LB=<string>success</string><long>",
      "RB=</long>",
      "NotFound=WARNING",
      "Search=Body",
      LAST);
      //导入任务的页面请求
      web_custom_request("xmlhttp",
      "URL=http://192.168.25.22/test/xmlhttp?bid=addTaskDAO",
      "Method=POST",
      "Resource=0",
      "Snapshot=t12.inf",
      "Mode=HTML",
      "EncType=",
      "Body=<burlap:call>\n"
      "<method>getTaskById</method>\n"
      "<string>{taskId1}</string>\n"
      "</burlap:call>",
      EXTRARES,
      LAST);
      num=num+1;
      lr_think_time(1);
      }while((strcmp( lr_eval_string("{status_success}"), "1" ) != 0) && (num<61));
      //检查导入是否成功
      if(strcmp( lr_eval_string("{status_success}"), "1" ) != 0){
      lr_error_message("Error: 导入失败或超时");
      lr_end_transaction("导入",LR_FAIL);
      }
      else{
      lr_end_transaction("导入",LR_AUTO);
      }

      调整说明如下:

      1) 导入任务是否成功,是通过返回页面中的一个参数来标记的,如果此参数为1,则表明导入成功,否则表明导入失败。

      为了获取到这个参数的值,通过关联函数

      web_reg_save_param

      将此值存放到status_success参数中。

      2) 为了解决这种异步性,通过循环的方式反复检查status_success是否为1,因此将导入任务的页面前加入了循环操作,同时添加了计数器num,循环退出的条件是status_success为1(导入成功),或者是num大于60(超过重试次数)。

      3) 循环中设置了思考时间1秒,其目的是每1秒检查一次status_success的值,同时num加1,如果num大于60,也就表明超过了60秒,导入还没有成功,则认为是导入失败。

      多少秒退出循环可以根据实际需要进行设定。执行测试时,思考时间一定要选择“as recorded”。

      4) 循环退出后,通过检查status_success是否为1来判断导入是否成功,以便后续处理。

      这样调整后的脚本,基本就解决了异步的问题,可以较准确的记录“导入”这个事务的响应时间。

      问题结论

      LoadRunner的脚本功能很强大,实际上就是一个编程工具,只要有好的想法,所有需求基本都可以通过自动化脚本来实现。

      最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

      ​​

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值