1.当只需要校验response而不需要校验返回code时,响应断言里勾选“ignore statue”即可。
2.put请求,需要把路径和参数全都放在“路径”里,参数之间用&隔开。eg:api/v1/example?appVer=6&DeviceId={token}&nick=lily
3.要把参数放在body data,必须添加信息头管理器,content-type=application/json。
4.返回401 nauthorized。
前面登录接口肯定返回了一个类似token的值,把这个值加上Bearer 作为字段Authorization的值添加到信息头管理器内即可。如:
5.提取返回值,优先考虑json Extractor,然后再考虑正则表达式。json Extractor语法为.data[0].token。
6.在jmeter内,利用BeanShell Sampler做MD5加密:
MD5算法文件生成jar包放到jmeter的lib/ext文件夹下,然后在jmeter内测试计划下add directory or jar to classpath点击添加把jar文件路径加上;最后执行接口后,生成的加密字符串可通过输出变量myMD5调用。
MD5算法:
package com.md5;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
*
* @author mapapa
*
*/
public class TestMd5 {
static protected char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
static protected MessageDigest messagedigest=null;
public static byte[] addBytes(byte[] bytes1,byte[] bytes2) {
byte[] newByte=new byte[bytes1.length+bytes2.length];
System.arraycopy(bytes1, 0, newByte, 0, bytes1.length);
System.arraycopy(bytes2, 0, newByte,bytes1.length,bytes2.length);
return newByte;
}
public static String getMD5String(byte[] bytes) {
try {
messagedigest=MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
messagedigest.update(bytes);
return bufferToHex(messagedigest.digest());
}
public static String getMD5String(String md5) throws NoSuchAlgorithmException{
byte[] bytes = md5.getBytes();
messagedigest=MessageDigest.getInstance("MD5");
messagedigest.update(bytes);
return bufferToHex(messagedigest.digest());
}
private static String bufferToHex(byte bytes[]){
return bufferToHex(bytes,0,bytes.length);
}
private static String bufferToHex(byte bytes[],int m,int n){
StringBuffer sb=new StringBuffer(2*n);
int k=m+n;
for (int i = m; i < k; i++) {
char c0=hexDigits[(bytes[i] & 0xf0)>>4];
char c1=hexDigits[bytes[i] & 0xf];
sb.append(c0);
sb.append(c1);
}
return sb.toString();
}
}
BeanShell代码:
import com.md5.TestMd5;
String tests = "${token}${timestamp}aaabbb";
byte[] bytes = tests.getBytes();
String md5String = TestMd5.getMD5String(bytes);
vars.put("myMD5",md5String)
7.BeanShell Sampler可能存在缓存,即之前引入的jar文件执行成功后,删除该jar文件导入一个新的修改过的jar,执行的仍有可能是之前的jar,需要将所有路径下先前的jar删除,重启jmeter,再引入新的jar。
8.JDBC Request,sql语句里,可以{variable name}会拿不到值,可能的原因是前一个sql语句返回的查询结果并不是严格按照variable name = XX返回,而是如下:
user_id_#=1
user_id_1=16728
此时要引用user_id,则需要在语句里写成${user_id_1}。
9.重定向接口