Files
makemd/docs/04_Test_Guide.md

183 lines
5.7 KiB
Markdown
Raw Permalink Normal View History

2026-03-30 16:55:04 +08:00
# 测试指南
## 1. 测试概述
Crawlful Hub 项目采用了全面的测试策略,包括单元测试、集成测试和系统测试,确保系统的稳定性和可靠性。本指南详细介绍了项目的测试方法和测试策略。
## 2. 测试环境
### 2.1 硬件要求
- **CPU**: 至少 2 核
- **内存**: 至少 4GB
- **磁盘**: 至少 50GB 可用空间
### 2.2 软件要求
- **Java**: JDK 17 或更高版本
- **MySQL**: 8.0 或更高版本
- **Redis**: 6.0 或更高版本
- **Maven**: 3.6 或更高版本
- **JUnit 5**: 项目集成的测试框架
## 3. 测试类型
### 3.1 单元测试
单元测试是对系统中最小的可测试单元进行测试,通常是对单个方法或类的测试。单元测试的目的是验证每个单元是否按照预期工作。
**核心测试类**
- `AuthServiceTest.java`:测试认证服务的功能
- `OrderServiceTest.java`:测试订单服务的功能
- `ProductServiceTest.java`:测试商品服务的功能
### 3.2 集成测试
集成测试是对系统中多个组件的交互进行测试,验证组件之间的协作是否正确。集成测试的目的是确保系统的各个组件能够正确地协同工作。
**核心测试类**
- `SystemIntegrationTest.java`:测试整个系统的集成功能
### 3.3 系统测试
系统测试是对整个系统的功能进行测试,验证系统是否满足需求规格。系统测试的目的是确保系统能够按照预期工作,满足用户的需求。
**测试方法**
- 使用 API 文档测试 API 接口
- 使用健康检查端点测试系统状态
- 使用监控端点测试系统性能
## 4. 测试工具
### 4.1 JUnit 5
JUnit 5 是 Java 中最流行的测试框架用于编写和运行单元测试。Crawlful Hub 项目使用 JUnit 5 进行单元测试和集成测试。
### 4.2 Mockito
Mockito 是一个用于 Java 的 mocking 框架用于创建和配置模拟对象。Crawlful Hub 项目使用 Mockito 模拟依赖对象,便于单元测试。
### 4.3 Spring Test
Spring Test 是 Spring 框架提供的测试工具,用于测试 Spring 应用。Crawlful Hub 项目使用 Spring Test 测试 Spring 组件。
### 4.4 Postman
Postman 是一个用于测试 API 的工具,用于发送 HTTP 请求并查看响应。Crawlful Hub 项目使用 Postman 测试 API 接口。
## 5. 测试执行
### 5.1 运行单元测试
1. 进入项目目录:
```bash
cd d:\trae_projects\makemd\makemd\serverjava
```
2. 执行单元测试:
```bash
mvn test
```
### 5.2 运行集成测试
1. 进入项目目录:
```bash
cd d:\trae_projects\makemd\makemd\serverjava
```
2. 执行集成测试:
```bash
mvn verify -Pintegration-test
```
### 5.3 运行系统测试
1. 启动系统:
```bash
java -jar target/serverjava-0.0.1-SNAPSHOT.jar
```
2. 使用 Postman 测试 API 接口:
- 访问 `http://localhost:3001/api/api-docs`,获取 API 文档
- 使用 Postman 发送请求,测试 API 接口
3. 使用健康检查端点测试系统状态:
- 访问 `http://localhost:3001/api/v1/monitoring/health`
4. 使用监控端点测试系统性能:
- 访问 `http://localhost:3001/api/v1/monitoring/metrics`
## 6. 测试策略
### 6.1 测试覆盖率
Crawlful Hub 项目的测试覆盖率目标是:
- **单元测试覆盖率**:至少 80%
- **集成测试覆盖率**:至少 60%
- **系统测试覆盖率**:至少 40%
### 6.2 测试用例设计
测试用例设计遵循以下原则:
- **边界值测试**:测试边界条件,如空值、最大值、最小值等
- **等价类测试**:测试等价类,如有效输入、无效输入等
- **异常测试**:测试异常情况,如参数错误、系统错误等
- **场景测试**:测试实际场景,如用户注册、登录、下单等
### 6.3 测试数据
测试数据的设计遵循以下原则:
- **真实数据**:使用真实的业务数据进行测试
- **边界数据**:使用边界值进行测试
- **异常数据**:使用异常数据进行测试
- **覆盖所有场景**:确保测试数据覆盖所有业务场景
## 7. 测试报告
### 7.1 单元测试报告
运行单元测试后Maven 会生成单元测试报告,位于 `target/surefire-reports` 目录。
### 7.2 集成测试报告
运行集成测试后Maven 会生成集成测试报告,位于 `target/failsafe-reports` 目录。
### 7.3 代码覆盖率报告
使用 JaCoCo 插件生成代码覆盖率报告,位于 `target/site/jacoco` 目录。
## 8. 测试最佳实践
### 8.1 单元测试最佳实践
- **测试单个方法**:每个单元测试只测试一个方法
- **使用断言**:使用断言验证测试结果
- **模拟依赖**:使用 Mockito 模拟依赖对象
- **测试边界条件**:测试边界值和异常情况
- **保持测试简单**:测试代码应该简洁明了
### 8.2 集成测试最佳实践
- **测试组件交互**:测试组件之间的协作
- **使用真实依赖**:使用真实的依赖对象
- **测试业务流程**:测试完整的业务流程
- **保持测试独立**:每个集成测试应该独立运行
### 8.3 系统测试最佳实践
- **测试完整功能**:测试系统的完整功能
- **使用真实环境**:使用真实的环境进行测试
- **测试用户场景**:测试实际的用户场景
- **性能测试**:测试系统的性能
## 9. 测试自动化
Crawlful Hub 项目使用 Maven 进行测试自动化,配置了以下测试目标:
- **mvn test**:运行单元测试
- **mvn verify**:运行单元测试和集成测试
- **mvn clean package**:构建项目并运行测试
## 10. 总结
本测试指南详细介绍了 Crawlful Hub 项目的测试方法和测试策略。通过本指南,您可以了解如何编写和运行测试,确保系统的稳定性和可靠性。