自动化测试平台
项目概述
这个项目是一个专注于基于 TestNG 的自动化测试的自动化测试平台。它由两个主要组件组成:
1. auto-testng-app (Rust 桌面应用程序)
- 目的:一个跨平台的桌面 GUI 应用程序,用于管理 TestNG 自动化测试。它提供测试用例管理、环境配置、测试执行、报告生成和数据管理等功能。
- 技术:
- 语言:Rust (edition 2021)
- GUI 框架:Iced 0.12 (带有 wgpu 渲染功能)
- 异步运行时:Tokio
- 数据库:SQLite (通过 SQLx)
- 其他关键依赖:Serde (JSON 序列化)、Reqwest (HTTP 客户端)、Chrono (时间处理)、UUID、Tracing (日志记录)、Regex、URL 解析。
- 架构:遵循 MVVM 模式,使用 Elm 架构进行状态管理(消息驱动更新)。采用模块化结构,包括应用核心、页面、组件、模型、服务和工具目录。
- 当前状态:基本框架已实现(UI 骨架、状态管理)。核心功能如测试用例管理、执行和报告已规划但尚未实现。
- 项目结构:
auto-testng-app/ ├── Cargo.toml # 依赖和构建配置 ├── build.rs # 构建脚本(可能用于 SQLx) ├── src/ # 源代码 │ ├── main.rs # 入口点 │ ├── lib.rs # 库定义 │ ├── app/ # 核心应用逻辑(状态、消息) │ ├── pages/ # UI 页面(例如 main_page.rs) │ ├── components/ # 可重用 UI 组件 │ ├── models/ # 数据模型 │ ├── services/ # 业务服务 │ └── utils/ # 实用函数 ├── assets/ # 静态资源 │ └── styles/ # CSS 样式(例如 report.css) ├── migrations/ # 数据库模式迁移(SQL 文件) └── README.md # 详细项目文档
2. auto-testng-command (Java 命令行工具)
- 目的:一个用于动态执行 TestNG 自动化测试的命令行工具。支持从提供者进行数据驱动测试、基于配置的 REST API 调用、动态验证步骤,以及 Allure 报告生成。设计用于与桌面应用集成或独立使用。
- 技术:
- 语言:Java 17
- 构建工具:Maven
- 框架:Spring Boot (非 Web)、TestNG 用于测试、Allure 用于报告
- 数据库:SQLite (通过 sqlite-jdbc 和 MyBatis-Plus ORM)
- 其他关键依赖:FastJSON (JSON 处理)、Hutool (实用工具)、Lombok (样板代码减少)、Groovy (脚本)、Nashorn (用于动态验证的 JavaScript 引擎)、JSONPath (查询)。
- 架构:Spring Boot 应用,使用 MyBatis-Plus 进行数据库交互。使用 TestNG 进行测试执行和 Allure 进行详细报告。支持通过 XML 配置自定义测试套件,以及带有验证脚本的动态 API 测试。
- 当前状态:核心执行框架已实现,包括 TestNG 集成、Allure 报告和动态测试逻辑。支持命令行参数以实现灵活性。
- 项目结构:
auto-testng-command/ ├── pom.xml # Maven 构建配置 ├── src/main/java/com/autotest/ # 主应用代码(例如 TestRunner.java) ├── src/test/java/com/autotest/ # 测试类(例如 ExampleTest.java) ├── src/test/resources/ # 测试资源(例如 testng.xml) ├── src/assembly/ # JAR 打包的汇编描述符 └── README.md # 使用和设置指南
整体项目
- 根目录:
E:\code\automated-testing-platform
- 附加文件夹:
doc/
:项目文档。.roo/
:包含子文件夹如rules-architect
、rules-ask
、rules-code
、rules-debug
(可能是自定义规则或 AI 配置)。.superdesign/
:设计迭代(UI/UX 原型或笔记)。.trae/
:规则文件夹(可能是工具特定配置)。.obsidian/
:Obsidian 笔记应用库(个人笔记或项目 wiki)。.idea/
:IntelliJ IDEA 项目配置。.git/
:Git 仓库。
- GitIgnore:标准忽略 IDE 文件、构建产物等。
- 许可证:MIT (从 README 推断)。
- 开发阶段:早期开发。该平台旨在简化 TestNG 测试管理和执行,桌面应用提供用户友好的界面,命令工具处理后端执行。
构建和运行
先决条件
- Rust 组件:Rust 1.70+ 和 Cargo (通过
rustup
安装)。 - Java 组件:Java 17+、Maven 3.9.8+、Allure 2+ (用于报告;通过
npm install -g allure-commandline
或类似方式安装)。 - 数据库:SQLite (无需单独安装;由依赖处理)。
auto-testng-app (Rust)
- 导航到目录:
cd E:\code\automated-testing-platform\auto-testng-app
- 构建项目:
cargo build
- 运行应用程序:
cargo run
- 这将启动桌面 GUI。对于发布构建:
cargo build --release
。 - 数据库迁移通过
migrations/
中的 SQLx 处理(首次使用时自动运行)。
- 这将启动桌面 GUI。对于发布构建:
auto-testng-command (Java)
- 导航到目录:
cd E:\code\automated-testing-platform\auto-testng-command
- 编译:
mvn clean compile
- 运行测试 (通过 Maven):
mvn test -Dtestng.xml=src/test/resources/testng.xml
- 或使用 Allure:
mvn allure:serve
(在浏览器中打开报告)。
- 或使用 Allure:
- 打包成可执行 JAR:
mvn clean package
- 生成
target/auto-testng-command-jar-with-dependencies-and-tests.jar
。
- 生成
- 运行工具:
java -jar target/auto-testng-command-jar-with-dependencies-and-tests.jar <testng-xml-path> <allure-results-dir> [allure-report-dir] [allure-command-path]
- 示例:
java -jar target/auto-testng-command-jar-with-dependencies-and-tests.jar src/test/resources/testng.xml target/allure-results target/allure-report
- 查看报告:
allure open target/allure-report
。
- 示例:
TODO:集成两个组件(例如,应用调用命令工具)。未找到根级构建脚本;分别构建每个子模块。
开发规范
通用
- 版本控制:使用 Git。提交消息应清晰且描述性(关注“为什么”进行更改)。匹配最近提交风格(例如,从
git log -n 3
)。 - 文档:为新功能更新 README 和
doc/
文件夹。使用 Markdown 保持一致性。 - 测试:
- Rust:使用 Cargo 内置测试 (
cargo test
)。 - Java:使用 TestNG 和 Allure 注解 (
@Epic
、@Feature
、@Step
等) 生成丰富报告。为新代码确保高覆盖率。
- Rust:使用 Cargo 内置测试 (
- 贡献:遵循特定语言风格。为新功能添加测试。更新文档。没有正式 CLA,但遵守 MIT 许可证。
Rust (auto-testng-app)
- 代码风格:Rust 官方指南(例如
rustfmt
)。使用cargo fmt
和cargo clippy
进行 linting。 - 错误处理:优先使用
anyhow
和thiserror
进行显式错误。 - 异步:所有异步操作使用 Tokio(例如 HTTP 请求、DB 查询)。
- 状态管理:消息驱动 (Elm-like)。在
app/message.rs
中定义消息,并在update()
函数中更新。 - 数据库:使用 SQLx 进行查询/迁移。运行
cargo sqlx prepare
进行编译时验证。 - UI:Iced 小部件;保持视图纯净并对状态变化做出反应。
Java (auto-testng-command)
- 代码风格:标准 Java 规范。使用 Lombok 进行 getter/setter 等。在 IDE 中启用注解处理。
- 构建/Lint:Maven 带有编译器插件 (Java 17)。提交前运行
mvn clean compile
。 - 测试:通过
testng.xml
的 TestNG 套件。使用@Test
、@DataProvider
进行动态测试。集成 Allure 用于步骤/附件。 - 数据库:MyBatis-Plus 与 SQLite。实体上使用
@TableName
、@TableId
注解。 - 动态逻辑:Groovy/JS 用于验证脚本。Hutool 用于实用工具(例如 HTTP、JSON)。
- 打包:使用 Maven Assembly 进行包含依赖的 fat JAR。
项目范围
- 跨组件集成:应用可能通过 Rust 中的
std::process::Command
调用命令工具进行执行 (TODO: 实现)。 - 安全:无 Web 暴露;关注本地文件/DB 安全。避免硬编码秘密。
- 性能:Rust 用于 GUI 效率;Java 用于稳健测试执行。
- 工具:IntelliJ IDEA (从
.idea/
)、Obsidian 用于笔记。
这个 QWEN.md 作为未来交互的上下文指导。随着项目的发展进行更新。