283017152 发表于 2009-12-29 17:35:50

HTML和URL比较(两种录制方式)
1、脚本录制的基本原则
1)充分考虑脚本的执行效率
性能测试脚本关注的是如何模拟用户的真实行为。因此,用于测试的脚本应该接近用户的真正操作。这就要求录制后的脚本在修改的过程中不要添加过多的内容,尤其是不能降低其效率。例如尽量不要添加循环、检查等操作,除非这些操作是必须的。
2)录制重要的业务
要录制常用的、使用频率较高的业务来进行测试,不要一股脑的什么都录制。
3)选择你所需要的进行录制
在web性能测试中,如果有些操作对于用户所关注的事物没有影响,那么可以不进行录制。例如一些查询事物中,选择查询条件页面的请求过程可以不录制,但对于一些要传递查询参数的过程则必须录制。
4)录制前对参数进行正确的配置
2、HTML和URL based script介绍
1)HTML based script:可以为每个用户请求生成单独的函数;
2)URL based script可以捕获所有作为用户操作的结果发送到服务器的HTTP请求,然后一条条记录下来。它甚至可以捕获非HTML应用程序,比如小程序和非浏览器应用程序。
3)HTML这种录制方式录制出来的脚本直观,易于理解和维护。而URL生成的脚本看起来比较长比较多。

3、选择录制方式的原则
1)基于浏览器的应用程序推荐使用HTM-based Script
2)不是基于浏览器的应用程序推荐使用URL-based Script
3)如果基于浏览器的应用程序中包含了JavcScript并且该脚本向服务器产生了请求,比如DataGrid的分页按钮等,也要使用URL-based方式录制。
4)基于浏览器的应用程序中使用了Https安全协议,使用URL-based方式录制。
5)对于我们初学者来说,如果Html方式录制不成功可以换成URL方式录制。
4、HTML based script设置介绍
1)用来描述用户行为的脚本。直接创建的URL(web_url)、表单提交、(web_submit_form)、链接(web_link)和图像(web_image)等函数
2)仅包含明确的URL脚本。这种脚本中,所有的链接、图像请求和URL操作都被录制为web_url函数,而表单提交则被录制为web_submit_data函数。

[ 本帖最后由 283017152 于 2010-1-5 14:31 编辑 ]

283017152 发表于 2009-12-31 15:06:35

Lr自动关联

关联介绍
1、关联是LR经常会 用到的操作;
2、LR录制的脚本只是忠实记录了所有从客户端发送到服务器端的数据,并在脚本回放的时候按照录制时的顺序将录制下来的数据重新发送出去
3、实际上许多系统都是采用SessionID或SeqID等方法来标识不同的任务和数据包,应用在每次运行时发送的数据并不完全相同。
4、所有,为了让脚本能够支持测试的需求,就必然要用某种机制对脚本能够支持测试的需求,就必然要用某种机制对脚本录制的数据进行处理了。
5、总之,通过关联可以在测试中保持动态值
关联的目的
1、简化或优化代码。例如,如果一次执行一系列的相关查询,代码可能会变得很长。为了减少代码的大小,可以嵌套查询,但这样会失去准确性,而且代码会变得复杂而难以理解。通过关联语句,不需要嵌套就可以链接查询
2、用于动态数据。许多应用程序和网站按当前日期和时间标识会话。如果尝试重播脚本,该操作将会失败,因为当前时间与录制时间不同。通过关联数据可以保存动态数据,并且在整个方案运行过程中使用这些数据。
3、容纳唯一数据记录。某些应用程序(例如数据库)要求使用唯一的值。录制期间唯一的值在脚本执行时将不再唯一。例如,假设录制了打开一个新的银行账号的过程,每个新账户都分配了用户未知的唯一编号。录制期间,吃账号将插入具有唯一关键字约束的表中。如果尝试按所录制的那样运行脚本,该操作将尝试用录制的编号二不是新的唯一编号创建账户。结果将产生错误,因为该账号已经存在。如果在运行脚本时遇到了错误,请在发生错误的位置检查脚本。大多数情况下,通过关联查询功能可以解决该问题,关联查询将一个语句的结果用作另一个语句的输入。
一般的关联步骤
1、从服务器返回的数据中选择需要进行关联的数据;
2、将该数据存入脚本的一个参数中
3、将脚本中需要使用该数据的地方用参数来替换
4、TIP:对于web来说,一般会用一个hidden的field存放

设置示例网站
1、为了让示例网站在每次登录时不同的ID,我们需要设置一下
2、在网站的首页中设置,选中Set LOGIN form’s action tag to an error page(在网站为登录之前选择administrator 进入page,选中第三项)
进行自动关联
1、Tools—Recording Options
2、设置完成后录制登录——退出过程
3、利用LR自带的自动关联进行关联

运行一个脚本,后回放一下,会提示一些错误,往往说关联没有指向性的错误,不会提示你关联,这时候我们使用Vuser——scan script for correlations,两个地方需要关联(动态值,是不一样的),选中最下面窗口中的内容进行关联,返回Script视图,web_reg_save_param即为关联函数,这时候再运行回放一次就会成功,不会有红色提示。注意一点,要想使用关联功能,必须录制后先回放找到错误,然后关联。

常见的需要关联的情景
1、登录操作
2、先查后修改,先查后删除
3、并发控制:防止两个用户同时修改或同时删除一条记录

[ 本帖最后由 283017152 于 2010-1-5 14:32 编辑 ]

283017152 发表于 2009-12-31 15:07:41

九、LR测试脚本的增强功能

1、事务:就是一系列操作的集合;插入事务方便我们今后分析
2、参数化:LR的参数化功能是为了更加真实的模拟实际用户操作而设置的;我们对座位的位置进行参数化:
   打开basic_tutorial-web(http/html)
找到web_submit_data("reservations.pl"——预定的过程
中对"Name=seatPref", "Value=Aisle", ENDITEM,进行参数化

两种参数化方法:
a)选择参数值右键选择select or create parameter,命名,参数类型(其他地方了解学习)及初始值——Properties…。文件路径(默认dat文件。默认在脚本下)——Creat table——edit with notepad…(记事本方式编辑);以数据库方式:Data Wizard(弹出对话框)
b)工具栏中(Open parameter list(Ctrl+L)),“New”一下(test ):与第一种方法是,这儿没有指定初始值,好处可以自己new一个
按照以上方法变为:"Name=seatPref", "Value={seat}", ENDITEM,
然后进行“位置”的参数化,右键“Parameter Properties-”

3、如何验证网页的内容(检查点)
1)运行测试时,经常要验证在返回的页面上是否有特定的内容;
2)我们可以通过文本检查点和图像检查点来完成
3)我们添加一个文本检查点来检查登陆成功后是否有“Welcome”字样
4)需要注意的是,必须要启用文本和图像检查点选项,否则设置的检查点会不起作用。——在run-time setting——Preferences (enable Image and text check打钩)。检查点呢,尽可能的少,不要检查点,尽量不要设置,会影响本身检查的准确性
可以手动写,初学者方法一:Insert—New Step—Web Check(Image Check& Test Check)方法二:services中找到web_reg_find点击OK,输入要search for specific Text (Welcome)以及选中Search in(Body)即可。在Action中多下面代码:
        web_reg_find("Search=Body",
                "Text=Welcome",
                LAST);

4、如何生产调试信息(输出函数)
1)我们经常会需要一些辅助信息来帮助我们进行脚本的调试
   Run Logic 中迭代数设置为2——才能验证参数化输出是否正确;
正常情况下,我们的运行脚本是不会给我们详细信息的,如果我们想查看参数化的值或检查点的值,那我们只需要在Log设置里面动动手脚。首先启用日志,一般情况我们选择Standard log,如果像查看参数就需要选择Extended log (Parameter substitution打钩)ok后编译一下Compile (编译日志为:No errors detected)

2)演示一个输出函数:lr_output_message
最后加入一个输出信息lr_output_message”航班已经预定”,回放中会有这样一句打印信息,这个信息一般用于脚本调试中。
3)其实LR还有许多类似的函数,比如lr_error_message等

[ 本帖最后由 283017152 于 2010-1-5 14:33 编辑 ]

283017152 发表于 2009-12-31 15:08:16

run time setting

1.Run Logic
运行次数的设置
Block的概念:其实他就是一个快,几个Action放在一块执行。比如:Insert Block ——在Block里面再插入Action(插入两次Action)——选择Block——单击Properties——(选择顺序执行还是随机执行、以及迭代次数)
2.pacing
新的迭代紧跟着开始
新的迭代在上一次迭代后多少秒
在every to 这个时段范围内进行随机的执行
3.log
重点关注扩展日志
发生错误时发送日志信息
总是发送日志
按照标准日志
扩展日志(有三个选项):参数化值进行显示;数据的返回值的显示;高级跟踪
4.Think time
1.忽略思考时间对服务器压力会大点
2.但一定要根据项目需求和客户需求走
按照录制
可以指定
随机
限定一下思考时间
5.Additional attributes
可以添加新命名行的参数项,填写一些参数的name和value
6.Miscellaneous
1.建议在负债测试环境中,不要启用”出现错误时继续运行”和“出现错误时生成快照”
2.Vuser支持多线程环境。多线程环境主要优势是每个负债生成器都能运行多个Vuser。至于哦线程安全协议才能按线程运行
Error handing错误的处理机制:错误时继续运行;失败的话,用lr_error_message函数输出;会产生错误图片
Multithreading:进程和线程,一般都是线程,因为一般线程的效率会更高一些。
Automatic Transations:transaction的定义,分别是each action 定义成一个transaction;each step 定义成一个transaction
7.Network
使用“速度模拟”设置,可以选择最好的模拟测试环境所需的带宽
其余的设置相对要少一些
清除缓存,每次运行,清空。

[ 本帖最后由 283017152 于 2010-1-5 14:34 编辑 ]

283017152 发表于 2009-12-31 15:08:43

十一、LR脚本编写实践过程

理论化的:
概述:程序的开发大多不是一蹴而就的,通常要经过代码评审、编码和测试等流程后,才会趋于稳定。而VU脚本本身虽然不算复杂,但VU脚本运行往往涉及多个因素,也会经常出问题。提早发现和解决脚本中的问题,不仅从技术上下功夫,在流程上也要做文章。
最佳流程实践
1、Generate:录制或开发脚本;
2、SUSI(Single User Single lteration,单用户单循环):运行录制生成的脚本,解决可能存在的关联问题。
3、SUMI(single User Multi lterations,单用户多循环):参数化脚本,在Run-time中设置lteration,在此运行,验证参数化的问题
4、MuSI(Multi User single lterations,多用户单循环):Cintroller里多用户运行脚本,验证脚本中可能的多线程同步问题
5、MUMI(Multi Usermulti Multi lteration,多用户多循环):及性能测试开始。
6、其中1-3是在VU中进行的,而4、5是在Controller中运行的
案例编写
使用VU录制机票预订演示网站,完成一个完整的机票预订流程,包括登录、选择预订条件、下订单。要求如下:1、按照最佳实践流程的1-3来完成脚本。2、按照关联实践,查看脚本是否由需要关联的数据;3、能够在Controller中实现5个用户并发,选择不同的条件预订机票,考虑VU参数表应该怎样设计,怎样修改脚本,并通过设置迭代次数来验证参数表机制。
十二、错误处理
脚本的健壮性:一个健壮的脚本应该能够捕获一些错误信息,并对这些信息进行相应的处理,否则一旦发生较大错误只能退出执行了。
VuGen的处理机制:VuGen有自己的处理方法,一般可以分为两种:遇到错误,停止执行,推出执行;另一种是忽略错误,继续执行下去。相关的设置可以在run-time settings里进行
lr_continue_on_error:
1、虽然可以在run-time setting里进行设置,但是不够灵活。我们可以通过这个函数使其变的更加灵活
2、通过lr_continue_on_error函数可以控制Vuser脚本特定段的错误处理。要标记该段,就用lr_continue_on_error(1)和lr_continue_on_error(0)语句将其括起来。
3、使用lr_continue_on_error函数的脚本段将会覆盖“出现错误时仍继续”的run-time Settings运行时设置。
示例代码


[ 本帖最后由 283017152 于 2010-1-5 14:35 编辑 ]

283017152 发表于 2009-12-31 15:09:04

十三、脚本调试

概述:
1、对于解释性语言的调试,如果没有专门的debug工具,操作起来还是很麻烦的,只能通过输出语句进行调试。
2、LR的VuGen提供了breakpoint,但不调试等功能,但debug功能还不是很强大
Animated run与Non-Animated run(动态运行和非动态运行):
1、脚本可以设置成为Animated运行模式和非Animated运行模式。在Animated运行模式下,VU会显亮当前正在执行的脚本语句。用户可以通过VU设置语句执行的延迟时间,以便观察每行代码执行的效果;相比之下,在非Animated运行模式下,VU在执行脚本时不会显亮语句,而一气执行下去。
2、Animated的设置在VU的tools——Options中,选中“General Option“中的”Replay选项卡,在此对话框中设置Animated的Replay时间,生效范围。
3、在“View“中勾选”Animated Run“方式。
调试小技巧:
1、当执行脚本期间在输出窗口中显示错误消息时,我们可以双击该错误信息,Vugen使光标跳到导致问题的测试行;
2、如要得到更详细的出错信息,也可以将光标置于错误代码上按F1键,查看该错误代码的联机帮助
日志设置:
1、对于软件开发人员来讲,日志无疑是跟踪和调试最好的线索。一般在日志中存放的是程序产生的各种信息,包括业务执行、警告和错误,一个优秀的软件应该有一套完备的日志系统,包含日志的内容、格式和级别等内容。
2、VU也提供了一套日志系统,我们可以通过run-time Settings的Log选项来设置日志的级别。

[ 本帖最后由 283017152 于 2010-1-5 14:36 编辑 ]

283017152 发表于 2009-12-31 15:11:42

上面的帖子有点乱:$ ,有空的时候再上来整理一下,放假了,祝各位节日快乐!有一个崭新愉快的2010年

283017152 发表于 2010-1-5 13:50:04

十四、Java虚拟用户
认识java虚拟用户:
1、Java Vuser是自定义的Java虚拟用户脚本,脚本中可以使用标准的java语言。
2、在all protocols—Java Vuser。
3、通常在init中编写初始化代码,在action中编写业务流程,在end中编写释放资源之类的代码
Java虚拟用户的适应范围:
1、一类是不太适合录制的业务功能点的性能测试(比如http文件下载,视频播放)。
2、另一类是基于Java语言开发的应用系统的性能测试(比如核心算法或业务模块);
3、不能录制的测试点常有:含有控件的web应用程序,一些和媒体播放、文件下载等相关的。
脚本开发环境配置:首先安装jdk、然后配置环境变量(未学习,安装后补上07:00)
Java脚本开发基础:

十五、调用dll
简介:在lr的虚拟用户脚本中,可以直接调用vc++开发的动态链接库来扩充虚拟用户脚本功能。
Dll的调用功能:
1、在lr中提供了加载dll的函数:lr_load_dll(char*library_name)。
2、通过在参数中给出的大理女弟子,可以将已经用VC++开发好的dll文件加载到lr的执行空间中。
3、dll加载成功后,可以调用dll中定义的任何函数而无需在脚本中进行申明。
适合的范围:
1、不适合录制其功能点的业务系统(可以考虑使用调用dll)。
2、基于C++语言开发的业务系统
创建和调用dll:1、演示一个两个数相加的功能。2、方法封装到dll中。3、在lr中调用该方法

十六、lr录制sql脚本
协议的选择: MS SQL Server、ODBC(一般选择ODBC)
录制的步骤(省)

283017152 发表于 2010-1-5 13:52:00

十七、创建负载测试场景(LoadRunner Controller)
场景目标:模拟10个旅行代理同时登陆系统、搜索航班、购买机票、查看路线和注销系统的行为;
添加场景:我们使用LR自带的示例场景练习;位置在LR安装目录——tutorial——basic_scirpt;添加完成后查看一下
加压机:加压机顾名思义就是增加压力的机器,可以指定多个加压机来对系统进行加压;我们设置一台加压机就是本机。
设置场景:(Global Schedule)
Run-time Settings的设置
运行时设置可以帮助模拟用户行为;
下面是常用的设置选项介绍
运行逻辑:用户重复一组操作的次数
步:重复操作前等待时间
日志:希望在测试期间收集的信息
思考时间:用户在各步之间停下来思考的时间
速度模拟:使用不同网络链接的用户
浏览器模拟:使用不同浏览器查看系统的性能
内容检查:用于自动检查用户定义的信息。
(启用思考时间自己练习)
初次调试运行之后,建议不要对负债测试使用扩展日志。本次启用的目的只是为了提供Vuser输出日志的信息

监控负载下的系统:
学习一下如何添加Windows视图。

十八、面向目标的场景
目标类型
如果你知道可运行的各种业务流程的Vuser总数,则可以使用虚拟用户目标类型;
如果知道服务器的稳定性,可以使用每秒点击次数。每分钟页面数或每秒事务数的目标类型;
如果知道所需完成事务的响应时间,则可以使用事务响应目标类型。例如,希望客户在5秒内登陆到电子商务站点,请将可接受的最长事务响应时间指定为5秒,并查看实际可以处理的Vuser数。

创建面向目标场景
设置目标
定义一个新场景名:hits per secend 3
目标类型:每秒点击次数3
设置的Vuser最小到最大:5——10
目标完成后运行多少时间;

十九、分析场景
示例demo
选择C:\Program Files\Mercury\LoadRunner\tutorial目录下 analysis_session

分别表示
最大的running Vuser 70
总的吞吐量
每秒吞吐量
总的连接数hits
平均每秒连接数
总错误

各个图表的简要说明
另外看看网页细分图(如下)

283017152 发表于 2010-1-5 13:53:53

二十、lr手动关联
自动关联和手工关联的对比:自动关联是我们为关联设置规则,可以是具体的应用程序服务,这里的数据由所创建的规则替代。
手动关联中,我们想要关联的数值被扫描并且编写关联函数完成关联.VuGen内建自动关联引擎(auto-correlation engine),可以自动找出需要关联的值,并可以利用关联函数自动建立关联。
手动关联需要自行查找关联的对象,然后自行插入关联函数。

如何知道哪里需要关联:
首先回放扫描不同的值然后看哪些值需要关联。
其次,我们可以录制2个脚本然后作比较,可以查看不同的文件决定需要关联的数据

Web_reg_save_param
Web_reg_save_param函数可以将动态数据信息保存到一个参数中。
在需要这个动态值的地方写上参数名就ok
这个函数的用法可以参见联机帮助文档

283017152 发表于 2010-1-5 13:55:13

二十一、配置端口映射
哪些协议的脚本需要配置端口映射
在套接字级别进行录制的所有Vuser脚本
Http,Smtp, POP3,IMAP,Oracle NCA和WinSocket

定义端口映射
VuGen使用端口映射设置,通过特定的服务器:端口组合将流量定向到需要的通讯协议
下面介绍各个选项:网络级服务器地址映射,指定每个协议的映射;选项:启动通讯协议和SSL级别的自动检测
(tools——Recording Options——Port Mapping)
如果未指定全部的端口和服务器名,Vuser在将数据分配给服务器时将使用以下优先顺序:

自动检测原理
1、默认情况下没有定义任何映射,并且Vuser采用自动检查,Vuser的自动检测功能可以分析发送费服务器的数据。VuGenr检查数据查找签名。签名是数据内容中的一种模式,用于标识协议。为了检测签名,进组合返回第一个接受缓冲区之前的所有发送缓冲区,所有在接受缓冲区返回之前发送的发送缓冲区都被视为单次数据转换。在某些协议中,VuGen通过一次转换就可以确定类型(如:HTTP)。在其他网络协议则需要数次转换才能确定类型。出于此目的,VuGen为每个服务器-端口组合创建了一个临时缓冲区。如果VuGen无法通过读取第一个转换缓冲区来确定协议类型,将把数据存储在临时缓冲区中。然后,它将继续读取传入的缓冲区,直到检测到特定协议的签名。
2、默认情况下,VuGen允许进行4次转换,并使用一个大小为2048字节的临时缓冲区检测协议签名。如果VuGen在到达最大转换次数或到达最大缓冲大小后仍未确定类型,将把数据分配给WinSock协议。如果你未指示VuGen录制WinSock协议(在多协议选择中),VuGen将丢弃数据。
3、可以更改希望VuGen为检测到协议类型而读取的最大缓冲区数量,还可以指定临时缓冲区的大小。如果第一个发送缓冲区中的数据量大于临时缓冲区的大小,VuGen将无法自动检测协议类型。在这种情况下,应该增加临时缓冲区的大小。

高级选项设置
允许自动检测(SSL tools——Recording Options——Port Mapping——Option
允许自动检测基于套接字通信的类型
日志级别

特殊情况举例
在大多数情况下,VuGen的录制都能识别这些协议的签名,然后,VuGen可以根据协议规范自动处理他们。但有些情况无法识别:1、协议签名与某一个协议几乎相同,使得处理结果出现误差;2、协议没有唯一的签名;3、协议使用SSl加密,因此无法在WinSock级别进行识别

283017152 发表于 2010-1-5 13:55:33

二十二、性能分析基础知识
判定测试结果的有效性
1、在整个测试场景的执行过程中,测试环境是否正常
2、测试场景的设置是否正确、合理
3、测试结果是否直接暴露出系统的一些问题
4、确定测试结果有效之后,就要对测试数据进行深入的分析。

分析原则
由外到内,表到里,层层深入
分析要点提示
对于一个应用系统,性能开始出现下降的最直接表象就是系统的响应;时间变长,于是响应时间成为分析性能的起点;任何复杂的系统都可以分为网络和服务器两个部分;性能分析不是一蹴而就的,需要贯穿于性能测试过程的始末。
Analysis主要提供的6大类分析图
1、虚拟用户图:虚拟用户图分为运行状态的虚拟用户图、虚拟用户概要图和集合点图
2、Errors图:主要有错误统计、每秒错误数量两类。借助Errors图可以发现服务器什么时间发生错误以及错误的统计信息,可以分析服务器的处理能力
3、事务图:Aanlysis和事务相关的分析图表有事务总数表、事务平均响应时间图、每秒通过事务数图、事务性能摘要图、事务响应时间与负载分析图、事务响应时间(百分比)图、事务响应时间分布图等;
4、Web资源图:主要有Web服务器的吞吐量、点击率图、返回的HTTP状态代码图、每秒HTTP响应数图,每秒重试次数图、重试概述图、服务器连接概要图、服务器每秒建立的连接数量图等。借助它能深入分析服务器的性能;
5、网页细分图:在Controller中启动网页细分功能后,才可以在Analysis中查看网页细分图。网页细分图主要有页面分解总图、页面组建细分图、页面组建细分图(谁时间变化)、页面下载时间细分图、页面下载时间图(随时间变化)、第一次缓冲时间细分图、第一次缓冲时间细分图(随时间变化)、已下载组建大小图。借助网页细分图可以分析页面元素是否影响事务响应时间;
6、系统资源图:要想获得系统资源图,必须预先指定相关的计数器。
通用性能测试分析流程
1、从分析Summary的事务执行情况入手;
2、查看负载发生器和服务器的系统资源情况
3、查看虚拟用户与事务的详细执行情况
4、查看错误发生情况
5、查看Wbe资源与细分网页

fengyupeng1984 发表于 2010-1-7 08:41:54

学习了,正研究LoadRunner菜鸟

学习了,正研究LoadRunner菜鸟

283017152 发表于 2010-1-7 10:20:46

我也正在学习过程中,相互交流学习,我看了这视频至少能少走很多弯路

thjk2009testing 发表于 2010-1-18 11:06:41

我是特意来顶的。谢谢楼主,辛苦了。

holfy 发表于 2010-1-18 13:15:10

谢谢分享,学习了

283017152 发表于 2010-1-19 13:16:24

第一阶段学习,告一段落

yuziyouyou 发表于 2010-1-19 22:56:08

顶。。。。。。

luoluolan 发表于 2010-1-21 11:02:44

讲解记录的很详细:loveliness: 很有用的分享 谢谢

peag 发表于 2010-1-21 12:29:34

回复 6# 的帖子

9.00跟9.5的安装跟破解都是一样的~
页: 1 [2] 3
查看完整版本: 菜鸟LoadRunner 9.0(已更新为9.5^_^)学习实录(实时更新)