1,在场景运行中,每次迭代的过程中,虚拟用户对参数的取值规则(五个虚拟用户,有一个参数username,其值从1到100)
1)Sequential - each iteration (顺序-每次迭代)
每个用户的每次迭代的值顺序取,然后值都一样,“2,3,4.。。。”
2)Sequential - each occurrence (顺序-每次发生)
五个用户的每次迭代的值顺序取(不会依次取),然后值都一样,“3,5.。。。”
3)Sequential - once(顺序-一次)
每个用户的每次迭代的值的取值都一样,如取值为“2”
4)random - each iteration(随机-每次迭代)
每个用户的每次迭代的值的取值都不一样,随机获取
5)random - each occurrence (随机--每次发生)
每个用户的每次迭代的值的取值都不一样,随机获取
6)random - once (随机-一次)
每个用户的每次迭代都不一样,但是同一个用户的每次迭代值都一样
第一个用户的值为“2”,第二个用户的值为“3”,那么他们的第二次迭代都会取这个值
7)unique-each iteration(唯一-每次迭代)
貌似每个用户线平分参数值,然后从分配的值开始取,每次都不一样,直到用光
分配的值,然后一直取最后一个值
参数username的值有100个(1-100),五个虚拟用户,然后每个用户分配20个,
一个用户从1(1,2,3....20,20...)开始,一个用户从20(20,21...40,40..)开始....
8)unique-each occurrence(唯一-每次发生)
每个用户的每次取值不一样,在允许的取值个数中,根据设置“when out of values”的时候,在最后一个值时,会进行一定的规则取值,
当设置为 allocate 3 values for each vuser ,continue with last value 的时候 ,五个人的取值依次可能为
“3,5,6,6,6.。。。。。”,
“8,10,11,11,11,11.。。”,
“13,15,16,16,16,16.。。。。”。。。
9)unique-once(唯一-每次发生)
每个用户,每次迭代都不一样
2,常用函数
1) lr_log_message("username:%s",lr_eval_string("{username}"));打印参数为username的值
2)lr_start_transaction("search");lr_end_transaction("search",LR_AUTO); 添加一个名字为search的事物
3)web_reg_save_param("pk_user",
"LB=pk_user=\"",
"RB=\"",
"Search=Body",
LAST);
寻找以“pk_user=" ”开头,以“ ” ”结尾的字符串,赋值给变量pk_user
4)lr_think_time(10); 添加10秒的思考时间
5)lr_rendezvous("run"); 添加一个名称为run集合点,让虚拟用户达到这个点以后,按照一定的规则进行加载
3,对日志的开启与关闭
1)当我们在录制脚本,并对脚本进行参数化的时候,我们需要开启日志,找到我们需要参数化变量值的获取规则,这个时候,我们在菜单路径Vuser->Run-Time Settings...->Log,将其选项设置为如图
2)当我们在场景的运行过程中,需要看到一些参数的变化,取值情况,我们在脚本中添加打印语句,然后菜单路径为Vuser->Run-Time Settings...->Log,将其选项设置为如下图,然后在运行结果的目录 “res\log\XXX.log”中就能看到运行参数的变化,你设置的虚拟用户有多少,这里就会有多少个这样的日志文件
3),在真正的测试中,需要关闭这些日志,因为日志的输出会对测试性能造成影响,在同样的菜单下,将其设置为如下图
4,设置action的迭代次数,以及迭代次数与场景的持续时间(Duration)的关系
1)设置action的迭代次数,默认情况下vuser_init,Action,vuser_end都是一次,vuser_init,vuser_end一般情况下都是一次就够了,而Action则更具情况需要设置,设置的用意是让虚拟用户能够循环进行Action里边的操作次数,进行设置次数的前提是将场景中的持续时间设置为“Run until completion”
2 )场景中持续时间的设置,
当场景中的持续时间设置为“Run until completion”,并且也没有对Action的迭代次数进行设置,那么运行完Action一次就进入vuser_end
当场景中的持续时间设置为“Run until completion”,并对Action的迭代次数进行设置,那么运行完Action设置的次数后才进入vuser_end
当场景中的持续时间设置为具体的时间,不管是否对Action迭代的次数进行过设置,Action里边的操作都会来设置的时间内,虚拟用户会一直进行操作,知道时间结束,然后才进入vuser_end
5,在场景中,不同的Action(vuser_start,Start Vusers,Duration,Stop Vusers)都进行了哪些操作
1)vuser_start,对系统进行初始化,如参数的加载,赋值等,往往我们将初始化的页面,登陆的操作放到了其中,那么在这一段时间也会进行页面初始化,登陆这样的操作,这个Action的设置有三个选项
Initialize all Vusers Simultaneously,同时初始化所有的虚拟用户,这个相当于在vuser_start开始设置了一个集合点,100%的用户到达这个点后,进行初始化操作
Initialize _____Vusers every _________(HH:MM:SS),多少时间初始化多少用户,具体的数字根据具体的业务进行设置,我现在这个地方的时间设置还没有一个具体的设置规律,不知道设置一个什么时间,什么虚拟用户比较好,希望看到我这篇博文的朋友,这个地方能有什么好的想法,建议,请给我建议。
第三个参数是 Initialize each Vuser just before it runs,运行Action之前才对虚拟用户进行初始化
2)Start Vusers,这个时候就是运行我们Action里边的操作,他的设置有两个选项
simultaneously ,所有的虚拟用户同时进入这个Action中进行操作
_____Vusers every _________(HH:MM:SS),多少时间后,让多少虚拟用户同事进行Action中的操作
3)Duration,持续时间,他有两个选项
Run until completion ,运行知道完成,这样的设置,Action中的操作可能运行一次,也可能运行Action迭代次数中设置的次数
Run for __days and ______(HH:MM:SS) ,让虚拟用户在Action中的操作持续多久,这里设置过后,Action的迭代次数的设置就不起作用了,运行的迭代次数就得看测试对象系统的性能以及这里设置的具体时间, 这里有些小疑问,当进入Duration中,也选中了该选项进行了时间的设置,那么虚拟用户在该过程中,是同时运行Action中的操作呢,还是按照Start Vusers中的节奏进行执行呢,希望有明白这个地方的朋友帮小弟解答下,先谢过了
4)stop vusers,就是停止虚拟用户,释放系统的资源,往往退出注销操作也放到了这个Action里边,他有两选项,和其他的有相似之处,这里就不再说明了
6,为了更好的还原真实的用户操作,我们往往需要设置思考时间(注意,思考时间不要设置到事物中,往往设置事物开始的地方),要想在场景中让思考时间起作用,我们往往需要打开思考时间的设置,菜单路径Vuser->Run-Time Settings...->think time , 如图
7,在某些情况下,如将值放到js的变量中,用函数web_reg_save_param取不到想要的值,最后设置了一个参数便解决了这个问题,菜单路径Vuser->Run-Time Settings...->preferences,如图
转载于:https://my.oschina.net/u/948369/blog/302433