loadrunner入门篇 - Controller控制器

Controller组件是LR的控制中心,主要包括场景设计和场景执行两部分。在VuGen中编辑完脚本并将脚本加载到Controller组件中,即开始对脚本运行时的场景进行设计,当场景设计完成后,即可执行该场景。

场景类型介绍

Controller控制器提供了手动设计和面向目标两种测试场景。一般情况下使用手动测试场景设计方法,因为能够更灵活地按照需求来设计场景模型,使场景能更好地接近用户的真实使用。面向目标场景则是测试性能是否能达到预期的目标,在能力规划和能力验证的测试过程中经常使用到。

启动方式有两种:第一种是在开始菜单中启用;第二种是在VuGen发生器的Tools菜单中启动,如图1所示。

                               

图1

1、手动测试场景

启动Controller控制器后,会弹出‘新建场景’对话框,如图2所示。

图2

这里选中的是手动测试场景,该场景包含两种模式:用户组模式与百分比模式,不同之处在于计算虚拟用户的方式不同。

手动用户组模式如图3所示。

图3(手动用户组模式)

百分比模式如图4所示。(scenario->convert senario to the percentage mode,即可切换到百分比模式)

图4(手动百分比模式)

2、面向目标测试场景

首先定义要达到的目标,接着LR会自动基于该目标创建场景,在场景运行过程中,LR会不断地将结果与目标相比较,以决定下一步如何执行。

该场景提供了Virtual Users、Hit per Secnod、Transactions per Second、Transaction Response Time和Pages per Minute一种目标。

如图5所示是面向目标测试场景界面。

图5

场景设计

这里主要介绍Schedule、View Script和Generator参数的设置。而两种场景模式的区别主要体现在Schedule参数的设置上,另外两个参数的设置都是一致的。

1、手动场景Schedule配置

主要是用来设置用户的行为方式,这里包括按场景计划和按用户组计划(切换为用户组模式才会有group选项)两种(如图6所示)。

图6(scenario schedule配置界面)

1)场景名称(schedule name)

2)按场景计划(schedule by scenario)

initialize :设置脚本运行前如何初始化每个虚拟用户。包含3种方式:

   a.同时初始化所有虚拟用户;b.每隔一段时间初始化一定数量的虚拟用户;c.在脚本运行之前初始化所有虚拟用户。(通常情况下选择方式三)。

start vusers :设置虚拟用户加载的过程(是指总的虚拟用户数)。包含2种加载方式:

    a.同时加载所有的虚拟用户;b.每隔一定的时间加载一定数目的虚拟用户。(在实际测试过程中不会选择方式一进行加载虚拟用户)

duration :设置场景执行的时间,包含2种方式:

    a.一直运行,直到所有的虚拟用户运行完成后,结束整个场景的运行;b.设置场景持续运行时间,一般情况下在进行压力测试时,只需测试15~30min即可,但如果需要测试系统的可靠性和稳定性时,则需要持续运行24h或3*24h。

stop vusers :设置场景执行完成后虚拟用户如何释放的策略。(只有duration设置为按指定时间运行时才需要设置该项)

    a.当场景运行结束后,同时释放所有的虚拟用户;b.每隔一段时间就停止一定量的虚拟用户。(一般情况下,虚拟用户如何添加就如何停止)

3)按用户组计划(schedule by group)

比按场景计划多出了start
gruop选项,在该场景中,是以组为单位进行计划的,每个组都要设置自己的start vusers、duration和stop
vusers。比较灵活,能够创建实际应用中脚本与脚本之间的约束关系。如一组用户执行后产生的数据记录为另一组用户的输入,这种情况就需要使用该方式来配置场景。使用该场景时,LR默认将每个脚本定义为一个组。

这里只对start group选项卡进行分析,包含3种方式:

    a.场景执行时立即开始运行该脚本;b.场景执行一段时间后才开始运行该脚本;c.在某个特定的用户组运行结束后才开始运行该脚本,即就是在某个脚本运行结束后才开始运行。

一般情况下使用场景组方式来运行场景时,会选中每个脚本分别进行设置。如果同时设置则与普通的场景设置没有什么区别。

4)场景开始时间(scenario start time)

如图7所示,有3种方式(针对run页面的start scenario):

    a.场景立即开始,没有延误时间;b.推迟指定的时间后才开始运行;在指定的时间开始运行,如晚上8点运行。

图7

5)百分比模式

是先设定好虚拟用户总数,然后按百分比的形式对所有的虚拟用户进行分配。该场景适合综合业务模型明确的性能测试。(比如银行的查存取业务)

2、面向目标场景Schedule配置

在面向目标场景中,首先定义测试需要达到的目标,然后LR会自动根据这一目标创建场景。

在场景设置界面,单击edit scenario goal,进入编辑该目标场景对话框,如图8所示,以hit per second目标类型为例,讲述其各项设置。

图8

1)scenario settings选项卡

  run time:表示当执行达到目标后,该场景还会持续运行一段时间(设置的时间值)才结束运行。

if target cannot be reached:表示如果目标无法达到,controller将如何处理场景。有2种选择:a.停止运行场景并保存结果;b.继续运行场景直到达到目标。

2)load behavior选项卡

设置加载行为,有3种方式:a.让controller自动加载用户;b.设定一个时间,在该时间后达到目标;c.每隔一段时间增加一定的目标量。

3)目标类型

a.virtual users

主要是用来测试服务器对并发用户的处理能力,假如将虚拟用户设置为100个,那么LR会逐渐递增虚拟用户,直到加载到100个为止,如不能达到,将采取if target cannot be reached中设置的策略来继续运行当前的场景。(如图9所示)

图9

b.hits per second

设置的目标是点击数/秒,如图10所示,同时要设置最大和最小虚拟用户数。因为点击率的值大小与虚拟用户数成正比,假设测试出来的点击率的值达不到目标值,那么就必须增加虚拟用户数,否则点击率的值就不可能增加,所以在设置点击率的值为目标时,就必须限定虚拟用户数的范围,也即最大和最小虚拟用户数的值。

运行原理:当场景执行时,controller会先用最小虚拟用户数去执行,结束后判断点击率的值是否达到目标值,如果达到了则停止当前运行的场景;否则继续增加虚拟用户,再判断结果是否达到预期目标值。一直重复,直到达到目标
。如果使用最大虚拟用户数还是无法达到目标值时,那么场景将会停止运行,并保存相应的结果。

图10

c.transaction per second

设置的目标为每秒处理的事务数,如图11所示,注意在脚本中一定要定义事务,否则事务名称栏为空白。

图11

如果从业务的角度看,每秒钟处理的事务数即为系统每秒钟处理的业务笔数,所以该项指标更多的是用于衡量系统每秒钟处理的业务数。同样的也要设置最大和最小虚拟用户数,因为要改变每秒钟处理的事务数就必须通过虚拟用户数来改变,但要注意的是,当虚拟用户数成倍增长时,处理的事务数并不会成倍增长,因为随着虚拟用户数增多,事务的平均响应时间也增加了,这样在相同的时间内,每个虚拟用户处理的事务数就相当少了,所以处理的事务数不可能成倍增长。

运行原理:跟hits per second的原理相同

d.transaction response time

设置的目标为多用户并发时事务的响应时间,如图12所示

图12

运行原理:跟hits per second的原理相同,假设当前虚拟用户数为10个,那么说明系统最多只能处理10个用户同时请求。如果使用最大的虚拟用户数还是无法达到目标值时,那么场景将会停止运行,并保存相应的结果,同时也说明系统可以支持更多的虚拟用户同时运行。

e.pages per minute

设置的目标为每分钟处理的页面数,如图13所示。

图13

每秒钟处理的页面数与每秒钟处理的事务数,其本质是一样的,因为一个事务可能由多个页面组成,当一个事务只由一个页面组成时,那么每秒种处理的页面数一每秒钟处理的事务数完全一致。

在以下情况下,hits per second、transactions per second、pages per minute类型的场景结果中会被置为failed状态:

  
a.控制器使用指定的最大用户数,并且执行两次都没有达到目标;b.负载机不够;c.所有的用户都运行失败;d.控制器增加了几批虚拟用户后,hits
per second、transactions per second、pages per minute的值没有增加。

3、配置View Script

在场景设计界面,脚本加载后,如需对加载的脚本进行修改,可以选中需要配置的脚本并单击右键,选择View Script对脚本进行修改。

要注意修改后,一定要重新加载该脚本才能确保场景执行中的脚本是修改后的脚本

4、配置Load Generator

Load Generator 又称负载发生器,当控制器发出执行命令时,Load Generator 负责和其他的负载机建立起联系并强制负载机执行。一个controller可以通过Load Generator 来控制多台负载机。如图14所示

图14

可以add负载机,完成后connect,测试负载机与控制机连接的情况,如果status为ready,表示连接成功;如果为failed,表示连接失败,这时就要检查网络是否存在问题。

在使用负载机模拟多用户测试系统时,需要注意以下几个问题:

1)计算需要负载机的台数。

在使用负载机时首先需要解决的第一个问题是测试时需要多少台负载机才能满足测试的需要(如测试时需要测试500个虚拟用户),在确定该问题之前需要先确定每个用户需要消耗的系统资源,当把每个虚拟用户按进行的方式来运行时,那么当场景运行时,每添加一个虚拟用户都会增加一个进程,而每个进程都是需要消耗内存和CPU资源的。通常情况下每个虚拟用户消耗多少资源受操作系统、录制时选择的协议及LR的版本3个方面的影响,可百度下官方公布的虚拟用户消耗内存资源参考值。

比如每个虚拟用户消耗的内存资源大概为6800KB左右,如果以500个虚拟用户为例大概需要消耗3320MB(6800KB*500/1024=3320MB)的内存,如果每台测试机的内存为1GB(3320MB/1024=3.2421875),那么至少需要4台这样的测试机。

2)控制器如何控制负载机运行。

控制器通过代理程序去控制负载机运行(代理程序的名称为loadrunner
agent process),所以首先需要在控制器和客户端启动代理程序(开始菜单->HP
LR->Tools->loadrunner agent runtimes..)。

启动后弹出loadrunner agent设置对话框,如图15所示

图15

a.允许所有的虚拟用户不用登录即可运行,但需要设置登录主机的名称、用户名和密码。

b.手动登录服务器。一般使用手动去登录即可。

启动代理程序后(注意控制器和负载机都需要启动代理程序),当场景在初始化时,控制器会向负载机发送一个二进制文件,该二进制文件中就包括所有待运行的脚本信息,当初始化后,负载机就会产生虚拟用户来模拟测试。

场景执行

1、场景控制

在Run选项卡中,主要包括场景运行控制信息和数据图两部分,如图16所示。(注:截图是手工测试场景模式,如果是目标测试场景模式的话,down是为空的,是根据设置的目标来加载的)

图16(run选项卡界面图)

关于scenario groups讲解:左边显示每个用户组的运行状态,右边为场景的控制操作。

start scenario:开始场景,此时controller开始初始化虚拟用户,并将这些虚拟用户服务分配到负载发生器,开始运行脚本。

stop:停止场景,对于如何控制场景停止运行有3种方式(tools->options),如图17所示:

a.等当前迭代运行结束后,再停止运行场景;b.等当前的action结束后,再停止运行场景;c.不等待,立即停止运行场景

图17(场景停止设置方式)

reset:将方案中所有的vuser组重置为方案运行前的‘关闭(Down)’状态,准备下一次场景的执行。

vusers:虚拟用户组,如图18所示,可以看到每个vuser的详细状态(ID、运行状态、脚本、负载发生器和所用时间),在这里可以选择单个vusers进行操作(那些右键的其他操作可以自己去点一下)

图18

run/stop vusers:(目标测试场景的该按钮是置灰的)设置继续执行还是停止某个用户组,如图19所示,在运行期间可以在这里手动控制新添加的vuser(注意:该对话框因运行场景的模式不同而有所不同)

图19(手动模式run/stop vusers设置)

图20,是在百分比模式下运行场景,能够根据定义的百分比,分配新的vusers数,以及运行这些添加 的vuser的负载发生器。

图20(百分比模式run/stop vusers设置)

2、场景执行期间查看场景

1、vuser运行状态。

2、事务详细信息

如图21所示,及各参数项的含义

        

图21

如图22所示,可以看到事务的详细信息。TPS:每秒的事务数;Passed/Failed/Stopped:表示运行已通过/已失败/已停止的事务数。

图22(事务详细信息)

3、查看‘输出’窗口

view->show output,可调出输出窗口,如图23所示,vuser和负载发生器会向controller发送错误、通知、警告、调试和批处理消息,这些信息可以在输出窗口中查看到。(重置时消息仍会保留)

图23

details可查看详细消息文本,如果需要查看更加详细的信息,可以单击相应列的蓝色链接,如图24所示。

图24

分析输出信息时,需要确定以下几个方面的问题:

1)出错是由于性能测试引起的还是由于脚本编写的错误引起;

2)找到出错的日志信息。

要找到出错的具体日志信息,必须通过输出的信息找到这几方面的信息,错误信息是来自哪台负载机,错误信息是来自哪个虚拟用户。确定这两方面的信息后就可以找到场景运行时的日志信息了,否则在运行大量虚拟用户时,如果一个一个地查看每个虚拟用户的日志信息,则效率很低。

备注:文字讲解来自《深入性能测试--LoadRunner性能测试、流程、监控、调优全程实战剖析》(黄文高、何月顺编著)一书,我是新手,参照此教程做了下实践,顺便将学到的东西写下来。

原文:https://www.cnblogs.com/Chilam007/p/6445152.html

原文地址:https://www.cnblogs.com/peachh/p/11655623.html

时间: 2024-10-07 13:54:41

loadrunner入门篇 - Controller控制器的相关文章

loadrunner入门篇-Analysis 分析器

analysis简介 分析器就是对测试结果数据进行分析的组件,它是LR三大组件之一,保存着大量用来分析性能测试结果的数据图,但并不一定要对每个视图进行分析,可以根据实际情况选择相关的数据视图进行分析,分析结果可以生成一些不同格式的测试报告. 一.设置选项 analysis中的数据是怎么得到的呢?其实在场景运行的时候,默认情况下,所有的vuser信息都保存在该vusr的负载机上.只有当场景运行结束后,这些数据才会自动进行整理或合并,这时负载机上所有vuser的信息和数据都将被传输到结果目录中.默认

loadrunner入门篇-Vuser发生器

Vuser 发生器(Visual User Generator,VuGen),主要通过捕获客户端向服务器发送的HTTP请求,将这些请求录制成脚本,在回放时将捕获的HTTP请求再次发送,以达到模拟客户行为的目的. 下面具体介绍一下如何使用,篇幅比较长,请耐心看下去: 脚本录制 这里以HP自带的在线订票网站进行录制,依次打开:开始|所有程序|HP Loadrunner|Samples|web|HP Tours Web Application(注:打开网站前,要先启动同目录下的Web Server 服

Struts学习傻瓜式入门篇

或许有人觉得struts不容易学,似乎里面的一些概念让未接触过的人迷惑,MVC1.MVC2.模式……我写这篇文章是想让从来没有接触过struts的人,能有个简单的入门指引,当然,系统地学习struts是必要的,里面有很多让人心醉的东东,那是后话了. 该案例包括首页,用户登陆.网站向导页面.就这么简单,没有深奥的struts概念,主要靠动手,然后用心体会. WEB Server用tomcat4.到http://jakarta.apache.org下载struts1.1,把zip文 件释放到c:\s

.NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了

作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/9985451.html 本来这篇只是想简单介绍下ASP.NET Core MVC项目的(毕竟要照顾到很多新手朋友),但是转念一想不如来点猛的(考虑到急性子的朋友),让你通过本文的学习就能快速的入门ASP.NET Core.既然是快速入门所以过多过深的内容我这里就一笔带过了!然后在后面的一些列文章中再慢慢的对其中的概念进行阐述. 本文已收录至.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规

JMeter性能测试入门篇,超详细

原文转自:https://blog.csdn.net/lovesoo/article/details/78579547 1. Jmeter简介 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件.相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一. 本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整性能测试脚本.最终执行性能测试并分析性能测试结果. 运行环境为Windo

JMeter性能测试,完整入门篇

https://blog.csdn.net/lovesoo/article/details/78579547 1. Jmeter简介Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件.相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一. 本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整性能测试脚本.最终执行性能测试并分析性能测试结果. 运行环境为Windows 10系

Android开发之BUG专讲:入门篇(一)

前言: 本文作者:周才智 转载须注明作者与出处.违者必究. 原文地址:http://segmentfault.com/a/1190000004380690 话说诸葛亮是一个优秀的程序员,每个锦囊都是应对不同的case而编写的.可是优秀的程序员也敌只是更优秀的bug.六出祈山,七进中原,鞠躬尽瘁,死而后已的诸葛亮仅仅由于有一个错误的case-马谡,整个结构就被break了. BUG真的是一个非常讨人厌烦的东西,它总是在你以为自己已经战胜它的时候跳出来嘲笑你. 怎样才干拿下这些烦人的BUG呢?我想要

Spring Boot干货系列:(一)优雅的入门篇

Spring Boot干货系列:(一)优雅的入门篇http://www.cnblogs.com/zheting/p/6707032.html  全篇参考:http://www.cnblogs.com/zheting/category/966890.html 前言 Spring一直是很火的一个开源框架,在过去的一段时间里,Spring Boot在社区中热度一直很高,所以决定花时间来了解和学习,为自己做技术储备.   正文 首先声明,Spring Boot不是一门新技术,所以不用紧张.从本质上来说,

【入门篇】ANDROID开发之BUG专讲

话说诸葛亮是一个优秀的程序员,每个锦囊都是应对不同的case而编写的.可是优秀的程序员也敌只是更优秀的bug.六出祈山.七进中原,鞠躬尽瘁,死而后已的诸葛亮仅仅由于有一个错误的case-马谡,整个结构就被break了! BUG真的是一个非常讨人厌烦的东西.它总是在你以为自己已经战胜它的时候跳出来嘲笑你.怎样才干拿下这些烦人的BUG呢?我想要从DEBUG開始. 这里给刚刚接触编程的新手们介绍一下Debug的方法.学会了这些方法后重复练习.当你积累了上万的有效代码量以后自然会发现你的水平将大大精进.