88 lines
2.8 KiB
Markdown
88 lines
2.8 KiB
Markdown
# 技术上下文
|
||
|
||
## 技术栈概览
|
||
|
||
合规性测试工具基于以下技术栈构建:
|
||
|
||
| 类别 | 技术 | 版本 | 用途 |
|
||
|------|------|------|------|
|
||
| 核心语言 | Python | 3.8+ | 主要开发语言 |
|
||
| Web框架 | Flask | 2.0+ | Web界面实现 |
|
||
| 数据库 | SQLite | 3.0+ | 用户认证和会话管理 |
|
||
| HTTP客户端 | Requests | 2.0+ | 发送API请求 |
|
||
| AI集成 | LLM API (兼容OpenAI) | - | 智能测试数据生成 |
|
||
| 前端 | HTML/CSS/JavaScript | - | Web界面展示 |
|
||
| 报告格式 | JSON, Markdown | - | 测试报告生成 |
|
||
|
||
## 开发环境设置
|
||
|
||
### 必要组件
|
||
- Python 3.8+
|
||
- pip (Python包管理器)
|
||
- 支持Python的IDE (如PyCharm, VS Code)
|
||
- Git (版本控制)
|
||
|
||
### 项目安装步骤
|
||
1. 克隆代码仓库:`git clone <仓库URL>`
|
||
2. 安装依赖:`pip install -r requirements.txt`
|
||
3. 初始化数据库:`flask --app flask_app init-db`
|
||
4. 运行Web服务:`python flask_app.py`
|
||
5. 运行命令行测试:`python run_api_tests.py [参数]`
|
||
|
||
### 关键依赖项
|
||
项目的`requirements.txt`文件包含以下主要依赖:
|
||
- Flask:Web框架
|
||
- Werkzeug:WSGI实用工具库
|
||
- requests:HTTP客户端
|
||
- PyYAML:YAML解析
|
||
- jsonschema:JSON Schema验证
|
||
- pydantic:数据验证和设置管理
|
||
- openai:OpenAI API客户端
|
||
- Flask-Cors:处理跨域请求
|
||
|
||
## 技术约束
|
||
|
||
### 1. 性能考量
|
||
- 测试执行过程可能涉及大量HTTP请求,需要考虑超时处理和重试机制
|
||
- LLM API调用可能较慢,需要实现缓存机制避免重复生成
|
||
- 测试报告可能很大,需要优化生成和展示方式
|
||
|
||
### 2. 安全考虑
|
||
- 用户认证使用密码哈希存储,避免明文密码
|
||
- API密钥等敏感信息需要安全存储
|
||
- 上传的API规范文件需要验证格式和安全性
|
||
|
||
### 3. 兼容性要求
|
||
- 支持解析YAPI和Swagger/OpenAPI规范(JSON/YAML格式)
|
||
- 支持不同版本的OpenAPI规范(2.0/3.0)
|
||
- 支持不同API认证方式(Basic, Bearer Token, API Key等)
|
||
|
||
### 4. 扩展性设计
|
||
- 测试用例通过类继承机制支持自定义扩展
|
||
- 测试阶段支持插件式扩展
|
||
- LLM提供商可配置,支持不同模型
|
||
|
||
### 5. 网络依赖
|
||
- 需要网络连接才能访问目标API服务
|
||
- 使用LLM功能需要访问外部AI服务API
|
||
|
||
## 开发工作流
|
||
|
||
1. **代码组织**:
|
||
- `flask_app.py`:Web界面入口
|
||
- `run_api_tests.py`:命令行入口
|
||
- `ddms_compliance_suite/`:核心测试框架
|
||
- `custom_testcases/`:自定义测试用例
|
||
- `custom_stages/`:自定义测试阶段
|
||
- `test_reports/`:测试报告输出
|
||
|
||
2. **开发流程**:
|
||
- 使用Git进行版本控制
|
||
- 遵循PEP 8 Python编码规范
|
||
- 编写单元测试验证核心功能
|
||
- 文档驱动开发,保持代码和文档同步
|
||
|
||
3. **调试技巧**:
|
||
- 使用日志记录关键信息
|
||
- Flask调试模式提供详细错误信息
|
||
- 测试用例可以单独运行进行调试 |