3.Loadrunner

Loadrunner

简介:

三大组件:

  • Virtual User Generator --- 录制和生成脚本;
  • Controller --- 创建测试场景、运行和监控场景;
  • Analysls --- 分析测试结果,出测试报告;

模块介绍:

  • Virtual User Generator:记录客户端和服务器之间的数据交互,模拟用户行为,记录真实的用户行为;生成测试脚本(代码);
  • Controller:创建和设计测试场景、运行测试脚本(VuGen生成的脚本)、监控场景运行,收集测试过程的数据;
  • Analysis:分析测试结果(Coontreller中运行工程的结果,保存在响应的数据中),出测试报告和各种图表,供测试人员分析性能问题和瓶颈,方便找出和定位,提供基本的优化方向;

Virtual User Generator:

脚本录制:

1.选择协议类型:
  • Single Protocol:使用单协议的Vuser脚本;
  • Multiple Protocols:多个协议的Vuser脚本;
  • Recent:最近创建脚本所用到的协议;
  • Mobile:移动应用脚本所用到的协议;
  • Popular:常用的协议;
2.确定使用的协议:
  • 一般根据被测应用是B/S结构还是C/S结构来选择协议;
    • B/S结构,一般选择Web(HTTP/HTML)协议;
    • C/S结构,可以根据后端数据库的类型来选择;
  • 也可以使用Protocol Advisor进行检测;
  • 其他第三方协议测试工具;
  • 向开发人员询问;
3.脚本录制位置的说明:
  • vuser_init:存放应用程序初始化脚本(只执行一次)
  • vuser_end:存放应用程序注销和关闭时的脚步(只执行一次)
  • Action:存放实际的操作脚本(可以有多个,可以多次执行)
4.选择程序类型和程序地址:
image-20231204173918604
5.录制过程中的控制:
image-20231204174032853
6.查看脚本,脚本回放:
  • 查看脚本:点击Action脚本,来查看里面的代码;

  • 脚本回放,用以查看脚本录制的内容和运行是否符合要求;

image-20231204174226585

常用函数:

概念:
在录制完脚本后,脚本代码中,有一些代码是与该脚本无关的,可以将它删除,所以我们需要知道一些常用的函数意思;
简介:
  • 模拟人为点击超链接,需要页面支持;
web_url():
简介:
  • 页面的访问函数,无需页面支持。使用频率很高;
web_submit_from():
简介:
  • 页面表单数据提交,需要页面有from表单;
web_submit_data():
简介:
  • 页面数据提交,无需页面的支持。使用频率很高;
lr_think_time():
简介:
  • 思考时间,两次请求间隔时间;
web_reg_save_param:
简介:
  • 用于获取服务端数据,使用左右边界,只提取被左右边界包裹的值;
web_add_auto_header:
简介:
  • 在下面的所有请求,添加自定义请求头信息;
web_add_header:
简介:
  • 在下面的一次请求,添加自定义请求头信息;

VuGen脚本的设计和强化:

简介:
  • 强化的原因:
    • 脚本不能达到测试预期;
    • 脚本过于简单
  • 强化手段:
    • 插入事务:局部操作的汇总,是TPS的基础;
    • 检查点功能:就是断言;
    • 集合点设置:虚拟用户集合在一起,实现并发操作;
    • 参数化运行;
    • Runntime settings(运行时设置)
事务:
简介:
  • 定义事务时,首先在脚本中找到事务的开始和结束位置,然后分别插入一个事务起始标记;
  • 在脚本运行完毕以后,系统会在结果信息中单独反映每个事务的运行结果;
  • 事务函数:局部代码的性能分析;
事务函数:
  1. lr_start_transaction(""):开始事务,参数为事务的名称(普通变量的命名方式);
  2. lr_end_transaction("",LR_AUTO):结束事务,参数一为事务开始的名称,参数二为固定常量LR_AUTO;
分析和使用:
  • 阅读运行日志,分析和查看食物的运行状态(Passed/Failed),性能表现;
  • 事务可以在将脚本中直接添加,也可以在录制脚本时,进行添加;
  • 事务可进行嵌套,可以更加详细的统计事务;
关联知识点:
  • 事务的成功率;
  • 每秒钟事务数;
  • 事务的响应时间;
集合点(Rendezvous):
简介:
  • Loadrunner中为了实现真正意义上的并发而进行的一种运行机制,会让虚拟用户短暂的集合,在满足特定条件的情况下开始放行,产生并发数;
  • 注意:
    • 集合点的代码不可以放在初始化(vuser_init)脚本中,或者结束(vuser_end)脚本中;
    • 集合点一般要放在事务之前(集中力量在做某一件事,并发);
集合点函数:
  • lr_rendezvous():参数为集合点的名称;
操作步骤:
  1. 在脚本中写入集合点函数;
  2. 打开Controller组件,既场景;
  3. 在场景中开启和设置集合点;在Scenario下Rendezvous中;
  4. 设置集合点释放策略(Policy);有三种方式:
    • 百分比虚拟用户都到集合点位置;
    • 百分比运行的用户到集合点位置(最常用);
    • 固定数目的虚拟用户到集合点位置;
  5. 虚拟用户的超时设置;
  6. 集合点运行结果查看;
检查点:
简介:
  • 相当于Loadrunner中的"断言";
  • 主要用于检查在服务器压力较大时,是否能够准确的返回指定的测试对象;
检查点函数:
  • web_reg_find():实现对文本内容的检查;reg是注册的意思,要在网页请求之前就进行检查点的注册,检查点函数一般放在页面请求之前;
操作步骤:
  1. 在使用检查点之前,需要先开启检查点功能;

    • 打开运行时(Runtime Settings)设置,在Internet Protocol,选择Preferneces,勾选Enable image and text checks来开启检查点;
  2. 在脚本中插入检查点函数,在打开的步骤选择器中找到web_reg_find()函数;

    • 在导航栏上的Design中,选择Insert in Script下的New Step,在打开的选择器中查找web_reg_find()函数;
  3. 设置检查点内容;

    • Search for specific Text:根据完整字符串进行匹配;

    • Search for Text by start and end of string:根据字符串的开头和结尾进行匹配;

    • 三种检查方式:

      • match case:匹配大小写;
      • binary data:二进制数据;
      • use # for any digit:用#代替任何一个数据所有数字和字符串;
    • Search in:

      • Body:搜索Body标签范围内的内容;
      • Headers:搜索head标签范围内的内容;
      • All:搜索整个网页范围内的内容;
    • Save count:统计并保存该字符串匹配的次数;

    • Fail if:

      • NotFound:没有找到就判定为失败
      • Found:找到了就算失败
    • 注意:检查点一般要放在web_url()之前;

  4. 查看检查点运行结果

参数化:
参数类型:
  • Date/Time:日期/时间
  • File:文件
  • Group Name:组名称
  • Iteration Number:迭代数
  • Load Generator Name:负载发生器名称
  • Random Number:随机数字
  • Table:表格
  • Unique Number:唯一编号
  • User Defined Function:自定义功能
  • Vuser ID:Vuser ID
  • XML:XML
操作步骤:
  1. 选择参数化数据,将常量用变量代替;

    • 右键常量,选择Replace with Parameter下的Create New Parameter,创建新的参数化列表;也可以用Parameters List来用之前用过的;
  2. 设置参数列表;在侧边导航栏中的Parameter来打开参数列表进行设置;

  3. 设置参数化的数据和运行方式;

    • Add Column:添加数据列;
    • Add Row:添加数据行;
    • 设置参数选择模式;
      • By number:通过序号选择列;
      • By name:通过名称选择列;
    • 选择文件格式;
    • 选择下一行数据的方式(Select next row);
      • Sequential 顺序选择;
      • Random:随机选择;可能出现重复;
      • Unique:唯一选择;只能选择一个;
    • 数据更新模式(Update value on)
      • Each iteration:每次迭代取新的数据;在每一次执行中,不论出现多少次这个参数,都是同一个参数;
      • Each occurrence:每次取值更新;在每一次执行中,出现多少次这个参数,就会更新多少次,使之为不同的参数;
      • Once:每个用户只取一个值;不论如何都只有一个参数;
    • 模拟运行情况查看(Simulate Parameter);
  4. 设置多次运行脚本;

    • 在侧边导航栏下Runtime Settings中General下的Run Logic *中的Number of iterations设置运行次数;
  5. 打开运行查看参数:

    • 在侧边导航栏下Runtime Settings中General下的Log * 中的Detail Level中的Extended log下的Parameter substitution将其勾选;

脚本运行时设置(Runtime Settings):

General(基本设置):
Run logic(运行流程,即循环):
  • 主要作用用于设计脚本和循环运行次数;
  • init和end脚本文件都只能运行一次;
  • 其他脚本文件,可以设置运行多次(一起运行多次,不能单独设置);一个虚拟用户运行100次;
Pacing(间隔):
  • 特指脚本运行时上一次迭代和后一次迭代之间的时间间隔;
  • 三种方式:
    1. 尽快开始迭代,在上一次结束之后;
    2. 指定迭代之间的延迟:可以是固定的时间(秒),也可以是两个时间间隔的随机值(上一迭代完成后);
    3. 新的迭代在指定的或者随机的时间(秒)之后,直接开始。(不管上一次迭代有没有完成);
Log(日志):
  • 提供给测试人员(运行人员查看脚本的运行过程);
  • Enable logging:启用日志;
  • Log Options:日志内容设置,包括:
    • Always:总是显示日志;
    • 其他:可以设置为当脚本运行错误的时候显示,而不需要总是显示日志;
  • Extended log(扩展日志):增加日志显示的内容,包括:
    • Parameter substitution:显示参数的使用情况;
    • Data returned by server:显示服务器的返回数据;
    • Advanced trace:跟踪,显示请求该网址需要经过的网络节点;
Think time(思考时间):
  • 两次请求之间的时间间隔
  • 有5种方式可以选,第五种用于与其他搭配使用,包括:
    1. 忽略思考时间,脚本回放可以忽略。实际场景中,一般不会忽略;
    2. 按照录制的思考时间进行回放;
    3. 倍数运行思考时间;
    4. 随机取值录制的思考时间的中间比例;
    5. 限制思考时间的最大值(秒),不和忽略思考时间一起使用,超过指定数值的,按照指定数值运行;不超过的按照实际数值运行;
Miscellaneous:
  • 错误处理方式: 一般是检查点错误;

  • 一共有三种方式,可以随意搭配:

    • Continue on error:遇到错误时继续运行,最常使用;

    • Fail open transactions on lr_error_message():执行到事务中调用lr_error_message()函数时将事务的结果置为Failed;

    • Generate snapshot on error:对错误进行快照;

多线程(Mutilthread):
  • 在Miscellaneous选项中;
  • 进程(Process):系统资源(CPU、内存)分配的基础;
  • 线程(thread):系统进行任务调度的一个最小单位;
  • 关系:一个进程可能会包含多个线程。在一个进程中的多个线程,共享进程分配的资源;线程是软件能够支持并发的一个重要运行机制;开发过程中,大多数系统会使用支持多线程的开发语言;
  • Run Vuser as a thread:将虚拟用户作为线程运行;
  • Run Vuser as a process:将虚拟用户作为进程运行;
  • 总结:
    • 以线程的方式运行虚拟用户,消耗的资源数量少;
    • 在计算机的资源量一定的情况下,使用线程的方式,可以模拟出更多的虚拟用户;
    • 使用线程,可以更加真实的模拟出并发操作;
Internet Protocol(网络协议的设置):
Preferences(表现):
  • 设置检查点的开启;
  • enable image and text checks 选择后,可以进行检查点的功能。用于web_reg_find()函数进行检查点功能;

Controller场景设计

Controller基础:

两种场景:
  1. Manual Scenario(手工场景):
    • 手工设置虚拟用户量,加压、减压、持续时间等内容;
    • 手工的场景适用场合比较广泛,灵活,可以设置并发(集合点)以及其他设置。通过测试可以了解系统的多方位的性能指标;
  2. Goal Oriented Scenario(目标导向型场景):
    • 根据设定的目标进行运行;只要设计好目标,其他的用户量、时间、并发等等都不需要单独设置;
    • 目标导向的场景适用场合比较少。不灵活,不能设置并发和其他操作。只能针对特定目标的一种测试;
面向目标的场景设计(Goal Oriented Scenario):
  • Goal Profile Name:可以设计目标的名称(new、edit、del)
  • Goal Type:选择场景目标的类型
    • Virtual Users:虚拟用户量;验证所需支持的用户数
    • Hits per Second:每秒钟点击数;服务请求响应数,验证每秒可处理请求数
    • Transactions per Second:每秒钟事务数;验证系统处理操作能力
    • Transaction Response Time:事务响应时间;验证系统压力下所需要的响应时间
    • Pages per Minute:每分钟页面数;验证系统整理处理能力
  • Run for <HHH:MM:SS> after the target has been:设置运行时间,可以设置为目标达成后运行的时间
  • If target cannot be reached:目标没有达到的选择
    • Stop scenario and save results:停止场景并保存结果
    • Continue scenario without reaching goal:在没有达到目标的情况下继续场景
  • Receive notification:收到通知
  • Do not change recorded think time:不改变记录的思考时间吗
  • Load Behavior:负载行为
    • Automatic:自动达到虚拟用户数目标
    • Reach target number of virtual users after:指定时间后达到虚拟用户数目标
    • 每个指定时间段内达到指定的虚拟用户数目标

(手工)场景设计:

脚本组的设计:
  1. 为场景添加、删除脚本;
  2. 为脚本体检虚拟用户量;
  3. 配置多机联合负载。(控制多台计算机运行脚本并返回测试结果数据)
    • 通过Load Generators程序完成;
    • Load Generators:运行脚本,产生压力数据;
  4. 使用Load Generators实现多机联合负载:
    1. 点击Scenario然后查看Load Generators信息列表
    2. 添加Load Generators
    3. 输入Load Generators机器的信息(name中只输入IP地址即可,选择系统的平台Windows/Liunx)
    4. 测试并连接Load Generators,如果连接成功,则会显示Ready
    5. 将远程Load Generators机器分配给指定的测试脚本
    6. 运行场景,查看结果分析(Controller自动收集远程Load Generators上的数据)
场景运行方式设置:
按照Scenarlo(场景)运行:
  • 无论场景中的脚本数量有多少,所有脚本统一调度和运行;
  • 没有Start Group
  • 根据脚本数量平均分配;
按照Group运行:
  • 场景中的脚本各自设计运行方式;

  • 双击Start Group,打开对应的窗口来单独设置

  • 单个脚本。单独设定开始时间

    • 场景开始运行就运行
    • 在指定的时间后开始运行
    • 在某一个脚本运行结束后开始运行
image-20231208180054168
总结:
  • Group方式运行场景会更加灵活,可以体现出测试脚本的先后顺序,可以更加真实的模拟出软件或者系统承受压力的情况;
脚本运行计划设计:
  1. Start Group:
    • 脚本开始运行的设置;
    • Group模式下才能单独设置,Scenario模式不可以设置;
  2. Initialize:
    • 初始化虚拟用户设置;
    • 专门用来设置初始化虚拟用户的速度的效率;
    • Initialize all vusers simultaneously:同时初始化所有vusers;
    • Initialize 用户 vusers every 时间:每隔一段时间初始化一些虚拟用户;
    • Initialize each vuser just before it runs:在每个虚拟用户运行之前初始化它;
  3. Start Vusers:
    • 启动虚拟用户;
    • 设置启动数量;设置启动频率(一次几个,每次的间隔时间);
  4. Duration:
    • 设置脚本(Group模式)或场景(Scenario模式)的运行时间;
  5. Stop Vusers:
    • 停止虚拟用户;
    • 设置停止数量;设置停止频率(一次几个,每次的间隔时间);
IP欺骗策略:
简介:
  • 为了使同一台主机的虚拟用户,发送请求时,更加真实和有效,服务器端能够体会到真实的用户请求的数据(避免相同IP地址的虚拟用户被屏蔽);
步骤:
  1. 启动IP配置工具(IP Wizard)
    • 不支持DHCP,需要提前配置静态IP地址;
    • 启动工具,创建新的IP设置(Createing new Settings),点 下一步
    • 输入本机的IP地址;
    • 在IP地址列表中,点击 add,添加其他IP地址;
  2. 通过ipconfig命令,查看本机的IP地址数量;(你添加好的IP地址都上去了,说明成功了)
  3. 在Controller中开启IP欺骗策略;
    • 上方导航栏Scenario下的Emable IP Spoofer;
  4. 保证场景中的脚本均以线程方式运行虚拟用户;
  5. 保证场景中的一个设置;一个线程使用一个IP地址在Tools中 先设置 expert mode,后再次点击Options;在General中找到IP地址的设置,将其设置为IP地址对应为线程;
  6. 运行脚本,然后查看虚拟用户运行时使用的IP地址;查看Vuser Log中的IP地址,如果IP欺骗配置成功,每一个虚拟用户的IP地址都会不同;

Controller资源监控

简介:
  • 在Controller的Run界面中,五大区域

  • ① ② ③ ④ ⑤
  • ①区域的作用就是显示场景中每一个脚本组(Group)的虚拟用户的运行状态;
  • ②区域的左右一个是控制场景的运行,另一个作用是显示当前场景运行的状态(Error、Falied、Password等事务的数量);
  • ③区域主要是显示当前可以查看的监控数据;(勾选的是可以查看的,不勾选时不可查看的);
  • ④区域主要展示③区域中可供查看的资源的实时动态变化;
  • ⑤区域主要展示资源图的各种详细资料和内容;
各个区域内的详细状态:
①虚拟用户的运行状态:
Down:虚拟用户离线 Pending:待定的 init:初始化 Ready:准备
Run:运行 Rendez:集合 Passed:通过 Failed:失败
Error:错误 Gradual Exiting:准备退出 Exiting:正在推出的 Stop:结束、停止
②控制和显示当前场景的运行状态:
  1. 控制场景运行:

    Start Scenario:启动场景 Stop停止场景 Reset:重置整个场景
    Vusers:查看当前的虚拟用户状态 Run/Stop Vusers:启动或者停止虚拟用户
  2. 显示当前场景运行的状态:

    Running Vusers:当前运行的虚拟用户量 Elapsed Time:当前脚本运行的时间 Hits/Second:每秒点击数
    Passed Teansactions:通过的事务数 Failed Transactions:失败的事务数 Errors:错误数
    Service Virtualization:服务虚拟化
③可用资源列表:
  1. Runtime Graphs:运行视图;主要表现的是运行过程中,虚拟用户的运行情况;

  2. Transaction Graphs:事务图;表现运行过程中,场景中事务的运行状态;

    • Total Trans/Sec(Passed):每秒钟事务数;
    • Trans Response Time:事务响应时间;
  3. Web Resource Graphs:网页资源图;主要表现web测试中,几个重要的数据图;

    • Hits per Second:每秒钟点击数;每秒钟客户端向服务器端发起的http请求个数;
    • Throughput:吞吐量;服务器接收数据和响应数据的总和;
    • HTTP Responses per Second:每秒钟的HTTP响应;
    • Pages Downloaded per Second:每秒钟下载的页面数;
    • Connections:连接数;
    • Connection per Second:每秒钟连接数;
    • SSL per Second:每秒钟SSL数量;
  4. System Resource Graphs:系统资源图;操作系统的资源消耗图,需要单独设置,并且需要连接服务器;

    • Windows Resources:windows资源;
  5. Network Graphs:主要监控网络的延迟;

  6. Web Server Resource Graphs:web服务器的资源消耗,Apache和IIS;

④分析不同的数据,及其关联效果:
  1. 每秒点击数的图和每秒钟事务数的图走势相同。造成这种现象的原因:用户的完成食物,一定会发送页面请求(模拟的点击操作);
  2. 每秒点击数的图和吞吐量的图 走势基本相同,吞吐量的图数值变化要更加剧烈一些。造成这种现象原因:用户发送请求之后,服务器不但要接收数据,还有响应数据,所以吞吐量的变化趋势要更加剧烈;
  3. Runtime Graphs视图:
    • 运行中(Running)的用户量10个开始,运行时间到大后,开始逐步退出,最终减少为0;
    • 完成的(Finished)的用户量0个开始,运行时间到达后,运行中的用户开始退出,开始逐步增加,最终增加到10;
  4. Trans Response Time视图:
    • 事务响应时间异常数据。Action_Transaction响应时间最大值为1563秒。
    • 造成这种情况的原因:有两个虚拟用户,一直等待退出,但是没有退出,其中一个后来还运行了一下,导致一个响应时间超长;
  5. SSL per Second(会话)视图:、
    • 新会话和再利用的会话之间的关系为,走势相同,但是数量之间有倍数关系。
    • 造成这种现象的原因:一次请求成功后,建立了会话,后面还可以再用;
服务器系统资源监控:
监控前服务器系统的准备(window版):
Controller软件中监控:
  • 勾选监控的服务器系统类型,点击ADD打开弹窗,体检对应的ip地址和查看的服务器监控资源;
image-20231213102540628
  • 在弹出的窗口中,点击Add添加地址的窗口,在Add Machine窗口中Name写入IP地址;
image-20231213103040862
  • 点击Add按钮,输入账号和密码后,添加想要监控的资源;
image-20231213103517569

Analysis:

简介:

  • 主要作用就是针对Controller中的运行结果进行分析;
  • 给出相应的图表和结果报告;

使用Analysis分析运行场景监控出来的数据:

  • 在Controller中点击Results下的ResultsSetting,在出现的窗口设置存放分析数据的位置;
  • 点击Analyze Results来分析查看监控出来的数据或资源,并获得报告;
image-20231213201803139

一、测试结果概要报告:

1.概要内容:

image-20231213202556003

  1. 脚本场景开始运行时间;
  2. 场景运行持续时间;
  3. 场景内容名称;
  4. 运行结果的名称;
2.概要数据:
image-20231213202902450
  1. Maximum Running Vusers:运行的虚拟用户量;
  2. Total Throughput(bytes):总吞吐量(字节);
  3. Average Throughput(B/s):每秒钟吞吐量;
  4. Total Hits:总点击量;
  5. Average Hits per Second:每秒钟点击数;
  6. Passed Transactions Ratio:通过事务比例;
3.事务统计:
image-20231213204027084
  1. init、end这种Loadrunner自带的事务;
  2. 用户自定义的事务;
  3. 脚本文件产生的事务;Loadrunner自定义一个脚本文件,作为一个事务;例:Action_Transaction;
4.HTTP请求的概要统计:
image-20231213204745377
  1. 响应的状态码;
  2. 响应的总次数和平均每秒钟次数;

二、各种数据的统计图表:

1.打开图表:
  • 双击Graphs文件夹下的对应图表的文件,会在右侧显示出来

image-20231213205112960

2.添加图表:
  • 右键Graphs文件夹后点击Add New item下的Add New Graph,打开窗口;
  • 在窗口中选择想要添加的图表;

image-20231213205526523

三、对两次(多次)测试结果的对比和判断:

  • 在file菜单中,选择Cross with Result;
  • 主要作用:用来分析相同场景的,再对服务器做测试的情况下,服务器经过了性能调优后的测试结果分析(回归测试);

image-20231213211901531

posted @   回家太晚太悲催  阅读(79)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示