1.添加JSON Path Extractor
>>下载地址:http://jmeter-plugins.org/downloads/all/,下载 JMeterPlugins-ExtrasLibs-X.X.X.zip下载
>>解压,将lib和lib/ext中的jar包放到安装目录对应位置,重启。
2.参数不能输入中文,且返回的json中包含中文的,在断言中显示为乱码。
>>不适用json断言,使用‘响应断言’
3.提示:No Jwt Token attached
>>添加http信息头管理器,添加相关jwt信息
4.报9999
>>参数中的数据与数据库中数据不一致
5. BeanShell PreProcessor处理加密
1):在eclipse写好需要的加密代码,然后把该类打成jar包(在类上点击右键->Export->jar file)
2):把jar包放到jmeter目录apache-jmeter-2.13libext下或在测试计划中的Add directory or jar to classpath 选择jar文件引入;
3):添加一个http请求,在http请求中添加前置处理器BeanShell PreProcessor;
4):在BeanShell PreProcessor中添加代码:例:
import test.SHACodeHelper;
import java.security.MessageDigest;
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
System.out.println("*****加密*****");
String password = "11111111";
String pass = SHACodeHelper.encodeSHA256(password);//调用工具类中的方法进行加密
System.out.println("Set my pass");
vars.put("pass",pass);//把值保存到jmeter变量pass中
String getPass=vars.get("pass");
System.out.println("Get my pass: " + getPass);
6.使用jmeter录制脚本
1).点击工作台,添加http代理服务器;
2).设置端口号:例如8888,8080,选择目标控制器和分组
3). 设置一下IE浏览器
IE--->“internet属性”--->“连接”--->“局域网设置”
设置地址为:127.0.0.1,端口号为步骤2中配置的端口号
4)在jmeter的http代理服务器中点击启动,打开浏览器,输入要录制的地址
7.jmeter录制时提示不受信任DLG_FLAGS_INVALID_CA;
解决:重启ie,重新关闭连接设置又打开
8.读取csv文件的第一行报错,同样的值放在第二行就正常
解决:使用notepad++,去掉第一行重新保存成新的文件
9.解决返回值或关系的断言:
方法一:在响应断言中使用正则,例如:"result":[0-1]{1}
方法二:下载jmeter3.2版本;
方法三:使用beanshell断言,添加判断代码,例如:
if ("${result}" == "0"){
SampleResult.setSampleLabel("result=0");
}else if("${result}" == "1"){
SampleResult.setSampleLabel("res=1");
}else{
SampleResult.setSampleLabel("error");
}
10.在jmeter中使用js获取当前时间:
方法1.${__javaScript((new Date()).getFullYear()+'-'+ ((new Date()).getMonth()+1) + '-' + (new Date()).getDate(),)}
方法2:${__time(yyyy-MM-dd,)}
11. JVM参数优化
修改jmeter.bat(windows下),jmeter.sh(linux下)
我优化后使用的参数是
JVM_ARGS="-Xmx2g -Xms2g -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+UseCompressedOops"
12.提取JDBC请求获取的值
填写JDBC REquest中的Variable names,如username,引用时写作"${username_取的第几个行}",如,获取第一行,写作"${username_1}"