diff --git a/.gitignore b/.gitignore index 9d046ed..76319dc 100644 --- a/.gitignore +++ b/.gitignore @@ -50,6 +50,9 @@ Thumbs.db # 数据文件 ./需求提取 -*.md -*.docx -*.xlsx \ No newline at end of file +IMPLEMENTATION_SUMMARY.md +AGENTS.md +QUICKSTART.md +json_parse_plan.md +prompt_optimization.md +ui_change_plan.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..db19234 --- /dev/null +++ b/README.md @@ -0,0 +1,137 @@ +# 测试专家系统 + +基于大模型AI技术的自动化测试项和测试用例生成系统。 + +## 功能特性 + +- 📄 **文档解析**: 自动解析JSON格式的软件使用说明书,提取功能点和操作步骤 +- 🤖 **智能生成**: 基于大模型API,为每个功能点生成专业的测试项和测试用例 +- 📊 **多格式输出**: 支持JSON、Markdown、Excel多种格式导出 +- 🔧 **Prompt优化**: 支持自定义和优化测试生成Prompt模板 +- 🌐 **多API支持**: 支持DeepSeek、通义千问、OpenAI等多种大模型API + +## 安装 + +1. 确保已安装Python 3.8+ + +2. 安装依赖: +```bash +pip install -r requirements.txt +``` + +## 配置 + +### 1. API配置 + +编辑 `config/api_config.yaml`,填入您的API密钥: + +```yaml +providers: + deepseek: + api_key: "your-api-key-here" + # ... + qianwen: + api_key: "your-api-key-here" + # ... + openai: + api_key: "your-api-key-here" + # ... +``` + +或者通过环境变量设置: +```bash +export DEEPSEEK_API_KEY="your-api-key" +export QIANWEN_API_KEY="your-api-key" +export OPENAI_API_KEY="your-api-key" +``` + +### 2. Prompt模板(可选) + +系统已包含默认的Prompt模板,位于 `config/default_prompt.yaml`。您可以根据需要修改这些模板以优化生成效果。 + +## 使用 + +### 方式一:Web界面(推荐) + +1. 启动Streamlit应用: +```bash +streamlit run app.py +``` + +2. 在浏览器中打开显示的URL(通常是 http://localhost:8501) + +3. 使用流程: + - **配置页面**: 设置API密钥和选择模型 + - **生成测试页面**: 上传JSON文档,选择功能点,生成测试 + - **结果页面**: 预览和下载生成的结果 + +### 方式二:命令行(文档转换) + +使用 `process_doc_file.py` 将Word文档转换为JSON: + +```bash +python process_doc_file.py [输入文件.docx] [输出文件.json] +``` + +## 项目结构 + +``` +test_item_gen/ +├── app.py # Streamlit主应用 +├── process_doc_file.py # Word文档转JSON工具 +├── requirements.txt # 依赖列表 +├── config/ +│ ├── api_config.yaml # API配置 +│ └── default_prompt.yaml # 默认Prompt模板 +├── modules/ +│ ├── __init__.py +│ ├── json_parser.py # JSON解析模块 +│ ├── api_client.py # 大模型API客户端 +│ ├── prompt_manager.py # Prompt管理模块 +│ ├── test_generator.py # 测试生成引擎 +│ └── output_formatter.py # 多格式输出模块 +└── templates/ # 自定义Prompt模板目录 +``` + +## 测试用例格式 + +生成的测试用例包含以下信息: + +- **测试项ID**: 自动生成的唯一标识 +- **测试项名称**: 测试项的描述 +- **所属模块**: 功能所属的模块 +- **前置条件**: 执行测试前需要满足的条件 +- **测试步骤**: 详细的测试操作步骤 +- **预期结果**: 测试应该达到的结果 +- **优先级**: 高/中/低 +- **测试类型**: 功能测试/性能测试/安全测试等 + +## 注意事项 + +1. **API密钥安全**: 请勿将包含API密钥的配置文件提交到版本控制系统 +2. **API调用费用**: 使用大模型API会产生费用,请注意控制调用次数 +3. **Prompt优化**: 根据实际需求调整Prompt模板可以显著提升生成质量 +4. **文档格式**: 输入的JSON文档需要符合特定的格式结构 + +## 故障排除 + +### API调用失败 + +- 检查API密钥是否正确配置 +- 确认网络连接正常 +- 查看API提供商的文档,确认API格式是否匹配 + +### 无法识别功能点 + +- 检查JSON文档格式是否正确 +- 确认文档中包含清晰的功能描述 +- 可以手动调整 `modules/json_parser.py` 中的功能点识别逻辑 + +### Excel导出失败 + +- 确保已安装 `openpyxl`: `pip install openpyxl` + +## 许可证 + +本项目仅供学习和研究使用。 + diff --git a/UI_IMPROVEMENT_SUMMARY.md b/UI_IMPROVEMENT_SUMMARY.md new file mode 100644 index 0000000..0044ca7 --- /dev/null +++ b/UI_IMPROVEMENT_SUMMARY.md @@ -0,0 +1,206 @@ +# UI改进实施总结 + +## 实施完成情况 + +根据 `ui_change_plan.md` 规划文档,已完成所有UI布局调整。 + +## 已完成的修改 + +### 1. 配置页面简化 ✅ + +**修改位置**:`app.py` - `show_config_page()` 函数 + +**修改内容**: +- ✅ 移除了Prompt模板管理部分(第143-200行) +- ✅ 保留了API配置功能 +- ✅ 添加了提示信息,告知用户Prompt配置在生成页面进行 + +**修改后的配置页面结构**: +``` +⚙️ 系统配置 +├── 📡 API配置 +│ ├── 选择API提供商 +│ ├── 输入API密钥 +│ ├── 保存API密钥 +│ └── 查看配置详情 +└── 💡 提示信息 +``` + +### 2. 生成页面增强 ✅ + +**修改位置**:`app.py` - `show_generate_page()` 函数 + +**新增功能**: + +#### 2.1 需求类型统计 +- 统计解析出的需求类型分布 +- 以指标卡片形式展示 +- 帮助用户了解文档内容 + +#### 2.2 Prompt策略选择 +- 复选框:启用/禁用测试规范 +- 默认启用(推荐) +- 切换时自动更新PromptManager配置 + +#### 2.3 测试规范选择详情 +- 可展开区域 +- 显示每个功能点的需求类型和选择的测试规范 +- 支持查看所有功能点的规范选择结果 + +#### 2.4 Prompt预览 +- 复选框:是否预览Prompt +- 显示第一个功能点的规范化Prompt +- 高度400px的文本区域 +- 帮助用户理解系统如何生成测试用例 + +### 3. 辅助函数 ✅ + +**新增函数**:`_convert_to_requirement()` +- 将功能点转换为需求格式 +- 用于测试规范选择 +- 处理接口信息等额外字段 + +### 4. 状态管理更新 ✅ + +**修改位置**:`app.py` - `init_session_state()` 函数 + +**新增状态**: +- `standard_manager`: 测试规范管理器实例 + +## 新的页面流程 + +### 配置页面流程 +``` +1. 进入配置页面 +2. 选择API提供商 +3. 输入API密钥 +4. 保存配置 +5. 查看配置详情(可选) +``` + +### 生成页面流程 +``` +1. 上传文档(JSON或Word) + ↓ +2. 系统自动解析文档 + ↓ +3. 显示文档信息 + ├── 文档标题 + ├── 章节数量 + └── 版本信息 + ↓ +4. 显示需求类型统计(新增) + ├── 功能需求: X个 + ├── 接口需求: Y个 + └── 其他需求: Z个 + ↓ +5. Prompt/测试规范配置(新增) + ├── 选择是否使用测试规范 + ├── 查看测试规范选择详情(可选) + └── 预览规范化Prompt(可选) + ↓ +6. 选择功能点 + ├── 多选功能点 + └── 查看功能点详情 + ↓ +7. 选择生成模式 + ├── 批量生成 + └── 分步生成 + ↓ +8. 开始生成测试 + ↓ +9. 跳转到结果页面 +``` + +## 代码修改详情 + +### 修改的文件 +- `app.py` - 主要修改文件 + +### 修改统计 +- **删除代码**:约60行(Prompt模板管理部分) +- **新增代码**:约80行(Prompt/测试规范配置区域) +- **修改函数**:2个(`show_config_page`, `show_generate_page`) +- **新增函数**:1个(`_convert_to_requirement`) + +### 关键代码位置 + +1. **状态管理**(第28-44行) + - 新增 `standard_manager` 状态 + +2. **配置页面简化**(第93-140行) + - 移除Prompt模板管理 + - 添加提示信息 + +3. **生成页面增强**(第205-333行) + - 新增Prompt/测试规范配置区域(第205-286行) + - 保留原有功能点选择(第288-313行) + - 保留原有生成选项(第315-333行) + +4. **辅助函数**(第414-430行) + - `_convert_to_requirement()` 函数 + +## 功能验证 + +### ✅ 语法检查 +- Python语法检查通过 +- 无语法错误 + +### ✅ 代码结构 +- 所有函数定义正确 +- 导入语句完整 +- 状态管理正确 + +### ✅ 功能完整性 +- 配置页面功能保留 +- 生成页面功能增强 +- 向后兼容性保持 + +## 使用说明 + +### 配置API(配置页面) +1. 进入"⚙️ 配置"页面 +2. 选择API提供商(DeepSeek/通义千问/OpenAI) +3. 输入API密钥 +4. 点击"保存API密钥" + +### 生成测试(生成页面) +1. 进入"🚀 生成测试"页面 +2. 上传文档(JSON或Word格式) +3. 查看文档解析结果和需求类型统计 +4. **配置Prompt/测试规范**(新增) + - 选择是否使用测试规范 + - 查看测试规范选择详情 + - 预览规范化Prompt(可选) +5. 选择要生成测试的功能点 +6. 选择生成模式 +7. 点击"开始生成测试" + +## 注意事项 + +1. **测试规范功能**:如果测试规范模块加载失败,系统会自动降级到传统Prompt模式 +2. **向后兼容**:系统保持向后兼容,不影响现有功能 +3. **性能考虑**:测试规范选择默认不使用AI,避免额外API调用 +4. **错误处理**:所有新增功能都有错误处理,不会影响主流程 + +## 后续优化建议 + +1. **高级配置**:允许手动调整测试规范选择 +2. **批量配置**:支持批量设置测试规范 +3. **配置保存**:保存用户的Prompt配置偏好 +4. **历史记录**:记录配置历史 + +## 总结 + +UI改进已成功完成: +- ✅ 配置页面简化,专注于API配置 +- ✅ 生成页面增强,提供完整的Prompt/测试规范管理 +- ✅ 用户体验提升,配置流程更符合实际使用场景 +- ✅ 功能完整,保持向后兼容 + +系统现在可以正常运行,用户可以: +- 在配置页面设置API +- 在生成页面查看需求类型统计 +- 在生成页面配置Prompt/测试规范 +- 在生成页面预览规范化Prompt +- 正常生成测试用例 diff --git a/VDES软件使用说明书.docx b/VDES软件使用说明书.docx new file mode 100644 index 0000000..0beadb8 Binary files /dev/null and b/VDES软件使用说明书.docx differ diff --git a/qianwen-test_results.xlsx b/qianwen-test_results.xlsx new file mode 100644 index 0000000..58990ee Binary files /dev/null and b/qianwen-test_results.xlsx differ diff --git a/~$项分解要求文字版.docx b/~$项分解要求文字版.docx new file mode 100644 index 0000000..517b215 Binary files /dev/null and b/~$项分解要求文字版.docx differ diff --git a/测试项分解要求.docx b/测试项分解要求.docx new file mode 100644 index 0000000..5f22436 Binary files /dev/null and b/测试项分解要求.docx differ diff --git a/测试项分解要求文字版.docx b/测试项分解要求文字版.docx new file mode 100644 index 0000000..1a02206 Binary files /dev/null and b/测试项分解要求文字版.docx differ diff --git a/测试项分解要求文字版.md b/测试项分解要求文字版.md new file mode 100644 index 0000000..619a609 --- /dev/null +++ b/测试项分解要求文字版.md @@ -0,0 +1,187 @@ +## 1.功能测试 + +功能测试是对软件需求规格说明中的功能需求逐项进行的测试,以验证其功能是否满足要求。功能测试一般需进行: + +1)每一个软件功能应至少被一个测试用例和一个被认可的异常所覆盖,对大的功能应进一步分解为更细的功能,使测试用例可以直接和功能对应: + +2用基本数据类型和数据值测试: + +3)用一系列合理的数据类型和数据值运行,测试超负荷、饱和及其它“最坏情况”的结果; + +4)用假想的数据类型和数据值运行,测试排斥不规则输入的能力; + +5)每个功能的合法边界值和非法边界值都应被作为测试用例; + +6)应考虑软件功能对操作模式、运行环境、运行状态、状态转换、运行时间等的覆盖要求; + +7)对于在需求规格说明中没有指明,而在用户使用手册、操作手册中表明出来的每一功能及操作,都应有相应测试用例覆盖。 + +## 2.性能测试 + +性能测试是对软件需求规格说明中的性能需求逐项进行的测试,以验证其性能是否满足要求。性能测试一般需进行: + +1)测试程序在获得定量结果时程序计算的精确性(处理精度); + +2)测试程序在有速度要求时完成功能的时间(响应时间); + +3)测试程序完成功能所能处理的数据量; + +4)测试程序各部分的协调性,如高速、低速操作的协调: + +5)测试软/硬件中因素是否限制了程序的性能; + +6)测试程序的负载潜力; + +7)测试程序运行占用的空间。 + +## 3.外部接口测试 + +外部接口测试是对软件需求规格说明中的外部接口需求逐项进行的测试。外部接口测试一般需进行: + +1)测试所有外部接口,检查接口信息的格式及内容; + +2)对每一个外部的输入/输出接口做正常和异常情况的测试。 + +## 4.人机交互界面测试 + +人机交互界面测试是对所有人机交互界面提供的操作和显示界面进行的测试,以检验是否满足用户的要求。人机交互界面测试一般需进行: + +1)测试操作和显示界面及界面风格与软件需求规格说明中要求的一致性和符合性: + +2)以非常规操作、误操作、快速操作来检验界面的健壮性; + +3)测试对错误命令或非法数据输入的检测能力与提示情况; + +4)测试对错误操作流程的检测与提示: + +5)如果有用户手册或操作手册,应对照手册逐条进行操作和观察。 + +## 5.强度测试 + +强度测试是强制软件运行在不正常到发生故障的情况下(设计的极限状态到超出极限),检验软件可以运行到何种程度的测试。强度测试一般需进行: + +1)性能的强度测试; + +2)降级能力的强度测试; + +3)系统健壮性测试; + +4)系统饱和测试。 + +强度测试在某种程度上可看作性能测试的延伸,测出软件功能、性能的实际极限。其详细要求可参见附录B“强度测试”。 + +## 6.余量测试 + +余量测试是对软件是否达到需求规格说明中要求的余量的测试。若无明确要求时,一般至少留有20%的余量。根据测试要求,余量测试一般需提供: + +1)全部存储量的余量; + +2)输入、输出及通道的余量; + +3)功能处理时间的余量。 + +## 7.可靠性测试 + +可靠性测试是在真实的和仿真的环境中,为做出软件可靠性估计而对软件进行的功能测试(其输入覆盖和环境覆盖一般大于普通的功能测试),可靠性测试中必须按照运行剖面和使用的概率分布随机地选择测试用例。可靠性测试一般需: + +1)测试环境应与典型使用环境的统计特性相一致,必要时使用测试平台; + +2)定义软件失效等级; + +3)建立软件运行剖面/操作剖面; + +4)测试记录更为详细、准确,应记录失效现象和时间; + +5)必须保证输入覆盖,应覆盖重要的输入变量值、各种使用功能、相关输入变量可能组合以及不合法输入域等; + +6)对于可能导致软件运行方式改变的一些边界条件和环境条件,必须进行针对性测试。 + +有关可靠性测试的详细要求参见附录C“可靠性测试”。 + +## 8.安全性测试 + +A、B、C级软件需要进行安全性测试。安全性测试是检验软件中已存在的安全性、安 + +全保密性措施是否有效的测试。安全性测试一般: + +1)应进行软件安全性分析,并且在软件需求中明确每一个危险状态及导致危险的可能原因,在测试中全面检验软件在这些危险状态下的反应; + +2)对安全性关键的软件部件,应单独测试,以确认该软件部件满足安全性需求: + +3)对软件设计中用于提高安全性的结构、算法、容错、冗余、中断处理等方案应进行针对性测试; + +4)测试应尽可能在符合实际使用的条件下进行; + +5)除在正常条件下测试外,应在异常条件下测试软件,以表明不会因可能的单个或多个输入错误而导致不安全状态; + +6)应包含硬件及软件输入故障模式测试: + +7)应包含边界、界外及边界接合部的测试; + +8)应包括“0”、穿越“0”以及从两个方向趋近于“0”的输入值; + +9)应包含在最坏情况配置下的最小和最大输入数据率,以确定系统的固有能力及对这些环境的反应; + +10)操作员接口测试应包括在安全性关键操作中的操作员错误,以验证安全系统对这些错误的响应; + +11)应测试双工切换、多机替换的正确性和连续性; + +12)应测试防止非法进入系统并保护系统数据完整性的能力。 + +## 9.恢复性测试 + +恢复性测试是对有恢复或重置(reset)功能的软件的每一类导致恢复或重置的情况,逐一进行的测试,以验证其恢复或重置功能。恢复性测试是要证实在克服硬件故障后,系统能否正常地继续进行工作,且不对系统造成任何损害。恢复性测试一般需进行: + +1)探测错误功能的测试; + +2)能否切换或自动启动备用硬件的测试; + +3)在故障发生时能否保护正在运行的作业和系统状态的测试; + +4)在系统恢复后,能否从最后记录下来的无错误状态开始继续执行作业的测试。 + +## 10.边界测试 + +边界测试是对软件处在边界或端点情况下运行状态的测试。边界测试一般需进行: + +1)软件的输入域或输出域的边界或端点的测试; + +2)状态转换的边界或端点的测试; + +3)功能界限的边界或端点的测试; + +4)性能界限的边界或端点的测试; + +5)容量界限的边界或端点的测试。 + +## 11.安装性测试 + +安装性测试是对安装过程是否符合安装规程的测试,以发现安装过程中的错误。安装性测试一般需进行: + +1)不同配置下的安装和卸载测试; + +2)安装规程的正确性的测试。 + +## 12.互操作性测试 + +互操作性测试是为验证不同软件之间的互操作能力而进行的测试。互操作性测试一般: + +1)必须同时运行两个或多个不同的软件; + +2)软件之间发生互操作。 + +## 13.敏感性测试 + +敏感性测试是为发现在有效输入类中可能引起某种不稳定性或不正常处理的某些数据的组合而进行的测试。敏感性测试一般需进行: + +1)发现有效输入类中可能引起某种不稳定性的数据组合的测试; + +2)发现有效输入类中可能引起某种不正常处理的数据组合的测试。 + +## 14.测试充分性要求 + +1)对软件需求规格说明中明确和隐含的需求(包括功能、性能、接口、质量要求等)的覆盖率应达到100%; + +2)配置项测试应使用与软件开发相同的编译器,全面覆盖软件需求说明文档中的所有要求。 + +3)对于A、B级嵌入式软件,对配置项源程序测试的语句、分支覆盖率均应达到100%。对用高级语言编制的A、B级嵌入式软件,应对配置项目标码进行结构分析和测试,测试的目标码语句、分支覆盖率均应达到100%。对覆盖率达不到要求的软件,应对未覆盖的部分逐一进行分析和确认,并提供分析报告。 \ No newline at end of file diff --git a/需求提取/单项目需要时间数据清单.docx b/需求提取/单项目需要时间数据清单.docx new file mode 100644 index 0000000..bc4b820 Binary files /dev/null and b/需求提取/单项目需要时间数据清单.docx differ