Apache JMeter零基础学习

目录

首先简单介绍JMeter的能做的测试

一、JMeter和JDK下载

学习前准备

 JMeter下载安装,以下箭头指的都可以下载​编辑然后会有一个安装包,可以选择一个路径解压,解压后如下:

使用JMeter

启动jmeter

操作学习

 压力测试

性能测试


首先简单介绍JMeter的能做的测试

  1. 压力测试:Apache JMeter 可以模拟多种用户并发、延迟、网络带宽等条件,以测试 Web 应用程序、Web 服务、数据库和其他网络协议的性能和负载容量。

  2. 功能测试:Apache JMeter 可以模拟多种 HTTP 请求和响应,以测试基本和高级功能,例如登录、注册、搜索、购物车、支付和确认订单等。

  3. 数据库测试:Apache JMeter 可以模拟 SQL 查询和事务,并收集数据库操作的性能指标,以测试数据库的性能和容量。

  4. API 测试:Apache JMeter 支持多种协议和格式,例如 REST、SOAP、XML 和 JSON,以测试 Web 服务和 API 接口的性能和正确性。

  5. 分布式测试:Apache JMeter 支持分布式架构,可以将负载和测试结果分布在多个计算机中,以提高测试效率和覆盖范围。

  6. 多种报告和图表:Apache JMeter 提供多种报告和图表,例如 HTML、XML、CSV 和图形化结果,以便于测试人员和管理者进行数据分析和决策。

一、JMeter和JDK下载

学习前准备

1、JMeter下载地址:Apache JMeter - Download Apache JMeter

2、JDK下载地址:技术资源 | Oracle 中国

 JMeter下载安装,以下箭头指的都可以下载然后会有一个安装包,可以选择一个路径解压,解压后如下:

(注:目录路径尽量不要有中文名,我是临时文件夹)

 右键打开计算机属性,高级,环境变量,在系统变量中新建一个JMETER_HOME,然后把安装的路径复制进去

 然后在Path中添加如下

;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;

JDK安装C战到处都是可以自行搜索 

使用JMeter

 jmeret主要的配置元件

  1. 测试计划(Test Plan):测试计划是使用 JMeter 进行测试的起点,它是其他 JMeter 元件的容器。

  2. 线程组(Thread Group):线程组代表一定数量的用户,它可以用来模拟用户并发发送请求。实际的请求内容在 Sampler 中定义,它被线程组包含。

  3. 配置元件(Configuration Element):配置元件维护 Sampler 需要的配置信息,并根据实际需要修改请求的内容。常见的配置元件包括 HTTP Cookie 管理器、HTTP Header 管理器、用户定义的变量等。

  4. 前置处理器(Pre-Processor):前置处理器负责在请求之前工作,常用来修改请求的设置。常见的前置处理器包括 User Parameters、BeanShell PreProcessor 和 Regular Expression Extractor 等。

  5. 后置处理器(Post-Processor):后置处理器负责在请求之后工作,常用来获取返回的值或进行断言和验证。常见的后置处理器包括 BeanShell PostProcessor、JSON Extractor 和 Regular Expression Extractor 等。

  6. 断言(Assertion):断言用于检查响应结果是否符合预期,如果不符合,则会标记为失败。常见的断言包括 Response Assertion、Duration Assertion 和 Size Assertion 等。

  7. 监听器(Listener):监听器用于收集压力测试的结果和数据,并展示为可读性强的报告或图形化界面。常见的监听器包括 Summary Report、Graph Results 和 View Results Tree 等。

启动jmeter

在解压的路径下,进入bin目录,双击Jmeter.bat

 

 切换中文环境

 好了,可以正常使用了

操作学习

 1.创建测试计划

打开会有一个默认的空白的测试计划在

 2.添加线程组

下面是线程组的一些参数的解析

 3.添加取样器

取样器可以根据自己的需求来创建,这边用http示例

 下面的是简单的服务器代码,可以用http://localhost:8080/?username=your_username&password=your_password

访问进行测试

package com.ljx.cn.test;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;

import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;

public class SimpleHttpServer {

    public static void main(String[] args) throws Exception {

        // 创建 HttpServer 实例,监听 8080 端口
        HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);

        // 绑定处理器(handler)到指定的路径
        server.createContext("/", new MyHandler());

        // 启动 HttpServer
        server.start();
        System.out.println("Server started on port 8080.");
    }

    // 自定义处理器类
    static class MyHandler implements HttpHandler {
        @Override
        public void handle(HttpExchange exchange) throws IOException {
            // 获取请求方法和路径
            String requestMethod = exchange.getRequestMethod();
            String requestPath = exchange.getRequestURI().getPath();

            // 只处理 GET 请求,并且路径为 "/"
            if (requestMethod.equalsIgnoreCase("GET") && requestPath.equals("/")) {
                // 解析查询字符串参数
                String query = exchange.getRequestURI().getQuery();
                String username = null;
                String password = null;
                if (query != null) {
                    String[] queryParams = query.split("&");
                    for (String queryParam : queryParams) {
                        String[] keyValue = queryParam.split("=");
                        if (keyValue.length == 2) {
                            String key = keyValue[0];
                            String value = keyValue[1];
                            if (key.equals("username")) {
                                username = value;
                            } else if (key.equals("password")) {
                                password = value;
                            }
                        }
                    }
                }

                String response;
                if (username != null) {
                    response = "Hello, " + username + "!";
                } else {
                    response = "Please provide a username.";
                }

                // 设置响应头
                exchange.getResponseHeaders().set("Content-Type", "text/plain");
                // 设置响应码为 200 OK
                exchange.sendResponseHeaders(200, response.getBytes().length);

                // 发送响应内容
                OutputStream outputStream = exchange.getResponseBody();
                outputStream.write(response.getBytes());
                outputStream.flush();
                outputStream.close();
            } else {
                // 其他请求全部返回 404 Not Found
                String response = "404 Not Found";
                exchange.sendResponseHeaders(404, response.getBytes().length);
                OutputStream outputStream = exchange.getResponseBody();
                outputStream.write(response.getBytes());
                outputStream.flush();
                outputStream.close();
            }
        }
    }
}

添加四个监听器

 输入参数

 就可以在以下各种监听器中查看数据了

 具体结果可以进行提取保存

 压力测试

简单介绍一下压力测试

压力测试是指在特定的负载条件下,对系统、应用程序或网络进行测试,以确定其在正常、峰值和超负荷负载情况下的性能、可靠性和稳定性,发现并诊断潜在的问题和瓶颈,并进行优化。

压力测试可以模拟多个并发用户、高流量、大数据量等不同场景,观察被测试系统的响应时间、吞吐量、错误率等指标。通过对这些指标的测量分析,可以评估系统在不同负载下的性能表现,及其是否满足预期的要求和需求。

压力测试通常包括以下步骤:

  1. 确定测试目标和测试场景。
  2. 确定测试工具和测试环境。
  3. 设置测试参数和测试脚本。
  4. 运行测试并监视测试结果。
  5. 分析测试结果并识别问题和瓶颈。
  6. 优化系统并重新进行测试,直到达到预期的性能要求。

压力测试是软件开发过程中重要的一步,可以帮助开发人员和测试人员找出系统的问题并提高系统的性能和稳定性。同时,压力测试也可以用于评估硬件设备和网络的性能和能力,以便更好地规划和设计系统架构。

在游戏中的应用

在进行游戏压力测试时,需要特别关注以下点:

  1. 游戏中不同场景下的负载情况。
  2. 游戏中不同功能的负载情况。
  3. 游戏中不同网络条件下的性能表现。
  4. 游戏服务器的稳定性和可靠性。

需要注意的是,游戏压力测试需要一定的技术基础和经验,建议在进行压力测试之前先了解基本的软件测试知识、网络协议知识和游戏开发知识。

性能测试

  1. 创建测试计划:创建一个新的测试计划,并设置测试目标、测试场景、测试参数等。

  2. 添加线程组:添加一个或多个线程组,并设置每个线程组的用户数量、持续时间和循环次数等。

  3. 添加采样器:添加一个或多个采样器,并设置每个采样器的请求类型、路径和参数等。

  4. 设置断言:设置至少一个断言以验证请求的响应是否正确。

  5. 设置图表报告:设置图表报告功能以查看测试结果统计数据。

  6. 创建测试计划:创建一个新的测试计划,并设置测试目标、测试场景、测试参数等。
  7. 添加线程组:添加一个或多个线程组,并设置每个线程组的用户数量、持续时间和循环次数等。
  8. 添加采样器:添加一个或多个采样器,并设置每个采样器的请求类型、路径和参数等。
  9. 设置断言:设置至少一个断言以验证请求的响应是否正确。
  10. 设置图表报告:设置图表报告功能以查看测试结果统计数据。
  11. 运行测试:启动测试并观察测试过程中的性能指标和错误信息。
  12. 优化测试脚本:根据测试结果分析和优化测试脚本,以达到更好的性能测试效果。

在进行游戏性能测试时,需要特别关注以下点:

  1. 游戏中不同场景下的负载情况。
  2. 游戏中不同功能的负载情况。
  3. 游戏中不同网络条件下的性能表现。
  4. 游戏服务器的稳定性和可靠性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值