关于jmeter压测与各种测试

package cn.bugstack.test.infrastructure;
  • 声明该类所属的包。
import cn.bugstack.infrastructure.persistent.dao.IAwardDao;
import cn.bugstack.infrastructure.persistent.po.Award;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;
import java.util.List;
  • 导入所需的类和包。
/**
 * @description: TODO
 * @author: ruofengcy
 * @date: 2025/7/4 14:51
 * @version: 1.0
 */
  • 类的文档注释,描述了类的作用、作者、创建日期和版本。
@Slf4j
  • 使用Lombok提供的注解自动注入一个日志记录器。
@RunWith(SpringRunner.class)
@SpringBootTest
  • 指定JUnit运行器为SpringRunner,使用@SpringBootTest注解来启动Spring Boot的测试环境。
public class AwardDaoTest {
  • 定义一个名为AwardDaoTest的公共类。
    @Resource
    private IAwardDao awardDao;
  • 使用@Resource注解自动注入IAwardDao接口的实现。
    @Test
    public void test_queryAwardList() {
  • 定义一个名为test_queryAwardList的测试方法。
        List<Award> awards = awardDao.queryAwardList();
  • 调用awardDaoqueryAwardList方法获取奖项列表。
        log.info("测试结果:{}", JSON.toJSONString(awards));
  • 使用日志记录器记录测试结果,将奖项列表转换为JSON字符串。

单元测试模板代码

package cn.bugstack.test.infrastructure;

import cn.bugstack.infrastructure.persistent.dao.IAwardDao;
import cn.bugstack.infrastructure.persistent.po.Award;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;
import java.util.List;

/**
 * @description: 奖项数据访问对象测试类
 * @author: ruofengcy
 * @date: 2025/7/4 14:51
 * @version: 1.0
 */
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class AwardDaoTest {

    @Resource
    private IAwardDao awardDao;

    @Test
    public void test_queryAwardList() {
        List<Award> awards = awardDao.queryAwardList();
        log.info("测试结果:{}", JSON.toJSONString(awards));
    }

    @Test
    public void test_insertAward() {
        Award award = new Award();
        award.setName("最佳员工");
        award.setDescription("年度最佳员工");
        awardDao.insert(award);
        log.info("插入测试结果:{}", award.getId());
    }

    @Test
    public void test_updateAward() {
        Award award = awardDao.queryById(1L);
        award.setDescription("年度最佳员工更新");
        awardDao.update(award);
        log.info("更新测试结果:{}", award.getId());
    }

    @Test
    public void test_deleteAward() {
        awardDao.delete(1L);
        log.info("删除测试结果:成功");
    }
}

压测模板代码

对于压测,我们可以使用JMeter或Gatling等工具。以下是使用JMeter进行压测的基本步骤:

  1. 安装JMeter

    • 下载并安装JMeter。
  2. 创建测试计划

    • 打开JMeter,创建一个新的测试计划。
  3. 添加线程组

    • 在测试计划中添加一个线程组,设置线程数、Ramp-Up时间和循环次数。
  4. 添加HTTP请求

    • 在线程组中添加一个HTTP请求,配置服务器名称或IP、端口号、HTTP方法和请求路径。
  5. 添加监听器

    • 添加结果树、汇总报告等监听器,以便查看测试结果。
  6. 运行测试

    • 点击“开始”按钮运行测试,观察并分析测试结果。

以下是一个简单的JMeter压测脚本示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jmeterTestPlan SYSTEM "http://jmeter.apache.org/xml/jmeter/testPlan.dtd">
<jmeterTestPlan version="1.2" properties="5.0" jmeterSaver="true">
  <hashTree>
    <TestPlan内疚="true">
      <hashTree>
        <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="线程组" enabled="true">
          <stringProp name="ThreadGroup.num_threads">10</stringProp>
          <stringProp name="ThreadGroup.ramp_time">1</stringProp>
          <stringProp name="ThreadGroup.loop_count">10</stringProp>
          <hashTree>
            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="查询奖项列表" enabled="true">
              <elementProp name="HTTPsampler.domain" elementType="String" value="124.223.100.17"/>
              <stringProp name="HTTPSampler.port">9000</stringProp>
              <stringProp name="HTTPSampler.protocol">http</stringProp>
              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
              <stringProp name="HTTPSampler.path">/awards</stringProp>
              <stringProp name="HTTPSampler.method">GET</stringProp>
              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
              <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
              <stringProp name="HTTPSampler.response_timeout"></stringProp>
            </HTTPSamplerProxy>
            <ResultCollector guiclass="ViewResultsTreeGui" testclass="ResultCollector" testname="结果树" enabled="true">
              <boolProp name="ResultCollector.save_with_listeners">false</boolProp>
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp name="ResultCollector.result_renderer">viewresultstable</objProp>
            </ResultCollector>
          </hashTree>
        </ThreadGroup>
      </hashTree>
    </TestPlan>
  </hashTree>
</jmeterTestPlan>

将上述JMeter脚本保存为.jmx文件,然后在JMeter中打开并运行即可进行压测。
单元测试从入门到精通
https://zhuanlan.zhihu.com/p/25406714943

posted @ 2025-07-04 15:05  ruo_feng  阅读(19)  评论(0)    收藏  举报
-->