# Pub高级搜索 测试用例 ## 测试环境 打开 --- ## 1. Search Builder(查询构建器) | 步骤 | 操作 | 期望结果 | |------|------|----------| | 1.1 | AND 状态下,Field 选 Title,输入 `lung cancer`,点 Add | Query Box 显示:`"lung cancer"[TI]` | | 1.2 | 把 AND 改成 OR,Field 选 Author,输入 `Smith J`,点 Add | Query Box 显示:`"lung cancer"[TI] OR "Smith J"[AU]` | | 1.3 | Field 选 All Fields,输入 `pembrolizumab`,点 Add | Query Box 显示:`"lung cancer"[TI] OR "Smith J"[AU] AND pembrolizumab` | | 1.4 | **引号去重**:Field 选 Title,输入 `"already quoted"`,点 Add | Query Box 最后追加 `"already quoted"[TI]`(不会出现 `""already quoted""`) | | 1.5 | **Enter 快捷键**:Field 选 All Fields,输入 `test`,按 Enter | 同点 Add,自动追加到 Query Box | ## 2. Query Box(查询框) | 步骤 | 操作 | 期望结果 | |------|------|----------| | 2.1 | 手动输入:`"breast cancer"[TI] AND "trastuzumab"[TIAB]` | Translation Table 显示 2 行:`[TI] Title` / `[TIAB] Title/Abstract` | | 2.2 | 追加 `AND 2022:2024[DP]` | Translation Table 新增 1 行:`[DP] Publication Date` → `2022:2024` | | 2.3 | 测试 `NOT` 查询:`"lung cancer"[TI] NOT "mouse"[MH]` | 前端验证通过,不报错 | | 2.4 | **长日期格式**:`2020/01/01:2020/12/31[DP]` | Translation Table 正确显示 Date Range | | 2.5 | **括号嵌套**:`("a"[TI] OR "b"[TI]) AND "c"[TIAB]` | 验证通过 | | 2.6 | **PMID**:`12345678[PMID]` | Translation Table 显示 `[PMID]` 行 | ## 3. 验证规则 | 步骤 | 操作 | 期望结果 | |------|------|----------| | 3.1 | Query Box 为空,点 Search | 提示"请输入查询" | | 3.2 | 输入 `AND lung cancer`(以运算符开头) | 提示"查询不能以布尔运算符开头" | | 3.3 | 输入 `lung cancer AND`(以运算符结尾) | 提示"查询不能以布尔运算符结尾" | | 3.4 | 输入 `a AND AND b`(连续运算符) | 提示"不允许连续使用布尔运算符" | | 3.5 | 输入 `(a AND b`(缺少右括号) | 提示"括号不匹配" | | 3.6 | 输入 `a AND b)`(多余右括号) | 提示"多余的右括号" | | 3.7 | 输入 `"test"[INVALID]` | 提示"字段标签 [INVALID] 不合法" | ## 4. Search(搜索执行) | 步骤 | 操作 | 期望结果 | |------|------|----------| | 4.1 | 输入 `"lung cancer"[TI]`,点 **Search** | 跳转到 `/search?q="lung cancer"[TI]`,显示结果 | | 4.2 | 检查搜索结果 | 标题字段匹配 "lung cancer" 的文献,数量 > 0 | | 4.3 | **OR 查询**:回到 Pub高级搜索页,输入 `"lung"[TI] OR "cancer"[TI]`,点 Search | 结果比 4.1 多(应该是两个词各自结果的并集) | | 4.4 | **NOT 查询**:`"lung cancer"[TI] NOT "review"[PT]`,点 Search | 结果比 4.1 少(排除了 review 类型) | | 4.5 | **日期范围**:`2024:2025[DP] AND "cancer"[TI]`,点 Search | 只返回 2024-2025 年的文献 | | 4.6 | **MeSH 查询**:`"lung neoplasms"[MH]`,点 Search | 返回带有 Lung Neoplasms MeSH 标签的文献 | | 4.7 | **MAJR 查询**:`"lung neoplasms"[MAJR]`,点 Search | 比 4.6 少(仅 Major Topic) | | 4.8 | **PMID 精确搜索**:`36261522[PMID]`,点 Search | 精确返回该文献 | | 4.9 | **DOI 搜索**:已知某篇 DOI,输入 `"10.xxxx/xxxx"[DOI]`,点 Search | 精确返回该文献 | | 4.10 | **多字段复杂查询**:`("lung cancer"[TI] OR "nsclc"[TIAB]) AND 2023:2025[DP] NOT "case reports"[PT]`,点 Search | 执行复杂布尔查询,返回结果 | ## 5. Search History(搜索历史) | 步骤 | 操作 | 期望结果 | |------|------|----------| | 5.1 | 执行 4.1 的搜索(`"lung cancer"[TI]`) | 成功后 History 出现 `#1`,显示查询、结果数和时间 | | 5.2 | 执行 4.3 的搜索(OR 查询) | History 出现 `#2` | | 5.3 | 刷新页面 | #1 和 #2 仍然存在(localStorage 持久化) | | 5.4 | 点击 `#1` | `#1` 追加到 Query Box 末尾 | | 5.5 | Query Box 中写 `#1 AND #2`,点 Search | resolve 后正确跳转到搜索结果页 | | 5.6 | 输入 `#999`(不存在的编号),点 Search | 提示"历史引用 #999 不存在" | | 5.7 | 点 `#1` 行的 ✕ 按钮 | #1 从 History 中删除 | | 5.8 | 点 **Clear All** | 所有历史被清空,显示"暂无搜索历史" | | 5.9 | 点 **Download** | 下载一个 `.tsv` 文件,内容包含所有历史记录 | ## 6. Combine(组合历史查询) | 步骤 | 操作 | 期望结果 | |------|------|----------| | 6.1 | 先搜索 2 个不同查询(如 `"lung"[TI]` 和 `"breast"[TI]`) | 分别产生 #1 和 #2 | | 6.2 | Combine 行:输入框 A 写 `1`,选 `AND`,输入框 B 写 `2`,点 Combine | Query Box 追加 `#1 AND #2` | | 6.3 | 点 Search | 自动展开为 `("lung"[TI]) AND ("breast"[TI])`,搜索结果正确 | | 6.4 | 输入框 A 写 `#1`,输入框 B 写 `#2`(带 # 前缀) | 同样正常工作,不会出现 `##1` | ## 7. Add to History(仅加入历史) | 步骤 | 操作 | 期望结果 | |------|------|----------| | 7.1 | 输入 `"targeted therapy"[TI]`,点 **Add to History** | 提示"#3 已加入历史(N 条结果)",Query Box 不变 | ## 8. 暗色模式 | 步骤 | 操作 | 期望结果 | |------|------|----------| | 8.1 | 切换到暗色模式(如果有切换开关) | 页面正常显示 | | 8.2 | 点击 Search Builder 的 Field 下拉框 | 下拉弹窗选项文字在 hover/选中时显示白色 | | 8.3 | 点击任意按钮(Search/Clear/Add) | 按钮文字始终白色可见 | ## 9. 响应式 | 步骤 | 操作 | 期望结果 | |------|------|----------| | 9.1 | 浏览器窗口缩窄到 < 768px | Builder 变垂直排列,下拉框全宽 | | 9.2 | 手机宽度下测试 | 无水平溢出,所有功能正常 | --- ## 回归检查 | 检查项 | 期望 | |--------|------| | 首页搜索框旁的 Pub高级搜索按钮(代码图标) | 正常显示,点击跳转 | | 首页原有"高级搜索"齿轮按钮 | 不受影响,功能不变 | | 搜索结果页宽度 | 与首页、Pub高级搜索页一致 |