Files
backend/docs/测试用例-Pub高级搜索.md
T
34047007@qq.com 62ca8fa6b8
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
chore: batch commit remaining changes
Includes search engine improvements, Alembic migrations,
new services (pubmed_daily_update, query_expansion),
frontend updates, and documentation sync.
2026-07-27 08:35:12 +08:00

110 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Pub高级搜索 测试用例
## 测试环境
打开 <http://localhost:5173/advanced-pub-search>
---
## 1. Search Builder(查询构建器)
| 步骤 | 操作 | 期望结果 |
|------|------|----------|
| 1.1 | AND 状态下,Field 选 Title,输入 `lung cancer`,点 Add | Query Box 显示:`"lung cancer"[TI]` |
| 1.2 | 把 AND 改成 ORField 选 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高级搜索页一致 |