Jmeter脚本--BeanShell PreProcessor

  整理一份之前项目中的接口测试文档内容,主要为了方便以后能够更好的进行接口测试需求,以Jmeter接口测试为例。

接口测试前置条件需要有:API文档、API文件,设计并编写对应接口测试用例

一、API对应的使用手册

 

 

 

 

二、编写接口对应的测试用例

如下图所示:

  

三、文档文件:OpenAPI.JAVA

项目提供OpenAPI文件,可以从此文件中可以看到API相关的写法内容

 1 package com.example.test;
 2 
 3 import java.io.UnsupportedEncodingException;
 4 import java.security.MessageDigest;
 5 import java.security.NoSuchAlgorithmException;
 6 import java.text.SimpleDateFormat;
 7 import java.util.Date;
 8 
 9 public class OpenApi {
10 
11     public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {
12 
13         String name = "";// 需要调用的方法名
14         //name = "createUser";
15         name = "checkBaseAccount";
16         name = "queryProfile";
17         System.out.println(name);
18         String json = "";//要传输的json 数据
19         json = "{\"profile\":{\"appUser\":\"appUser\",\"account\":\"asdasd\",\"channelCode\":\"网约车\",\"first_name\":\"first_name\",\"password\":\"password\"}}";
20 
21 
22         test(name, json);
23 
24     }
25 
26 
27     public static void test(String name, String json) {
28 
29         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
30         String format = simpleDateFormat.format(new Date());
31         System.out.println("时间戳 timestamp: " + format);
32 
33 
34         String str = "ProfileOpenService" + name + json + "appKey=saic_tripformat=jsontimestamp=" + format + "signatureMethod=md5version=1Hogp3wIt";
35 
36         System.out.println(str);
37 
38 //        System.out.println(encryption(str));
39         System.out.println("md5 signatureMethod: " + encryption(str).toUpperCase());
40     }
41 
42     /**
43      * @param plainText 明文
44      * @return 32位密文
45      */
46     public static String encryption(String plainText) {
47         String re_md5 = new String();
48         try {
49             MessageDigest md = MessageDigest.getInstance("MD5");
50             md.update(plainText.getBytes());
51             byte b[] = md.digest();
52 
53             int i;
54 
55             StringBuffer buf = new StringBuffer("");
56             for (int offset = 0; offset < b.length; offset++) {
57                 i = b[offset];
58                 if (i < 0)
59                     i += 256;
60                 if (i < 16)
61                     buf.append("0");
62                 buf.append(Integer.toHexString(i));
63             }
64 
65             re_md5 = buf.toString();
66 
67         } catch (NoSuchAlgorithmException e) {
68             e.printStackTrace();
69         }
70         return re_md5;
71     }
72 }

 

四、设计并编写Jmeter接口测试用例

1. 注册用户:用户参数信息记录

 2.注册用户:用户注册

配置注册相关的参数,可对参数进行测试,设计正向用例和反向用例

正向用例:根据需求填写正确参数测试

反向用例:重复提交参数、必填参数为空、错误参数(参数类型、参数值)

3. 添加BeanShell PreProcessor预处理程序

编写脚本,进行变量设置

变量脚本

 

 1 import com.example.test.*;
 2 import java.text.*;
 3 import java.util.Date;
 4 String reqData = "";
 5 String name = "";
 6 name = "createUser";
 7 String json = "";
 8 json = "{\"profile\":{\"appCode\":\"\",\"appUserId\":\"${appUserId}\",\"channelCode\":\"${channelCode}\",\"educationCode\":\"\",\"firstname\":\"\",\"industrycode\":\"\",\"lastname\":\"\",\"tele\":\"\",\"password\":\"7777777\"}}";
 9 vars.put("json",json);
10 Date currentTime = new Date();
11 SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss"); 
12 String dateString = formatter.format(currentTime);
13 String format = dateString;
14 vars.put("format",format);
15 String str = "ProfileOpenService" + name + json + "appKey=saic_tripformat=jsontimestamp=" + format + "signatureMethod=md5version=${csmd5version}";
16 vars.put("str",str);
17 String sign=OpenApi.encryption(str).toUpperCase();
18 System.out.println("计算结果:"+sign);
19 vars.put("sign",sign);

 

 4.提取返回参数uid

完成请求后,使用正则表达式提取响应的参数

 5.HTTP信息头管理器

信息头中部分参数通过变量脚本生成

 6.配置响应断言

判断返回内容是否与预期内容一致,返回一致则表示测试成功。

 

posted @ 2024-05-23 11:00  RChow  阅读(25)  评论(0编辑  收藏  举报