软件测试周记录之jmeter
这周工作中遇到几个问题:
1.创建一个最基础的测试计划,包含以下内容:
a.配置文件:http请求默认值:地址栏写的是服务器地址(写ip+端口号没有通过,没有搞懂)
用的是jmeter自带软件录制的话,在每个请求下都带有一个HTTP信息头管理
HTTP Cookie 管理器:默认
b.录制的HTTP请求路径与接口文档给的路径不一致,
2.csv参数化:
参数化的数据要手工输入,需求数据较少可用,较多不可用,找了一个工具DataFactory可以自动生成数据,但需要数据库的支持,待解决;另外一种方法是利用jmeter自带函数自动生成,在菜单栏的选项-->函数助手对话框,选择Random,输入最小值、最大值、存储结果的变量名。字符可以用RandomString,同理,缺少中文的。总的来说应该还是DataFactory方便操作一些。
3.连接数据库
下载mysql-connector-java-8.0.11,官网可以下载https://dev.mysql.com/downloads/connector/j/
免安装,直接复制mysql-connector-java-8.0.11.jar到C:\xxx\apache-jmeter-4.0\lib目录下即可,不用重启jmeter,直接在jmeter的测试计划添加路径即可
添加JDBC 连接配置,出现服务区间不对时,即The server time zone value '�й���ʱ��' is unrecognized or represents more
添加JDBC请求
4.提取单个响应参数,正则表达式
5.当用正则表达式提取参数值不只一个时,在调用参数的地方添加ForEach控制器,循环调用值,当没有添加ForEach控制器时,提取的参数值为缺省值
6.汉化响应数据,添加BeanShell PostProcessor
源代码如下:
String s2=new String(prev.getResponseData(),"UTF-8");
//---------------一下步骤为转码过程---------------
char aChar;
int len= s2.length();
StringBuffer outBuffer=new StringBuffer(len);
for(int x =0; x <len;){
aChar= s2.charAt(x++);
if(aChar=='\\'){
aChar= s2.charAt(x++);
if(aChar=='u'){
int value =0;
for(int i=0;i<4;i++){
aChar= s2.charAt(x++);
switch(aChar){
case'0':
case'1':
case'2':
case'3':
case'4':
case'5':
case'6':
case'7':
case'8':
case'9':
value=(value <<4)+aChar-'0';
break;
case'a':
case'b':
case'c':
case'd':
case'e':
case'f':
value=(value <<4)+10+aChar-'a';
break;
case'A':
case'B':
case'C':
case'D':
case'E':
case'F':
value=(value <<4)+10+aChar-'A';
break;
default:
throw new IllegalArgumentException(
"Malformed \\uxxxx encoding.");}}
outBuffer.append((char) value);}else{
if(aChar=='t')
aChar='\t';
else if(aChar=='r')
aChar='\r';
else if(aChar=='n')
aChar='\n';
else if(aChar=='f')
aChar='\f';
outBuffer.append(aChar);}}else
outBuffer.append(aChar);}
//-----------------以上内容为转码过程---------------------------
//将转成中文的响应结果在查看结果树中显示
prev.setResponseData(outBuffer.toString());
7.关于验证码问题
刚开始试过Tesseract-OCR,它只能用在正常的验证码上,不正常的如倾斜反向等难以实现,最后还是让开发那边把验证码屏蔽了,屏蔽只能用在未上线的产品,已上线系统还需要经过进一步讨论决定,是否在内网重写接口用于获取验证码,还是用万用验证码,这些方式都有一定的风险。
以上整合了这周遇到的一些问题以及解决方法,都是前人已经解决的方法,仅供参考