天天看点

LoadRunner学习笔记——Day4

Day4

一、性能测试的学习路线:

1、性能测试的初级部分:

      1)概念的理解和灵活应用:事务、检查点、并发点(集合点),初级的参数池(参数化)

      2)理解并能够灵活应用的测试类型:

      A、基准测试

      B、并发测试

      C、综合场景测试

2、性能测试的高级部分:

      1)脚本调试:高级的参数池部分(三大策略)、关联、涉及简单的C语言函数

      2)控制台设置:继续巩固初级部分,加强对服务器的各项资源控制

      3)结果分析:能够深入理解Analysis报告,并在AUT出现问题时能够尝试进行分析甚至调优,提高AUT的性能

二、小练习

1、什么是并发点(集合点)?并发点的三个策略?

答:系统压力最大的情况——所有用户都集合到系统瓶颈的某个点上进行操作(从脚本的角度讲,这个点就是执行脚本的某一条或一段语句)

三个策略:

A、当全部虚拟用户的百分之XX到达集合点的时候,系统释放用户,继续向下执行

B、当全部的运行着的虚拟用户的百分之XX到达集合点的时候,系统释放用户,继续向下执行

C、当XX个虚拟用户到达集合点的时候,系统释放用户,继续向下执行

2、如果达到50%的用户并发,则如何设置?

答:第一种策略(XX=50)、第三种策略(一半用户)

3、简要介绍检查点的三个函数。

答:

1)       web_find

2)       web_reg_find

3)       web_image_check

三、web_reg_find()函数

1、LR中,带有reg字样的函数,称为注册性函数,该类函数的特点就是要将函数写在相应请求之前。

2、web_reg_find函数注册一个请求,在下一个操作函数(如web_url)检索到的缓存中搜索一个文本字符串

1)返回值用0和1表示;

2)是否注册成功(web_reg_find是注册类型函数,它本身并不执行),不代表查找的内容是否存在;

3)可利用SaveCount进行判断:

web_reg_find(“Search=Body”,”SaveCount=n”,”Text=welcome”,LAST);

解释:

A、       search用来定义查找范围(可以缺省),SaveCount定义查找计数变量名称,可记录在缓存中查找内容出现的次数,可使用该值判断要查找的内容是否被找到

B、       上例是查找内容为welcome的信息,并将出现次数记录在变量n中

3、性能测试中,所有的数据包(客户端和服务器端的对话)分为两类:请求包和应答包;无论是请求包和应答包都分为2部分:header和body

1)header中是一些参数设置

2)body中是真正要传递的信息

4、LR函数(web_或者lr_开头的函数)中出现的变量称为LR变量,该类变量不需要在脚本初始位置定义,但是C语言的变量一定要在初始位置定义

5、strcmp(lr_eval_string("{count}"),"0")==0)解释:

1)strcmp函数的作用是比较2个字符串是否相等,如果2个字符串相等,则函数的返回值为0,即strcmp(a,b)==0

2)lr_eval_string函数的作用:

      A、为C语言函数和LR变量起到桥梁的作用

      B、可以取出LR的变量count的实际值,如3,

      C、为何三层括号:

           a、lr_eval_string函数后面必须接()

           b、()里面是字符串,所以用“ ”

           c、“ ”里面不是普通字符串,而是LR的变量,LR要求如果取LR变量值,则必须要用{ }

3)lr_output_message("%stimes",lr_eval_string("{count}"));解释:

A、%s是格式限定符,表示输出是该处输出字符串;如果是%d,则该出输出整型

B、输出的内容将由逗号后的内容代替

C、如果引号里有多个限定符,则依次按照逗号后的内容来代替,如lr_output_message("%stimes,%d",a,b),则输出时,由a替换%s,b替换%d

4)输出语句lr_output_message写在相应请求之后即可,不一定紧贴在对应的请求后面,只要值形成,随时可以输出

这里的练习均在buyandcheck中添加

四、web_find、web_reg_find、web_image_check函数的区别:

1、录制模式区别:web_find只能用在基于HTML模式录制的脚本中,web_reg_find没有此限制

2、位置的区别:web_reg_find是先注册(register)后查找,放在请求语句的前面;而web_find是查找前面的请求结果,使用时放在请求语句的后面

3、设置区别:Runtimesettings中的“enable image and textcheck”对web_find有效,对web_reg_find无效

4、查找方式区别:web_reg_find函数的参数SaveCount记录查找匹配的次数;web_find的机制是一旦查找匹配成功就立即返回,并不继续查找和记录匹配次数

5、查找范围区别:web_find是在返回的页面中进行内容查找,web_reg_find是在缓存中进行查找

6.效率区别:web_reg_find执行效率高于web_find

五、基准测试(单用户测试)

1、如果脚本录制过程中遇到页面报错,则放弃录制,从来再来,要保证录制过程绝对正确

2、录制完成的脚本一定要回放,如果正确,再进行下一步增强脚本,如果不正确要查找原因。

3、基准测试步骤:

1)脚本调试,运行通过

2)放入控制台

3)控制台的参数设置:

A、用户数为1

B、虚拟用户部署不需要设置(global schedule)

C、Runtime settings中的设置:

      a-  Runlogic中设置5次迭代(10次也可)

      b-  pacing(循环之间的间隔,一般情况下2-3s左右,因为在线测试过程中,如果用户循环提交请求,但是每次循环之间没有间隔,则过于严格,不符合实际的生产环境)循环之间的间隔,一般情况下设置随机的2-3秒

      c-  thinktime时间忽略,(原因:单用户对系统压力很小,所以是否存在思考时间对结果影响不大)

注意:

1、如果将Pacing、Think time值调长,则对AUT的压力减小。

      2、如果测试过程中或者结束后发现脚本错误,则需要重新修改脚本,修改脚本后实现如下步骤:

      1)修改后的脚本要编译

    2)刷新到控制台:控制台中选中脚本(Design页),点击Scenario Groups框中倒数第三个图标(Details),refresh script

      3)重新运行控制台即可(其他的参数不用再重复设置)

4、基准测试的第二种:

要求:运行脚本1分钟(singlebuy)

1)脚本调试,运行通过

2)放入控制台

3)控制台的参数设置:

A、用户数为1

B、Duration设置为1分钟(注意: 当Runtimesettings中的run logic和duration都设置时,duration优先级高;  duration默认时,以settings中的run logic为准;  当Duration时间结束时,虚拟用户会运行完当前的action再退出)

C、鉴于上面一步,Run logic中可不设置

D、pacing设置随机的2-3秒(注意: 只要有迭代,就要设置pacing, 这样是为了真实模拟用户使用)

E、think time时间忽略

注意:这里测试过程时间会比duration时间长,为什么?

——因为测试时间=初始化+用户开始时间+duration(持续时间)+用户退出时间

注意:每次测试提交的数据,应该测试3次,选取其中的中间值,如测试的响应时间有3.5、4.5、6.5,则选取4.5。

六、参数化

1、在参数池中,备用数据设置(记事本中那个)时要注意:光标要停留在新的下一行(new line)。

2、如何实现qq购票2张?(singlebuy1)

答:Runtimesettings中设置2次迭代

3、如何实现运行脚本让jojo和qq各订一张票?(singlebuy2)

      1)将包含参数池的init部分里的脚本内容(主要是login)移动到action中

      2)参数池从jojo(第一行)开始取值

      3)迭代2次,则第一次迭代(action的循环)时取第一行值jojo,第二次迭代时取第二行值

七、作业

1、基准测试:三个脚本,buy、search、scan的事务响应时间的最大值、最小值、平均值

2、注册30个用户(使用脚本),要有检查点(自己已完成,且正确,此此脚本只能运行一次,因为一个用户名只能注册一次: regis30)

      分析:1)用控制台还是单脚本做测试数据比较合适?——控制台多用户(30个用户),压力大不容易成功,所以使用单脚本(单用户)循环