| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> LoadRunner-性能测试工具 -> 正文阅读 |
|
[开发测试]LoadRunner-性能测试工具 |
LoadRunner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner11也很稳定。 可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。 LoadRunner的组件:
LoadRunner负载测试的流程
?流程: 1. 创建UV脚本1.1 录制脚本打开LoadRunner12的Virtual User Generator,点击左上角的File>New Script and Solution,弹出Create a New Script 窗口,在窗口中选择Web-HTTP/HTML协议,后点击Create 就会创建空白脚本。 VuGen的脚本分为三个部分:Vuser_init,Action,Vuser_end。其中Vuser_init和Vuser_end都只能存在一个,而Action可分成无数多个部分,可以通过点击旁边的【new】按钮来创建Action。在迭代执行测试脚本时,Vuser_init和Vuser_end中的内容只会执行一次,迭代的是Action部分。 在脚本编辑页,Actions是编写脚本的地方。 包含Vuser_init,Actions,Vuser_end Vuser_init:表示执行测试初始化工作,只执行一次,可设置登录。 Actions:放置需要循环执行的脚本,脚本中编写要压测的业务,如创建通知书,创建用户等,查询代办等。 Vuser_end:脚本只执行一次,可以设置退出脚本,执行测试结束清理操作。 新建空白页脚本,点击record(录制)按钮,进行录制设置。 4种录制方法: Web Browser:启动浏览器录制,存在浏览器兼容问题。 Windows Application:录制CS客户端。 Remote Application via LoadRunnwe Proxy:通过LoadRunner代理来录制。------推荐这种。 Captured Traffic File Analysis:通过抓包文件来录制脚本。 a. 录制设置:设置IP和port。点击ok开始录制。 b. 浏览器设置代理。 测试机已安装Chrome ,且安装了SwitchyOmega插件,设置场景名称。 1.2. 在浏览器种执行操作,就会生成脚本,脚本语法规则和C语言一致。1.3. 脚本增强。包含参数化,关联,检查点,参数化的作用是在进行场景执行的时候,每个不同的虚拟用户可以按照参数的读取策略读取到参数值,以模拟不同用户在提交或者读取不同的数据。 每个用户在界面上读取和提交的信息都不太相同,因此一般都需要参数化,其它与输入信息对应的比如用户id之类的信息也需要参数化;另外,录制环境绝大多数情况下与执行环境不一致,因此一般需要对IP、端口或者域名做参数化。 打开脚本后,首先要确定哪些常量需要参数化。 可以看出,在web_submit_data函数中,两条语句包含了两个常量:用户名和密码。 "Name=usernam", "Value=Test123433333@sina.com", ENDITEM, "Name=password", "Value=123456", ENDITEM, 当我们想模拟多个不同的用户来运行登录脚本的时候,需要对Value= Test123433333@sina.com和Value=123456进行参数化,以e号参数化为例,参数化过程如下: 1)选中Test123433333@sina.com à右击鼠标à在右键菜单上选择replace with a parameter。 2)在弹出窗口填写参数名称,或选择一个已经存在的参数名。 常用的参数类型:
3)单击窗口的properties按钮,设置parameter的properties。参数名称:Username;选择参数类型File,来写入已准备好的数据。 文件File:参数化结束后,脚本保存的根目录下会自动生成一个 以参数名称命名的 参数文件;也可以直接选择一个已准备好的参数文件。 选择参数列Select Column: By number:以列号为参数列。 By name:以列名为参数列。 文件格式: Column:参数之间的分隔符:逗号、空格、Tab。 First data:从第几行读取数据。 选择参数分配方法Select next row:
选择参数更新方法Update value on:
当超出范围时When out of values:(选择数据为unique时才可用到)
设置完成后,被参数化的值会被参数名代替 ?关联:关联的含义是在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,以变量的形式替换录制时的静态值,从而向服务器发出正确的请求,最典型的是用于sessionID,审批代办的请求参数待办id是待办列表中获取的。常用的关联技术有三种:录制中关联、录制后关联、手动关联。 如可以使用web_reg_save_param();方法建立关联。 录制中关联:设置录制前的recording options correlation,可以勾选LR已有的关联规则,也可以新建规则;录制过程中,关联自动在脚本体现。 插入检查点:在脚本中设置检查点函数,将返回值的结果反映在Controller的状态面板上和Analysis统计结果中,由此可以判断数据传递的正确性。如可通过web_reg_find()方法实现。 增加事务:脚本录制后插入或者录制中插入。 定义场景l?手动设计场景(Manual Scenario)最大的优点是能够更灵活地按照需求来设计场景模型,使场景能更好地接近用户的真实使用。一般情况下使用手动场景设计方法来设计场景。 l?面向目标场景(Goal Oriented Scenario)则是测试性能是否能达到预期的目标,在能力规划和能力验证的测试过程中经常使用。 定义场景—设置Schedule 在Controller的Scenario Schedule中,可以设置场景的各项计划,如虚拟用户的加载方式、释放策略等。 1.设置场景的基本信息 Schedule Name:设置场景名称。 Schedule by:选择按场景计划或按用户组计划。 Run Mode: real-world schedule 是真实场景模式,可以通过增加Action来增加多个用户。 basic schedule 是我们以前用的‘经典模式’,只能设置一次负载的上升和下降。 2.设置场景的各类参数:双击Global Schedule中的对应行,可以设置schedule的各类参数。 Initialize:初始化是指运行脚本中的Vuser_init操作,为测试准备Vuser和Load Generator。 Start Vusers:设置场景Vuser加载方式。 Duration:设置场景持续运行的情况。 Stop Vusers:设置场景执行完成后虚拟用户释放的策略。 Start Time:设置场景启动时间。 分析结果LR的Analysis模块是分析系统的性能指标的一个主要工具,它能够直接打开场景的执行结果文件,将场景数据信息生成相关的图表进行显示。Analysis集成了强大的数据统计分析功能,允许测试员对图表进行比较和合并等多种操作,分析后的图表能够自动生成需要的测试报告文档。 通常测试报告需要给出“虚拟用户—用户响应时间”的折线图,这个折线图可以通过合并报表的形式生成,过程如下:选中Average Transaction Response Time报表,单击菜单栏的ViewàMerge Graphsà然后选择与Running Vuser图合并,生成的折线图即为“虚拟用户—用户响应时间”。 ? ? 性能指标:系统的性能由TPS决定,跟并发用户数没有太多的关系,在同的TPS下,可以由不同的用户数去压(通过加思考时间设置) 系统的最大TPS是一定的(在一个范围内),但是并发用户不一定,可以调整 建议测试的时候,不要设置过长的思考时间,以最坏的情况下对服务器施压,一般情况下,大型系统(业务量,机器多)做压力测试,5000个用户并发就够了,中小型系统做压力测试,1000个用户并发就足够了。 常用函数1、C语言参数转web参数 lr_save_string("aaa","param"):将字符串“aaa”或者一个字符串变量,转变成LR的参数{param} 2、web参数转C语言参数 lr_eval_string("{param}"):取出参数{param}中的值,可嵌套在其他函数里使用 3、字符串处理函数 strcmp:字符串比较函数,若两个值相等,则返回0 4、编码转换函数 lr_convert_string_encoding(lr_eval_string("{msg}"),LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"afterEncodeMsg"); 5、参数数组操作 lr_paramarr_random("param_arry"):从参数数组param_arry中随机取一个值,注意param_arry不需要加{} 6、web_url():get接口,一般通过录制生成 7、web_custom_request():post接口,可以测试http接口或者webservice接口 8、web_submit_data():post接口,可以测试文件上传类型接口 9、atoi(lr_eval_string("{param}")):将LR参数{param}转换为数字 10、web_reg_save_param:关联函数,一定要写在请求之前 11、web_reg_find:文本检查点函数,一定要写在请求之前 12、日志函数
13、 web_save_timestamp_param:将当前的时间戳保存成一个参数 14、web_add_cookie函数:新增cookie 15、web_add_header函数,新增header信息 WebService接口 web_custom_request函数,需要新增header(Content-type:text/xml) Socket接口 1、lrs_create_socket("socket0", "TCP", "RemoteHost=127.0.0.1:8888", LrsLastArg),创建socket连接 2、lrs_send("socket0", "buf0", LrsLastArg),发送buf中的数据 3、lrs_receive("socket0", "buf1", LrsLastArg),接收服务器返回的数据,并保存到一个buf1中 4、lrs_save_param("socket0",NULL,"RecivedData",0,-1),获取服务器返回的数据,并保存到一个参数中RecivedData,最后两个参数,偏移量和length 5、lrs_save_searched_string("socket0",NULL,"RecivedData","LB/BIN=|","RB/BIN=|",1,0,-1),获取服务器返回的数据,并指定了左右边界 6、lrs_close_socket("socket0"),关闭链接 7、lrs_set_recv_timeout2:设置结束数据超时时间 |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 22:40:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |