




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、脚本的录制方面1.LR中脚本浏览可以使用两种模式:Tree图形化模式 和 Script脚本模式2.LR中还提供了Tasks的标签,这里提供了VUG建议的脚本录制开发过程,通过一个任务流的方式知道你。3.录制选项,对于web使用的录制方式,HTML提供了两个大类的录制方式:HTML-BASED SCRIPT 和 URL-BASED SCRIPT。第一种:Html-based script 这种方式录制出来的脚本是基于html基础的,其下有两种不同类型的脚本:1. A script describing user actions基于解释用户行为的脚本,录制的脚本中包含web_link模拟用户点击了一个超链接的操作,基本格式是:Web_link(“在测试结果中显示的名称”,”TEXT=需要点击的超链接名”,LAST);,web_submit_form函数,主要是描述用户做了什么操作。(1)思考:若一个页面中有多个同名的链接,怎么办?答:ORDWeb_link(“click link”,”Text=link”,Ord=2,LAST);这个关键字可以帮助你。=2就是点击的第二个。(2)使用html-base Script下的A script describing user actions的好处是脚本简洁,基于用户操作模拟,浅显易懂,且自身包含对象检查过程,无需校验。缺点是基于用户行为的模拟,在参数化和链接多个同名时难以应用。(3)A script containing explicit URLs only 基于url请求的脚本录制类型。Web_ulr()实现地址请求的过程、web_submit_data()第二种:url-based script 这种是基于URL请求的脚本录制方式,会录制所有的http请求。(1)思考:什么时候我们该用html-based script还是选择url-based script呢?答:一般来说如果我们的标准是使用IE访问的B/S架构,我们应该使用html-based下的a script containing explicit urls only这种方式来录制脚本,这种脚本基于url请求完成,不会带有任何前后依赖的内容。而如果我们是一个非IE标准的C/S架构,我们建议使用url-basedscript来录制脚本,这样我们可以确保不会遗漏任何http请求。4.对于录制脚本的时候乱码问题解决方案。答:Recording Optionsadvanced勾选support charset 选择utf-8二、.运行时设置1.lr_output_message(“%s”,”aaa”);/输出显示函数2.注意:Number of Iterations 只为Run上设置迭代次数在run的属性上,提供有Sequential和Random两种运行模式。3.课本P63页BLOCK没有看明白,再看。4.pacing:配置脚本运行中每次interation之间的等待时间此处at和with的区别须注意:With 是指前一次ending interation到下一次starting interation之间的时间At 是指前一次starting interation到下一次starting interation之间的时间,所有at是包含前一次interation执行的时间。5.log:日志选项。日志分两大类:一类是standard标准日志,一类是Extended log有三个参数,具体参照LR扩展日志。,日志的等级越高,则日志的内容越高,但是为定位带来不便。Parameter substitution:选择此选项可以记录指定给脚本的所有参数及其相应的值。Data returned by server:选择此选项可以记录服务器返回的所有数据。Advanced trace:选择此选项可以记录vuser在回话期间发送的所有参数和消息。6.lr_think_time():等待时间(用户思考时间),在vug中默认忽略了该函数。在场景中,该选项默认变为replay think time。三、参数化1.Lr_eval_string(“参数”);/该函数可以从参数中取得对应的值。自己定义一个参数,这个参数是自己使用的,我们用函数lr_save_strng()实现。Eg:lr_save_string(“”,”website”);我们这里就是把一个http:/51的字符串赋值给一个叫做website的参数,如果我们再写Web_url(“51testing”,”URL=websit”,LAST);运行这个脚本,我们会看到调用51testing这个网站。l2.参数化的方法第一种:确认要参数化的内容,选择,右键打开菜单,选择replace with paramter填写参数名称第二种:在parameter list中,点击new3.分清each interation、each occurrence和once的区别(select new row选择sequential的情况)。each interation:顺序取值,当取值超出参数记录条数,回到列表头再次取值 each occurrencelr_eval_string(t);lr_eval_string(t);/第一种顺序取值的话,结果为甲甲而对于第二种结果为甲乙:只要取一次参数的值,那么记录就会发生变化,当取值超出参数记录条数时,回到列表头再次取值。 once:第一次取值后再也不去新的记录4. 分清each interation、each occurrence和once的区别(select new row选择random的情况)。each interation:当设置了run上的interation次数后,每产生一次新的迭代,参数随机取一次值。 each occurrence:每当参数被取值一次,参数的内容随机选择一条。 once:第一次取值后一直沿用这条记录5.abort vuser:当参数取值超出参数列表记录调试时,忽略用户脚本。 Continue in a cyclicmanner:当超出时使用一个循环扫描的方式 Continue with last value:使用参数表中的最后一个值。6.分清each interation、each occurrence和once的区别(select new row选择unique的情况)。each interation:当设置了run上的interation次数后,按照记录顺序读取,当记录超出列表之后,执行when out of value策略。 each occurrence:每当参数被取值一次,按照记录顺序读取,当记录超出列表之后,执行when out of value策略。 once:第一次取值后一直沿用这条记录7.总结一下参数在场景下取值的对应关系:还是不会不懂,在研究 Update value onsequentialrandomUnique(优先分配每个用户的数据库)Each interation每个用户数据相同每个用户独立随机根据自动或手动分配block size的方式获得每个用户的数据块Each occurrence每个用户数据相同每个用户独立随机根据手动设置分配每个用户的数据库once每个用户数据相同每个用户独立随机每个用户使用了参数列表中的一个值Param参数记录条数=迭代次数X虚拟用户个数(在自动分配unique数据库策略下)Param参数记录条数=手动分配块的数目X 虚拟用户个数(在手动分配unique数据块策略下)8.参数和变量的作用域及区别:参数是全局的,在脚本的任何一个action都可以使用,变量一般是局部的,而且必须在action的最开始定义,否则会出现错误。区别:参数是可以直接在LR的函数中应用的,绝大多数情况下我们都可以直接用参数替换掉函数中双引号内的数据。注意:我们也可以定义全局变量,在Globals.h文件中,就可以定义全局变量。9.参数数组:Lr_paramarr_idx(“website数组名字”,2):得到第二个数组中的值,和lr_eval_string(“website_2”);结果一样。Lr_paramarr_len(“website”):返回website数组的长度。Lr_paramarr_random(“website”):随机从website中选择一个值。10.常见参数和变量的应用总结:1)参数和字符串变量的交换lr_save_string(“hello world”,”param”);/定义一个参数param lr_eval_string(param);/返回param的一个值2)数字型变量和参数的交换 Int x; x= 10; lr_save_int(x,”param”); x = atoi(lr_eval_string(“param”);3)变量存放参数名 char x100; x = “param”; Lr_save_string(“hello world”,”param”); Lr_eval_string(x);4)带格式的参数输出 Lr_save_string(“shanghai”,”city”); Lr_eval_string(“welcome to city”);四、关联 1.关联有三种方式:自动关联、手动关联、一边录制一边关联。 2.关联的实现是通过一个关联函数来实现的,web_reg_save_param()这个函数可以帮助我们完成对服务器返回的保存数据。 注意:关联函数是一个注册型函数,我们需要告诉vug你下面的请求返回是需要被处理的,所有该函数必须要写在我们的请求前,否则就会提示无法获得关联结果的错误。而对应关联函数的结果需要请求结束后才能获得,所有提取关联结果参数的值必须放在请求后。3关联函数的作用是通过一种规则将服务器的返回保存到一个参数中,所以查看参数取值的日志就可以看到参数的内容。4.修改关联函数有两个方法:第一种是直接在代码上修改;第二种是切换到Tree模式下,在关联函数上双击。5.当我们关联的内容中有双引号,他会影响关联函数自身的判断,所有我们需要添加转义字符。(左右边界)6.关于关联函数:web_reg_save_param 1)当关联出来的内容超出了默认的1024bytes会导致存放数据溺出,此时用web_set_max_html_param_len()函数解决。Eg:web_set_max_html_param_len(“9999999”) 2)parameter name:存放参数的名称,关联出来的内容将会存放在以这个命名的参数中,此处需注意,当我们instance是任意一个数字的时候,关联成功后的值就会存放在参数中;当instance事ALL的时候,关联成功后的值将会一次存放在 参数名_数字 这样的参数数组中,并且还会添加一个 参数名_count 的参数存放关联出来的记录数。3)左右边界,left boundary and right boundary 对于左右边界的选择是难点,仔细琢磨 4)instance:其在很多的函数里都有应用,对应脚本的ORD=关键字,在这里可以填写1至任意一个整数,也可以填ALL,如果填写数字,那么说明的是我们将会从返回的记录中取出对应顺序的值,填写ALL的话将会返回所有的值。5)not found:关联的值如果不存在如何处理。选择error(在LR中默认不选择error),若是没有关联到相关内容则提示错误;选择warning,则会简单提示没有抓到内容,不会产生错误。建议不要选择warning。6)search in:设置关联查询的范围。LR提供了4个选项:header、body、noresource、all。Noresource是从服务器返回的内容类别来考虑的,html文件格式的。其他三个选项包括的内容有图片、js脚本等。7.关联函数的使用注意:1)atoi()类型强制转换函数,将字符串类型的内容转换成整数型,itoa()将整数类型转换成字符串。2)什么内容需要关联? 当我们脚本中的数据每次回放都会变化时,我们就可以通过关联来访问服务器,获得该数据的变化结果,确认左右边界。3)关联边界如何设置? 左右边界是定位动态数据的关键,我们可以通过先松后紧的方式在达到这个目标,首先在做关联的时候设置一个比较明确的、松散的边界值,确保能够将我们所需要的内容块整体保存成功成为参数,其次在根据返回的内容进一步的细化边界值,一步步的达到准确的关联结果。五、检查点1.需要弄明白一个问题,即使LR回放脚本成功,但是事务也不一定执行成功。因为LR判断脚本是否执行成功的关键是根据服务器返回的状态来确定的。2.用到的函数是:web_reg_find()六、事务1.事务的作用:1)判定执行的结果正确与否2)统计事务的响应时间(事务的响应时间就是用户请求的开始时间和服务器返回内容到客户时间的差值)2.要求熟悉添加事务3.事务的状态:LR_AUTO根据服务器的返回状态确定事务是以LR_PASS通过还是LR_FAIL失败、LR_FAIL、LR_PASS4.事务时间(duration时间)的组成 1)事务中业务操作时间: 2)事务自身时间误差:事务中哪怕没有操作也是需要时间的,不过时间很短,一般在百分之一秒左右,可以忽略。 3)think time:是LR提供的一种模拟用户等待的时间,通过lr_think_time()函数实现。 4)waste time:指的是事务中由于其他原因导致的时间浪费,比方说除了脚本自身浪费的时间外,还有我们使用C语言等外部接口做处理所消耗的时间也会营销事务的时间。 Lr_start_timer()-lr_end_timer 可以统计脚本外的时间。七、集合点1.虽然用户是一起开始运行的,但是由于计算机的串行处理,用户的运行其实是随着时间的推移,脚本的运行并不能完全达到同步。在这个时候,我们可以通过添加检查点函数让用户在同一时间点上做操作,来测试系统并发处理的能力。添加方法:右击,添加rendezvous即可。2.集合点提供了3中策略 1)当100%的用户到达集合点脚本继续 2)当100%的运行用户到达集合点基本继续 3)当规定个数的用户到达集合点脚本继续。3注意:集合点应该放在事务外。因为若是放在事务内的话,那么用户在集合点处等待的时间也会计入事务的时间,这样统计的事务时间就不准确了。八、场景设计1.场景分为:目标场景和手工场景 目标场景:就是通过设置一个运行目标,若测试结果达到目标,就说明系统符合测试目标,否则会提示无法达到目标。 手工场景:就是我们自行设置虚拟用户的变化,设计用户的添加和减少过程,来模拟真实的用户请求模型,完成负载的生成。手工场景分为iescenario模式和group模式。 Scenario模式是指所有的脚本都是用相同的场景模型来运行,我们只需要分配每个脚本所使用的用户个数。Scenario模式下有real-life schedule 和 classic schedule两种模式。2.负载生成器load generator load generator是我们运行脚本的负载引擎,默认情况下我们可以使用本地的负载生成器来运行脚本,但是当一台电脑无法模拟大量的虚拟用户的时候,可以通过调用多个load generator来完成大规模的性能负载。3.在运行设置前,须设置一下内容; Think time、场景中mmdrv.exe负载生成的方式进程模式还是线程模式。注意二者的区别、系统日志设置、关闭自动化事务、带宽模拟、集合点策略4.IP虚拟没用过不太懂,以后试一试 5.每秒点击次数:每次场景运行过程中Vuser每秒向Web服务器提交的点击次数(HTTP请求数),凭此可以查看负载级别事务响应时间:显示完成每个事物所花费的时间。观察事务响应时间以了解服务器在负载下对客户的响应时间非常重要。吞吐量:Vuser每秒从web服务器接收的数据量。手动场景:可以控制正在运行的Vuser数目及运行时间,还可以测试出应用程序可以同时运行的Vuser数目面向目标的场景:用来确定系统是否可以达到特定的目标。Vuser_init和vuser_end不允许分割.所以要是分割胡话只能放到action中。在重复执行的脚本中Vuser_init和vuser_end只会执行一次,重复执行的只是ACTION中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位招聘考试综合类职业能力倾向测验真题模拟试卷(经济)
- 2025年事业单位招聘考试综合类无领导小组讨论面试真题模拟试卷(水文类)
- 2025年公务员与事业单位类行政职业能力测验真题模拟解析与模拟试题
- 2025江苏南通市通州区教育体育系统招聘教师45人模拟试卷及答案详解1套
- 2025年新疆乌鲁木齐事业单位招聘考试综合类专业能力测试试卷(艺术设计类)真题模拟解析
- 地下水压动态监测-洞察与解读
- 健康与环境承诺书(9篇)
- 2025年中国武靴藤提取物行业市场分析及投资价值评估前景预测报告
- 新解读《GB-T 39353-2020空间数据与信息传输系统 邻近空间链路协议 同步和编码子层》
- 2025年中国无铅免洗助焊剂行业市场分析及投资价值评估前景预测报告
- 《建筑施工技术》课件-土方开挖及边坡支护
- 特殊教育作业册(上册)
- 6.1+友谊的真谛++课件-2024-2025学年统编版道德与法治七年级上册
- DL∕T 5210.4-2018 电力建设施工质量验收规程 第4部分:热工仪表及控制装置
- 南洋理工校训的英文
- HG+20231-2014化学工业建设项目试车规范
- 保险欺诈检测的智能算法
- 平安产险意外伤害保险(B款)(互联网版)条款
- 发展汉语初级口语I-第7课课件
- 2024年上海国际汽车城(集团)有限公司招聘笔试冲刺题(带答案解析)
- 2024年铁路职业技能鉴定考试-铁路车务系统笔试参考题库含答案
评论
0/150
提交评论