一、脚本录制流程:
1、新建脚本选择网络协议(自带协议探测工具、询问开发、以往经验判断项目的协议)
2、录制前的准备(选择被测系统的类型(浏览器与非浏览器)、录制时采用的浏览器、被测服务器地址)
3、设置录制选项
4、插入命令
5、开始录制(、【停止、暂停、插入新的action、开始事物、结束事物、插入集合点、插入注释】)
6、停止录制
7、脚本查看模式(两种脚本查看方式:Script View:可以查看全部录制的脚本代码;Tree View:可以查看每个url获取来的页面。
注意:
每个脚本都是一个函数调用,函数中的参数记录了客户端发送给服务端的(请求request)数据
web_url:直接请求下载一个网页
web_link:通过点击文本链接请求打开一个网页
web_image:通过单击图片链接请求打开一个网页
web_submit_from:代表在请求打开一个网页时需要将一定的数据上传到服务器)
8、脚本的组成(init、action、end)[VuGen的脚本分为三部分:Vuser_init,Action,Vuser_end。其中Vuser_init和Vuser_end都只能存在一个,而Action可分成无数多个部分,可以通过点旁边的New按钮来创建Action。在迭代执行测试脚本时,Vuser_init和Vuser_end中的内容只会执行一次,迭代的是Action部分。]
二、脚本回放设置(run-time-settings)
1、run logic:用户建模:init、action、end;注意迭代的作用点为action,不会作用在init、end
2、Pacing(步长): 上一次迭代一结束就开始新的迭代
在上一次迭代结束之后:延迟固定(fixed)的时间XX开始新的迭代;延迟随机(random)的时间段开始新的迭代
延迟:固定的时间XX开始新的迭代;随机的时间段开始新的迭代。注意:延迟的时间包括上一迭代运行的时间
3、Log:启用日志:只有当错误出现的时候才记录日志
关闭日志
4、Think time:忽略思考时间
回放思考时间:按照录制思考时间、让思考时间乘以几倍、使用录制思考时间的随机百分比、统计规则:限制思考时间不超过XX秒。
作用:更加真实的去模拟用户操作之间的延迟
5、Proferences:checks:启用/关闭图片和文本检查
三、脚本增强设置
1、函数
web_url:作用是模拟浏览器发出get请求
web_submit_data():作用是模拟浏览器发出get/post请求
web_custom_request():作用是模拟浏览器发出HTTP支持的任何方式的请求
2、参数化
功能:让脚本使用批量的变化的数据测试,实现模拟不同数据/用户的行为
函数格式:返回值:返回值类型 函数名称(参数类型 参数,参数类型 参数)举例:int add(int a,int b)
设计思路:
步骤:1、首先确定脚本需要参数化的对象/数据
2、选中目标数据,右击 replace-with-a-parameter
3、填写参数名称和名称,点击确定
4、按下crtl+L打开参数设置界面,增加或修改数据,或者按下菜单中的P图标,可点击edit with-notepad进行编辑,设置参数取值策略
注意:参数化文件中测试数据最后一行应保留一个空行
参数化设置:
参数类型:file、date Time、RandomNumber、Unique Number
Vugen中的参数:A(sequential、random、unique)取值顺序;
B(each iteration、each occurrence、once)何是更新;
a1b1:顺序取值,每次迭代更新
a1b2:顺序取值,每次出现更新
a1b3:顺序取值,只取一次,不再更新
a2b1:每次迭代随机一次
a2b2:每次出现随机一次
a2b3:就随机一次,不再更新
a3b1:唯一取值,每次迭代更新
a3b2:唯一取值,每次出现更新
a3b3:唯一取值,只取一次,不再更新。
3、学习函数
lr_eval_string("{参数名}");取出参数中的值
用法:lr_eval_string("{参数}");
lr_save_string("string","name");保存string到参数name中;举例:lr_save_string("51testing","name");
lr_output_message("输出的内容")
4、参数和变量的区别
定义:lr_save_string("XXX","name");位置随意
变量:int i;位置必须放在脚本的首行
作用域:参数:全局脚本使用,任意action均可
变量:只限当前定义action的脚本中使用。
四、关联--事物--检查点--思考时间--集合点
关联:手动关联:高级关联获取多个数据,lr_paramarr_idx()------>通过索引找到指定位置的元素
lr_paramarr_len()------>获取参数数组的长度
lr_paramarr_random()-----获取参数数据随机位置上的元素
自动关联:录制中关联-----需要提前设置好关联规则
录制后关联-----1、录制完后关联,必须运行一遍,以收集响应数据
2、扫描脚本,扫描过程中与上一步的响应数据做对比,如果发现存在不同的响应数据,关联即可。
事物:添加数据(开始事物,结束事物)
判断事物结果:手动判断:通过检查点判断
函数:lr_start_transaction(""事物名)
lr_end_transaction("事物名",事物状态)
检查点:作用:检查请求触发的业务有没有真正成功
函数:
文件检查:web_find与web_reg_find区别:这两个函数类型不同,web_find是普通函数,web_reg_find是注册型函数;
web_find使用时必须开启内容检查选项,而web_reg_find则没有此限制;
web_find只能用在基于HTML模式录制的脚本中,而web_reg_find没有此限制;
web_find时在返回的页面中进行内容查找,web_reg_find是在响应中进行查找;
web_find在执行效率上不如web_reg_find;
web_reg_find()【("Text=Welcome,<b>jojo<b>",要查找的字符串
"Search=Boby",查找范围
"SaveCount=num",查找到的次数保存的参数名
LAST);】
图片检查:web_image_check()
思考时间:作用:更加真实模拟用户发出请求之间的延迟,也就是用户暂时停发请求的时间
函数:lr_think_time(秒数)
注意:实际情况下,获取真实场景的系统的性能指标一般加入思考时间(1-2秒)
如果做压力测试获取系统的峰值指标时,一般忽略思考时间
一般情况下,思考时间函数不要放入事物内,以免后期影响计算事物响应时间
集合点:作用:设集合点是为了更好模拟并发操作,运行过程中多个用户可以在集合点等待到一定条件后再一起发后续的请求。
不适合单独业务,适用于业务场景
设置策略:当%X全部用户到达集合点时,开始释放
当%X正在运行的用户到达集合点时,开始释放
当X个的用户到达集合点时,开始释放
函数:lr_rendezvous("集合点");