《LoadRunner性能测试巧匠训练营》——2.5 脚本增强实战

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

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

2.5 脚本增强实战

通过上面的学习,小白对基本的操作已经很熟悉了,接下来他将继续学习如何增强脚本功能。
2.5.1 检查点实战
继续以WebTours为例,如何判断besttest用户是否登录成功呢?这时候检查点函数就派上用场了。这里有两个检查点函数,分别是文本检查点和图片检查点。

  1. 文本检查点
    小白虽然刚刚接触LoadRunner,但多年养成的良好学习习惯已经让他的学习效率比别人高了。小白直接在函数帮助手册中查看web_reg_find并学习这个函数。原来这个函数用于在HTML页面检查是否有用户指定的文本。

接着小白就动手在脚本里增加这个函数,小白想既然是检查用户名,那么肯定是在登录完成后才能查找到,所以就把代码清单2-2中的内容加到了提交登录请求后。
代码清单2-2 文本检查点
//文本检查点,检查besttest

web_reg_find("Text=besttest", LAST );

完成后,运行脚本,本来觉得一切都没问题,但却报错了,如图2-14所示。


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

于是,小白再次查看函数帮助手册,看看是不是漏掉了什么重要信息。果然,示例中的文本检查点是在提交请求之前加的,为什么要这样呢?小白再次查找相关资料了解到,原来新版的LoadRunner中凡是带有reg的函数,都是注册函数,这个函数的特点是要放到实际提交请求操作之前。小白赶紧修改文本检查点函数的位置,将其放到了提交登录请求之前。
再次回放后,终于成功且日志没有报错,如图2-15所示。


<a href=https://yqfile.alicdn.com/62f8cde364724e317c5ff13328a8401b5907da3b.png
" >
  1. 图片检查点
    通过查看函数帮助手册,小白了解到图片检查点函数web_image_check是针对设定的图片属性进行检查,一般图片属性有alt、src等。

    图片检查点函数中的属性可以是alt,也可以是src,有的图片没有alt属性,但所有图片都有src属性,所以建议一般选取src属性指定图片的相对路径即可,可以通过右击网页选择查看页面源代码获得。



    小白把该函数加到登录之后,检查登录成功后的“退出”按钮图片,如代码清单2-3所示。
    代码清单2-3 图片检查点
       //图片检查点,检查退出按钮图片
    web_image_check("signoff",//图片名称,随意命名
      "Src=/WebTours/images/signoff.gif",//图片的src属性
      LAST);
    

    添加完成后,单击“回放”按钮,日志里并没有任何报错,不过细心的小白还是发现了这样一句话,如图2-16所示。


    b15526f7500f2ff4214b66a7938ad3f1001fd996

    根据提示,小白查看Run-time Settings设置中的Preferences,发现了一个关于检查点的设置选项,如图2-17所示。


    4696b77a38cb19622d5f086c566b9bced3f768c2

    于是,小白把图2-17中的Enable Image and text check勾选上,再次回放脚本并查看日志,显示成功,如图2-18所示。


    f85da9b765aed532c242877a69c20b669ac105bd
    检查点功能选项默认是关闭的,一般不建议使用,因为它会消耗一些资源。脚本调试期间可以使用,但场景运行期间建议关闭。
    

    通过这次动手,小白总结出两点。第一,文本检查点函数需要注意位置;第二,图片检查点需要开启Run-time Settings里的设置。小白也深知,这些问题的发现都是通过看日志得出的,原来调试脚本看日志这么重要。

    1. 检查点扩展
      在查看函数帮助手册时还发现检查点函数的另一种用法也是比较常用的。以登录后检查用户名为例来说明。
    web_reg_find("Text=besttest",
    "SaveCount=besttest_count",
    LAST );    //其中Text代表要检查的用户名是besttest,SaveCount代表把检查到的次数保存在
                //besttest_count中
    

    2.5.2 参数化实战
    小白在想“如果想模拟不同用户登录系统LoadRunner能实现吗?”其实是可以实现的,利用参数化即可。LoadRunner中的参数化有两种,一种是俗称文件形式的参数化,一种是数据库形式的参数化。
    一般参数化的应用场景有如下几种。
    1)真实的模拟用户操作。
    2)系统不允许同一个用户频繁地进行相同操作。
    3)系统对数据的唯一性有要求。
    设置参数化的一般步骤为:分析需要参数化的数据→设计数据分配方式→查找替换对象。

    1. 文件参数化
      为了练习,小白准备把用户名进行参数化,参数化的值分别为besttest、besttestxiaoqiang、besttestandashu,它们的密码统一为123123。练习步骤如下。

    1)依次单击菜单中的Insert→New Parameter命令,弹出如图2-19所示的参数化对话框,单击new按钮,并重命名为username。
    2)依次单击图2-19中的Create Table→Edit with Notepad,在弹出的文本中输入参数化的值,每个值占据一行,最后保留一个空行,然后保存关闭即可,如图2-20所示。


    9219c5b45edf3065bff2dce8f6ee1b90b1ec8bb5

    3)回到脚本中,找到要参数化的用户名,双击选中,单击鼠标右键,选择Use Existing Parameter→username,如图2-21所示。


    fcf0f4ff9fa06c23e8e1fe22b28c9194e56646da

    4)最终完成参数化后,参数username被{}包围,这是在LoadRunner中的规则,如图2-22所示。


    5846f11853a19de0cdf7929930e43ce00f768b31

    5)单击菜单Vuser→Run-time Settings→RunLogic,设置迭代次数为3,这样才能验证参数化是否正确,如图2-23所示。


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

    6)运行并验证,经过3次迭代运行后,脚本没有问题,都可以正常登录。
    到这里,小白并没有满足,他想如果用户名与密码要一一对应,该怎么参数化呢方法如下。
    用户名的参数化方法与上面的步骤一样。密码的参数化稍有不同,步骤如下。
    1)新建参数pwd,并选择File为username.dat,如图2-24所示。


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

    2)单击图2-24中的Add Column按钮,弹出如图2-25所示的对话框,单击OK按钮。
    3)单击图2-24中的Edit with Notepad按钮,输入与用户名对应的密码,如图2-26所示。

     <div style="text-align: center">

    c05ab572ebc380c42adc7fefc47b389344376118

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
8月前
|
测试技术 持续交付 UED
软件测试的艺术:确保质量的实战策略
在软件开发的舞台上,测试是那把确保每个功能如交响乐般和谐奏响的指挥棒。本文将深入探讨软件测试的重要性、基本类型以及如何设计高效的测试策略。我们将通过一个实际的代码示例,展示如何运用这些策略来提升软件质量和用户体验。
|
3月前
|
监控 测试技术 数据库连接
RunnerGo API 性能测试实战:从问题到解决的全链路剖析
API性能测试是保障软件系统稳定性与用户体验的关键环节。本文详细探讨了使用RunnerGo全栈测试平台进行API性能测试的全流程,涵盖测试计划创建、场景设计、执行分析及优化改进。通过电商平台促销活动的实际案例,展示了如何设置测试目标、选择压测模式并分析结果。针对发现的性能瓶颈,提出了代码优化、数据库调优、服务器资源配置和缓存策略等解决方案。最终,系统性能显著提升,满足高并发需求。持续关注与优化API性能,对系统稳定运行至关重要。
|
1月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
297 23
|
25天前
|
存储 关系型数据库 测试技术
拯救海量数据:PostgreSQL分区表性能优化实战手册(附压测对比)
本文深入解析PostgreSQL分区表的核心原理与优化策略,涵盖性能痛点、实战案例及压测对比。首先阐述分区表作为继承表+路由规则的逻辑封装,分析分区裁剪失效、全局索引膨胀和VACUUM堆积三大性能杀手,并通过电商订单表崩溃事件说明旧分区维护的重要性。接着提出四维设计法优化分区策略,包括时间范围分区黄金法则与自动化维护体系。同时对比局部索引与全局索引性能,展示后者在特定场景下的优势。进一步探讨并行查询优化、冷热数据分层存储及故障复盘,解决分区锁竞争问题。
106 2
|
3月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
340 24
|
5月前
|
存储 人工智能 编译器
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
191 10
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
4月前
|
数据可视化 JavaScript 前端开发
从Postman到Apipost:我的动态参数测试实战踩坑记
作为一名全栈开发工程师,在开发用户中心模块时,我遇到了复杂参数API测试的挑战。最初使用Postman时,发现其在生成动态参数(如邮箱、手机号和日期)时存在诸多问题,导致测试效率低下甚至出错。例如,随机生成的邮箱格式无效等 后来,CTO推荐了Apipost,它提供了更智能的参数生成方式:支持真实邮箱、符合规范的手机号以及合法日期范围,极大提升了测试效率和准确性。通过对比,Apipost在处理复杂动态参数方面明显优于Postman,减少了维护成本并提高了团队协作效率。现在,我们已全面切换到Apipost,并利用其「参数组合测试」功能发现了多个边界条件bug。
|
4月前
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
5月前
|
存储 数据可视化 测试技术
一个测试工程师的实战笔记:我是如何在Postman和Apipost之间做出选择的?
优秀的API测试工具应该具备: 分层设计:既有可视化操作,也开放代码层深度定制 场景感知:自动识别加密需求推荐处理方案 协议包容:不强迫开发者为了不同协议切换工具 数据主权:允许自主选择数据存储位置
137 7
|
6月前
|
前端开发 JavaScript 测试技术
使用ChatGPT生成登录产品代码的测试用例和测试脚本
使用ChatGPT生成登录产品代码的测试用例和测试脚本
175 35