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