脚本运行时设置和场景运行时设置的区别?
脚本运行时设置和场景运行时设置的内容基本一样,但场景运行时设置的优先级要高于脚本运行时设置。比如,脚本运行时设置的迭代次数为3次,而场景运行时设置为6次,则迭代次数为6次。
我们需要重点监控哪几个图?
我们重点监控的图就是我们要监控的性能指标,一般包括Running Vusers、点击率、吞吐量、HTTP每秒响应连接数、每秒连接数、增加响应时间、每秒成功事务数和系统资源(Linux、Unix、Windows)等。
在分析结果时怎么进行结果图的叠加?
在分析结果报告中,打开一个图标,然后在图标上右键选择Merge Graphs或Ctrl+M,在弹出的对话框中选择要叠加的结果图。例如:打开吞吐量的结果图,想要与点击率的图进行叠加,就在吞吐量图上右键选择Merge Graphs,在弹出的对话框的Select graph to merge with中选择点击率。如图:
怎么分析结果的时间,服务器还是网络资源耗时多?
首先需要开启Diagnostics选项,操作如下:controlleràdiagnosticsàconfiguration,将红线部分设成开启状态。如图:
然后,
方法一:打开结果报告,在左侧Session Explorer视图下选择“平均事务响应时间”,然后在右边的结果图上选中要查看的事务曲线,例如:事务为“login”,然后右键选择Web Page Diagnostics for “login”,然后选择右侧视图中部的Time to First Buffer(Over Time)单选钮,即可查看服务器和网络时间。从下图中看出,服务器耗时时间较长:
方法二:在左侧树形图中右键,如图操作打开Web Pages Diagnostics。
结果图与方法一一样。
怎么生成报告,或者保存为网页报告形式?
在菜单栏选择ReportsàHTML Reports,之后输入报告名保存到一个目录位置即可。
场景执行过程中怎么看需要关心的数据,都有哪些数据?
点击graph视图中蓝色性能指标,查看相应数据。注:黑色的数据为空。
通常关注指标有:并发数、TPS(成功、失败、总共)、ART(平均响应时间)、吞吐量等。
场景设计中的负载加载方式有哪些,怎么做?
打开controller,在design视图下的scenario schedule区域将schedule by设置成scenario,双击global schedule中的start vusers,弹出对话框,如图:
Load all Vusers simultaneously表示同时加载所有用户。设置好后如图右部分,在场景开始即加载全部虚拟用户。
图中选择的是每隔15秒加载2个用户,用户数呈阶梯行上升,直到达到虚拟用户的最大数。
下面详细介绍Scenario和Group。
Scenario
Scenario用来设置虚拟用户的加载、运行和退出策略。
Initialize:设置虚拟用户初始化策略。
- 所有虚拟用户同时初始化。
- 每多长时间初始化多少个虚拟用户。图中灰色字体为每15秒初始化1个虚拟用户。
- 仅在每个虚拟用户运行前初始化。
Start Vusers:设置虚拟用户总数和开始运行策略。
- 开始运行虚拟用户的总数。
- 开始运行策略:
- 同时。
- 每隔多长时间开始多少个虚拟用户。图中为每15秒开始2个虚拟用户。
Duration:设置虚拟用户运行时间策略。
- 运行直到完成。时间依迭代次数而定。
- 运行多长时间。图中为0天5分钟。忽略迭代次数。
Stop Vusers:设置停止虚拟用户策略。(若上一项选择了Run until completion则无此项)
- 同时。
- 每多长时间停止多少个虚拟用户。图中为每30秒停止5个虚拟用户。
Group
Group用来设置脚本运行的先后顺序、运行时间和退出策略。
Start Group:设置组开始策略。
- 场景开始后立即开始。
- 场景开始后多长时间开始。
- 当哪个组结束后开始。例如,登录组在注册组之后。
Initialize、Start Vusers、Duration、Stop Vusers设置同Scenario。
协议的选取方法?
B/S 结构,选择WEB(Http/Html)协议。
C/S系统要根据所用到的后台数据库来选择不同的协议:
1.后台数据库是sybase,则采用sybaseCTlib协议。
2.后台数据库是sql server,则使用MS sql server协议。
3.后台数据库是oracle 数据库,就使用oracle 2-tier协议。
4.使用ODBC数据库的可用ODBC协议。
5.没有数据库的c/s(ftp,smtp)系统,可以选择windows Sockets协议。
6.其他的ERP,EJB(需要ejbdetector.jar),选择相应的协议即可。
多协议:LR是支持在一个脚本里面使用多协议的,不过这个多协议是有一定的限制的,像HTTPS,一般来讲一定要选择多协议,但在选择具体协议的时候一定只选Web协议,这时候才能作那个端口映射。
脚本的参数化怎么做?
选中要进行参数化的数据,右键选择replace with a parameter,输入参数名,选择参数类型,点击OK即可。
若要参数化的数据类型及名称已存在则可以在选中后右键using existing parameter。
参数化的几种类型是什么,怎么用?
- Data/Time:用当前的日期/时间替换参数。
各字母含义:
- c:用数字表示完整的日期和时间
- #c:完整的日期(以字符串表示)和时间
- H:小时(24小时制)
- I:小时(12小时制)
- M:分钟 S:秒 p:AM或PM
- d:日子 m:数字形式的月份(01-12)
- b:字符串形式的月份,短格式(eg:Dec)
- B:字符串形式的月份,长格式(eg:December)
- y:短格式年份(eg:03)
- Y:长格式年份(eg:2003)
- File:需要在属性设置中编辑文件,添加内容,也可以从数据库中取数据。
- Group Name:用Vuser组的名称替换参数。创建方案是,要指定Vuser组的名称,否则运行VuGen的脚本时,组名始终为“无”。
- Iteration Number:在实际运行中,LoadRunner使用该测试脚本当前循环的次数来代替。
- Random Number:随机数,在属性设置中可以设置产生随机数的范围。如,查询抽样数据。
- Unique Number:唯一编号,在属性设置中可以设置第一个数以及递增的大小。
- Vuser Id:设置比较简单,在实际运行中,LoadRunner使用该虚拟用户的id来代替。该id是由controller控制的。
如何理解线程和进程的含义、区别和优缺点?
进程
进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程 序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O 设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配 CPU 以及 其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。
线程
在 Mac、Windows NT 等采用微内核结构的操作系统中,进程的功能发生了变化:它只是资源分配的单位,而不再是调度运行的单位。在微内核系统中,真正调度运行的基本单位是线程。因此,实现并发功能的单位是线程。
线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解 为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。 例如,假设用户启动了一个窗口中的数据库应用程序,操作系统就将对数据库的调用表示为一个进程。假设用户要从数据库中产生一份工资单报表,并传到一个文件中,这是一个子任务;在产生工资单报表的过程中,用户又可以输人数据库查询请求,这又是一个子任务。这样,操作系统则把每一个请求――工资单报表和新输人的数据查询表示为数据库进程中的独立 的线程。
区别
(1)地址空间:进程内的一个执行单元;进程至少有一个线程;线程共享进程的地址空间;而进程有自己独立的地址空间。
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源。
(3)线程是处理器调度的基本单位,但进程不是。
(4)二者均可并发执行。
优缺点
如果选择按照进程方式运行,每个用户都将启动一个mmdrv进程,多个mmdrv进程会占用大量内存及其他系统资源,这就限制了可以在任一负载生成器上运行的并发用户数的数量,因为负载机的资源(内存及其他系统资源)是有限的。
如果选择按照线程方式运行,在默认情况下,controller为每50个用户仅启动一个mmdrv进程,而每个用户都按线程方式来运行,这些线程用户将共享父进程的内存段,这就节省了大量内存空间,从而可以在一个负载生成器上运行更多的用户。(如果选择线程方式来运行用户,每个进程中会多出几个线程,例如是53个,多出来的进程可能是用于维护进程之间的运行的)。
选择线程方式虽然可以减少启动的mmdrv进程数,减少了内存的占用,但是也容易出现一个问题,例如,同一个测试场景,用线程并发就会出现超时失败或报错,而用进程并发就没错。为什么呢?因为线程的资源是从进程资源中分配出来的,因此同一个进程中的多个线程会有共享的内存空间,假设a线程要用资源就必须等待b线程释放,而b线程也在等待其他资源释放才能继续,这样就会出现这个问题。
mmdrv进程数与其影响因素
与在controller 的运行时设置中选择的是进程方式或线程方式来运行虚拟用户有关。
进程方式:无论是单行或多行脚本,需要启动的进程数就是并发用户数。
线程方式:假设是单行脚本,每50个用户才启动一个进程;多行脚本,有几行(每行<50人)就启动几个进程,而不是每个用户启动一个进程。
如果选择了线程方式,需启动的进程数,进一步还与脚本是单行还是多行有关。
单行脚本,多用户,假设少于50,只需启动一个进程,100个用户,只需启动2个进程,依此类推。
多行脚本,即使每行一个用户,也需要启动一个进程,多一行就需要多启动一个进程;不是每个用户启动一个进程,有几行(每行<50人)就需要启动几个进程。
在启动了IP欺骗功能后,所需启动的进程数,还与选择的是按进程还是按线程来分配IP地址有关。
按进程分IP:每个ip(负载生成器)就需要多启动一个进程。
按线程分IP:每个ip(负载生成器)不需要多启动一个进程。