《LoadRunner性能测试巧匠训练营》——2.4 脚本编写实战

简介:

本节书摘来自华章计算机《LoadRunner性能测试巧匠训练营》一书中的第2章,第2.4节,作者:赵 强 邹伟伟 任健勇 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.4 脚本编写实战

知识的学习都是从易到难的,所以小白选择了最简单的场景。以提前注册好的用户名besttest,密码123123完成登录、退出的业务。别小看这么简单的场景,也许你也和小白一样遇到了不少问题呢。
通过“开始”菜单下的HP LoadRunner →Application→Virtual User Generator打开并新建一个空白的Web(HTTP/HTML)协议的脚本,首次会出现Task视图界面,如图2-8所示。


234617c74db953bf30b9d01ebe4cf36943f36b05

初学者可按照图2-8中的步骤学习。因为这里不使用此视图,所以切换到Script视图界面。

LoadRunner的VuGen支持C语言开发、Java语言开发以及.NET语言开发,几乎支持目前主流的开发平台,十分强大。这里以C语言为主。

2.4.1 脚本录制
在开始录制之前有必要了解LoadRunner的录制原理。当使用VuGen进行录制时,会使用代理来访问服务器,这样就把客户端和服务器之间的通信数据包捕捉了下来,然后LoadRunner通过对应协议的API进行脚本封装,最终以良好的形式展现在VuGen中。
了解录制原理之后,就开始录制脚本。打开LoadRunner的VuGen组件,新建一个Web(HTTP/HTML)协议的脚本,弹出Start Recording(开始录制)对话框,如图2-9所示。


<a href=https://yqfile.alicdn.com/f18717788818b0584aa310ac73a01856ac125d27.png" >

下面对图2-9中的主要选项进行学习。

  • Application type:一般默认为Internet Applications,即B/S应用。这里的WebTours使用该默认选项。Win32 Applications则是用来支持标准的Win32客户端。
  • Program to record:指定录制时使用的浏览器,默认为IE。

    如果调用浏览器时出现异常,可以手工在此指定IE的完整绝对路径,如“C:\Program Files \ Internet Explorer\iexplore.exe”。对于Windows 7 64位操作系统的用户需要注意的是,IE可以指定为“C:\Program Files (x86)\Internet Explorer\iexplore.exe”。

    另外,建议浏览器保持干净,不要安装多余的插件,否则会出现一些莫名其妙的问题,浪费我们的宝贵时间。

  • URL Address:填写要录制的程序地址URL。
  • Working directory:脚本存放的工作目录。
  • Record into Action:包含vuser_init、Action和vuser_end。它们的区别是vuser_init和vuser_end中的脚本代码只执行一次,而Action中可以执行设定的次数。同时集合点也只能在Action中设置。至于集合点是什么,我们后面再学习。这里默认选择Action即可。

单击图2-9中的OK按钮后,LoadRunner调用IE打开WebTours网站并录制。开始录制后,在屏幕上出现如图2-10所示的浮动工具条,通过该浮动工具条可以完成暂停录制、停止录制、Action切换以及其他动作。


696d8f663c853ad36df1d59a7fc6b48e6e79c6f2

录制完成后,生成的完整代码如下。
代码清单2-1 登录、退出完整代码

Action()
{
  //打开Web Tours首页
web_url("WebTours", 
  "URL=http://127.0.0.1:1080/WebTours/", 
  "TargetFrame=", 
  "Resource=0", 
  "RecContentType=text/html", 
  "Referer=", 
  "Snapshot=t5.inf", 
  "Mode=HTML", 
  EXTRARES, 
  "Url=http://conf.xmp.xunlei.com/vus/vipjs/vus_utility.js", ENDITEM, 
  "Url=http://conf.xmp.xunlei.com/vus/vipjs/vus_config.js", ENDITEM, 
  "Url=http://conf.xmp.xunlei.com/vus/vipjs/vus_finder.js", ENDITEM, 
  LAST);
web_url("videourlsnifferconfig.xml", 
  "URL=http://conf.xmp.xunlei.com/videourlsnifferconfig.xml", 
  "TargetFrame=", 
  "Resource=0", 
  "RecContentType=text/xml", 
  "Referer=", 
  "Snapshot=t6.inf", 
  "Mode=HTML", 
  EXTRARES, 
  "Url=http://conf.xmp.kankan.com/vus/vipjs/vus_main.js", "Referer=", ENDITEM, 
  LAST);
web_url("config.xml", 
"URL=http://plugin.xl7.xunlei.com/coop/thunderbho/2.5.x.xxxx/config.xml", 
  "TargetFrame=", 
  "Resource=0", 
  "RecContentType=text/xml", 
  "Referer=", 
  "Snapshot=t7.inf", 
  "Mode=HTML", 
  LAST);
lr_think_time(56);
web_url("IE9CompatViewList.xml", 
  "URL=http://ie9cvlist.ie.microsoft.com/IE9CompatViewList.xml", 
  "TargetFrame=", 
  "Resource=0", 
  "RecContentType=text/xml", 
  "Referer=", 
  "Snapshot=t8.inf", 
  "Mode=HTML", 
  LAST);
lr_think_time(32);
  //提交登录信息
web_submit_data("login.pl", 
  "Action=http://127.0.0.1:1080/WebTours/login.pl", 
  "Method=POST", 
  "TargetFrame=", 
  "RecContentType=text/html", 
  "Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home", 
  "Snapshot=t9.inf", 
  "Mode=HTML", 
  ITEMDATA, 
  "Name=username", "Value=besttest", ENDITEM, 
  "Name=password", "Value=123123", ENDITEM, 
  "Name=login.x", "Value=53", ENDITEM, 
  "Name=login.y", "Value=9", ENDITEM, 
  LAST);
lr_think_time(9);
  //退出Web Tours
web_url("SignOff Button", 
  "URL=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=1", 
  "TargetFrame=body", 
  "Resource=0", 
  "RecContentType=text/html", 
  "Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home", 
  "Snapshot=t10.inf", 
  "Mode=HTML", 
  LAST);
return 0;
}

小白看到产生的脚本有点晕了,这脚本应该怎么看呢?于是他向经理求助。经理告诉他,学习LoadRunner最好的小伙伴就是F1的函数帮助手册,它可以说是绝佳“利器”。

在LoadRunner的录制过程中,请勿使用浏览器中的“后退”按钮。LoadRunner对该功能的支持不好。

2.4.2 “利器”——函数手册
于是小白就用经理告诉他的“利器”函数手册来学习。首先来看下web_url函数。这个函数对应的业务操作是打开WebTours首页。具体函数信息可双击选中web_url后,按F1键查看,出现说明,如图2-11所示。


<a href=https://yqfile.alicdn.com/65ed7708764196fdd233c5af38ac2ec9fdc850b3.png" >

在图2-11中,需要重点关注Return Values(函数返回值)、Parameterization(参数)和Example(例子)。单击其中的Example链接,进入后可以看到各种各样的实例,并有详细的描述,这是以后我们经常查看的地方。
学会Web_url函数后就可以照猫画虎地学习其他函数了。下一个函数是lr_think_time。这时候小白想起了之前学习基础知识时理解过思考时间的概念(参见1.3节),这里便是模拟了用户的真实行为操作记录下他的停顿时间。需要注意单位是秒。
接着是web_submit_data函数,小白看到里面有自己输入的用户名和密码,所以就猜想这个应该就是登录信息的提交请求了。通过F1键查看,小白确定了自己的猜想,这个函数其实就是充当了POST的数据提交请求,ITEMDATA后面的则是提交的参数以及对应的值。在代码清单2-1中就是username对应的besttest和password对应的123123。
2.4.3 脚本优化
一般录制出来的脚本会存在很多无关请求代码,不能直接使用,必须经过优化才行。
在刚才学习的过程中,小白发现了几个貌似和业务没有关系的请求,如含有xunlei、kankan、microsoft的请求,因为这些请求对于我们来说是无关的,所以可以删除掉。
完成清理后,细心的小白还发现,在一些函数中有个EXTRARES关键字,后面跟着一些额外的请求,这到底是什么,能不能删除呢?其实这个问题的答案并无对错,关键还是要看性能测试的目的,如果是要完整地模拟用户操作或是做性能评估,那么要保留。如果不是,则可以考虑删除进而对脚本进行瘦身。本脚本中的EXTRARES是无关的内容,可以删除。
脚本优化的方法主要有插入事务、插入集合点、设置思考时间、设置参数化、设置关联、设置检查点以及插入注释等。这些会在后续的章节中详细学习。
2.4.4 脚本回放
脚本录制完成后要如何验证是不是正确呢?这就需要依靠脚本的回放功能了。一般在回放之前要先单击图2-12中第二个方框内按钮编译检查脚本是否存在语法错误等,然后单击图2-12中按钮回放脚本。


85b988e9b80a1b605be391d9cbb8a236688d9830

如果脚本在运行过程中出现错误,VuGen会在日志区域提示并标红错误信息,方便用户调试脚本。脚本运行完成后会产生报告,可以单击菜单View→Test Results来查看,如图2-13所示。


<a href=https://yqfile.alicdn.com/0784745a9c0b2eea6ac3f14db13d12daf48e0b80.png ">

如果有错误,则报告中会体现,当然没有错误,也不能说明脚本一定成功,后面遇到这样的情况再讲解。

相关文章
|
5月前
|
数据采集 JSON JavaScript
Cypress 插件实战:让测试更稳定,不再“偶尔掉链子”
本文分享如何通过自定义Cypress插件解决测试不稳定的痛点。插件可实现智能等待、数据预处理等能力,替代传统硬性等待,有效减少偶发性失败,提升测试效率和可维护性。文内包含具体实现方法与最佳实践。
|
6月前
|
存储 关系型数据库 测试技术
玩转n8n测试自动化:核心节点详解与测试实战指南
n8n中节点是自动化测试的核心,涵盖触发器、数据操作、逻辑控制和工具节点。通过组合节点,测试工程师可构建高效、智能的测试流程,提升测试自动化能力。
|
7月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
7月前
|
存储 人工智能 算法
AI测试平台实战:深入解析自动化评分和多模型对比评测
在AI技术迅猛发展的今天,测试工程师面临着如何高效评估大模型性能的全新挑战。本文将深入探讨AI测试平台中自动化评分与多模型对比评测的关键技术与实践方法,为测试工程师提供可落地的解决方案。
|
5月前
|
人工智能 自然语言处理 JavaScript
Playwright MCP在UI回归测试中的实战:构建AI自主测试智能体
Playwright MCP结合AI智能体,革新UI回归测试:通过自然语言驱动浏览器操作,降低脚本编写门槛,提升测试效率与覆盖范围。借助快照解析、智能定位与Jira等工具集成,实现从需求描述到自动化执行的闭环,推动测试迈向智能化、民主化新阶段。
|
7月前
|
人工智能 缓存 测试技术
Playwright进阶指南 (6) | 自动化测试实战
2025企业级测试解决方案全面解析:从单元测试到千级并发,构建高可用测试体系。结合Playwright智能工具,解决传统测试维护成本高、环境依赖强、执行效率低等痛点,提升测试成功率,内容从测试架构设计、电商系统实战框架、高级测试策略、Docker化部署、CI/CD集成及AI测试应用,助力测试工程师掌握前沿技术,打造高效稳定的测试流程。
Playwright进阶指南 (6) | 自动化测试实战
|
6月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
759 11
|
11月前
|
监控 测试技术 数据库连接
RunnerGo API 性能测试实战:从问题到解决的全链路剖析
API性能测试是保障软件系统稳定性与用户体验的关键环节。本文详细探讨了使用RunnerGo全栈测试平台进行API性能测试的全流程,涵盖测试计划创建、场景设计、执行分析及优化改进。通过电商平台促销活动的实际案例,展示了如何设置测试目标、选择压测模式并分析结果。针对发现的性能瓶颈,提出了代码优化、数据库调优、服务器资源配置和缓存策略等解决方案。最终,系统性能显著提升,满足高并发需求。持续关注与优化API性能,对系统稳定运行至关重要。
|
7月前
|
算法 测试技术 API
从自学到实战:一位测试工程师的成长之路
在技术快速发展的今天,自动化测试已成为提升职场竞争力的关键技能。本文讲述了一位测试工程师从自学到实战的成长之路,分享他在学习UI、APP和API自动化过程中遇到的挑战,以及如何通过实际项目磨炼技术、突破瓶颈。他从最初自学的迷茫,到实战中发现问题、解决问题,再到得到导师指导,逐步掌握测试开发的核心思维,并向测试平台建设方向迈进。文章总结了他从理论到实践、从执行到思考的转变经验,强调了实战、导师指导和技术服务于业务的重要性。最后,邀请读者分享自己的技术突破故事,共同交流成长。
|
7月前
|
资源调度 前端开发 JavaScript
Jest 测试实战指南
本文系统讲解如何使用 Jest 进行高效的 JavaScript 函数测试,涵盖环境搭建、测试用例编写、模拟函数与快照测试等内容,帮助开发者提升代码质量与测试效率。
240 0