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

6.0 KiB
Raw Blame History

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 Date2022: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 PMID12345678[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高级搜索页一致