183 lines
5.7 KiB
Markdown
183 lines
5.7 KiB
Markdown
|
|
# 测试指南
|
|||
|
|
|
|||
|
|
## 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 项目的测试方法和测试策略。通过本指南,您可以了解如何编写和运行测试,确保系统的稳定性和可靠性。
|