Jmeter 脚本编写注意点
1、分析http
2、http head 的添加
3、http cookies 添加
4、http 跟随定向
5、jmeter beanshell 编写
6、正则表达式的Head 获取
7、单点登录的思路
8、415 – 不支持的媒体类型
1:检查你的 http 请求头信息,比如 因为 User-Agent 被服务器设置 拒绝请求了;
比如你写的的爬虫,就很有可能因为没有伪装成浏览器,被拒绝请求
user-agent 详情
2:查看你的 http 请求方法,以及服务器端的设置
比如:有一个 强制用 post 请求的接口,你是不是用了非post 请求
3:post 请求参数设置,是不是必须的,json 格式
9、注意http的请求方法
10、beanshell脚本
1、确实Random的伪随机值不重复,则使用HashSet中不可添加重复的值,HashSet.size()进行while 确实要添加的数组。最终确定随机不重复的值。
import java.util.HashSet;
HashSet set = new HashSet(); 不支持 HashSe<Integer> set = new HashSet<Integer>();
2、使用Jmeter 内置函数时,不能使用来做为java函数使用 如随机数:_Random(int, int, int) 是 不可以传递变量来进行随机的
3、变量的下标拼接
jmeter 的下标从1开始
Integer ncount = Integer.parseInt(vars.get("count")) - 1;
int index = ran1.nextInt(ncount)%(ncount-1) + 1;
String feeRuleid_index = "feeRuleId_" + index;
String feeRuleId = vars.get(feeRuleid_index);
4、多位小数
1位整数+两位小数
Double tem=(${__Random(0,9,)}*0.01 +${__Random(0,9,)}*0.1 +${__Random(0,5,)} / 100) ;
11、编写脚本的时候 要考虑数据的对称性
数据的一致性:如获取多个订单信息,对其中的随机的机构订单进行操作,后续对其中的一个订单的商品信息修改,该时候改注意后面操作的商品信息是对应要修改订单,而不是错位的修改其他的商品信息。
12、优化报文的对接
13、java 正则表达式
覆盖:将replaceRegex的数据全部覆盖REGEX(匹配上的字符串)
String REGEX = "feeRate\":(.*?),\"floating";
String replaceRegex = "feeRate\":XXX,\"floating";
Pattern p = Pattern.compile(REGEX);
// get a matcher object
Matcher matcher = p.matcher(fee_item);
if(matcher.find()){
fee_item = matcher.replaceAll(replaceRegex);
}
14、http get response-data 为大量的数据时候 应该Jmeter 加上http 应该每次进行get的时候也会消耗一定的服务器资源
如 刚进入模块的任务查看版, 做完操作如提交之后的返回界面重新查询数据,切换菜单的请求的隐藏数据如 使用json作为ui元素返回数据在进行js重装界面
15、设计业务占比
可以使用循环控制器或者设置多线程数,使用if控制器嵌套
__counter:false 所有的线程数拥有一个计数器;true 每次线程拥有独立的计数器
${__counter(false,)}%9 !=0
__counter产生的计数器能被9模完 形成的比例是9:1
${__counter(false,)}%3 !=0 1,2,4,5,7,8,10 3,6,9
__counter产生的计数器能被3模完 形成的比例是7:3