Jmeter使用案例(1):基本测试。

前言

在完成一个接口功能的开发后,对其测试是必不可少的,一般的,测试连通性或者对一些数据进行验证时,可以使用postman这些功能,更常见的,如果我们想要测试一个接口的性能,就可以使用jmeter来进行测试。

Get请求测试

在安装后jmeter后,就可以使用命令行来启动jmeter。在cmd中,直接输入jmeter

1
jmeter

如果正确安装后,就可以启动图形页面。

  1. 进来后的界面如下,注意到左上角有个测试计划

    image-20250612231125361

    右键这个测试计划,就可以添加我们需要的测试。

    image-20250612231408616

    新建一个线程组后,就可以配置线程组的一些信息。

    image-20250612231555912

    下面来分析一下这些参数的意义:

    1. 线程数

      线程数越高,意味着测试的并发度也就越高。

    2. ramp-up

      这个是启动时间。例如,当ramp-up设置为10秒,线程数设置为100时,也就意味着10秒内会启动100个线程(不是1秒中启动十个

    3. 循环次数

      这个就比较好理解了,假设线程数设置为100,那么这100个线程执行完可以视为一次循环。

  2. 测试Get请求

    在localhost:8081地址运行这一个简单的web应用

    1
    2
    3
    4
    
    @GetMapping("/hello")
    public Result<String> hello() {
        return Result.success("Hello");
    }
    

    以此,来演示怎么进行Get请求测试。

    在建立好线程组后,可以添加一个http请求

    image-20250612233734327

    其页面是这样的:

    image-20250612233829177

    需要我们填写的地方有:

    • 协议
    • 服务器或IP
    • 端口号

    例如,当前的sayHello程序运行在localhost:8081,在服务器IP栏,我们可以填入localhost,端口号就是8081,注意到下面还有一个路径,也就是我们映射的地址“/hello"。

    image-20250612234241267

  3. 查看结果

    为了更好的显示结果,可以添加查看结果树汇总报告

    image-20250612234436035

    查看结果树:可以方便的看到在测试过程中请求和响应数据

    汇总报告:可以提供一种数据化的方式来评估测试,例如QPS、平均响应等

这些必要东西已经设置好了,我们可以点击测试按钮来进行测试。

这里设置总线程数为100,启动时间为5s,循环2次。

下面是结果

  • 首先是汇总报告

    image-20250612235059627

  • 然后是结果树

    image-20250612235146442

测试Post请求

Get请求不同的是,Post请求一般是带数据的,这里,数据的来源可以有两部分。

这里有一个简单的计算BMI的程序

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
@PostMapping("user/bmi")
    public Result<String> calcBMIController(@RequestBody User user) {
        // 体重单位是千克
        // 身高单位是厘米
        double userBMI = user.getWeight() / Math.pow(user.getHeight() / 100, 2);
        user.setBmi(userBMI);
        // 插入到数据库
        return Result.success(user.toString());
    }

public class User {
    private int id;
    private String name;
    private int age;
    private double height;
    private double weight;
    private double bmi;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public double getWeight() {
        return weight;
    }

    public void setWeight(double weight) {
        this.weight = weight;
    }

    public double getBmi() {
        return bmi;
    }

    public void setBmi(double bmi) {
        this.bmi = bmi;
    }

    public User(int id, String name, int age, double height, double weight, double bmi) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.height = height;
        this.weight = weight;
        this.bmi = bmi;
    }

    public User() {
    }
}
  1. 首先是在jmeter中直接数据写入数据。

    image-20250613000736057

    然后,奇怪的事情发生了,数据格式不支持!

    {“timestamp”:“2025-06-12T16:06:41.924+00:00”,“status”:415,“error”:“Unsupported Media Type”,“path”:"/user/bmi"}

    其实这是因为后端不知道我们发送的是否是json类型数据的格式,我们必须在请求头里面声明

    1
    
    application/json; charset=UTF-8
    

    可以看到,请求头确实不是我们预期的那样

    image-20250613001341072

    我们可以设置请求头:

    image-20250613003749276

    再次发送一下请求看一看。

    image-20250613003938083

    可以看到,请求全部通过了。

总结

这次分享就到这里了,后续看一看怎么导入外部数据来进行测试。

Licensed under CC BY-NC-SA 4.0
花有重开日,人无再少年
使用 Hugo 构建
主题 StackJimmy 设计