关于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();
- 调用
awardDao的queryAwardList方法获取奖项列表。
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进行压测的基本步骤:
-
安装JMeter:
- 下载并安装JMeter。
-
创建测试计划:
- 打开JMeter,创建一个新的测试计划。
-
添加线程组:
- 在测试计划中添加一个线程组,设置线程数、Ramp-Up时间和循环次数。
-
添加HTTP请求:
- 在线程组中添加一个HTTP请求,配置服务器名称或IP、端口号、HTTP方法和请求路径。
-
添加监听器:
- 添加结果树、汇总报告等监听器,以便查看测试结果。
-
运行测试:
- 点击“开始”按钮运行测试,观察并分析测试结果。
以下是一个简单的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

浙公网安备 33010602011771号