跳到主要内容

Citation Check Report

目标文档docs/knowledge/04-软件工程实践/02-测试与验证方法论.md 检查日期:2026-06-05 检查人:iforge-citation-check (sonnet,首次跑) 总引用数:19 条 (18 条含 URL,1 条书籍无 URL)


Summary

维度结果
URL 可达16 / 18 (ACM DOI 2 条返回 403,系反爬虫非真失效)
引用一致17 / 19 通过;2 条有问题
可疑编造0 处
有效 Finding3 条 (Section 1: 1, Section 2: 2, Section 3: 0)

Verdict

NEEDS_FIX

无编造,但有 1 条 URL 错误指向 2017 年文件而非 1998 年原文,以及 1 条数值归因模糊(MAPE 136% → 6% 属实,但"误差源是分支预测"表述过强)。另有 1 条 SLICC 描述存在轻微归因漂移。


Section 1:失效 / 指向错误的 URL (NEEDS_FIX)

引用 ID文档位置问题建议
[^chen1998]§蜕变测试URL 指向 TR-2017-04.pdf(2017 年技术报告,即 chen2018 的预印本版),而非 1998 年原始报告 HKUST-CS98-01。实际上 HKUST 已无公开链接指向 CS98-01。选项 A:改 URL 为 https://www.cs.hku.hk/data/techreps/document/TR-2017-04.pdf 并同时把 chen1998chen2018 两条合并说明(原始报告 1998,综述期刊版 2018);选项 B:删除 [^chen1998] 单独引用,在 [^chen2018] 注脚补充"首发于 Chen et al. 1998 技术报告 HKUST-CS98-01"。推荐 B,因为 TR-2017-04.pdf 已是 2018 综述的预印版,重复引用语义混乱。

备注:ACM DOI 两条([^chen2018] [^quickcheck])返回 HTTP 403,系 ACM 反爬保护,非内容失效。Semantic Scholar([^mckeeman])返回 202,系异步渲染,内容存在。其余 15 条 URL 均 200 正常可达。


Section 2:引用不符 (NEEDS_FIX)

Finding 2-A: Akram 2019 误差源归因过强

文档原文(§CI 回归防线):

"定位到分支预测是主要误差源后,把误差从 136% 降到 6%"

源实际内容

  • 136% → 6% MAPE 数值属实,已被 ResearchGate / IEEE Xplore 收录的摘要及 GitHub README 交叉确认。
  • 作者 Akram & Sawalha(二作 Sawalha)属实,2019 PMBS@SC19属实
  • 但"分支预测是主要误差源"过强。原论文的实际贡献是实现了一个 loop predictor(循环预测器),消除了特定类型 microbenchmark 的误差,不是泛指"分支预测是所有误差的主要来源"。改进后的细分 MAPE:控制 benchmarks 9%,依赖 microbenchmarks 5.4%,执行 5.4% → 0.5%,内存 7.7%——误差源是多方面的。
  • 该句的表述把"实现了 loop predictor 改善了某类 benchmark 的 IPC 误差"误述为"锁定分支预测为主要误差源后整体从 136% 降到 6%",结论方向发生漂移。

建议:改写为"通过对 gem5 实现补全包括循环预测器在内的若干配置后,IPC MAPE 从 136% 降至 6%",删去"定位到分支预测是主要误差源"的简化表述。


Finding 2-B: SLICC 断言描述有轻微归因漂移

文档原文(§守恒与活性):

"协议层用 SLICC 内嵌状态不变式断言(如某状态下属主数必须为 1)"

源实际内容[^gem5-slicc] 页面,Learning gem5 Part 3 MSI Debugging):

  • 源页面给出的断言是 assert(getDirectoryEntry(addr).Owner.count() == 1) 加上 assert(getDirectoryEntry(addr).Sharers.count() == 0),条件是 state == State:M(Modified 状态,非泛指"某状态")。
  • 文档写"属主数必须为 1"是 Modified 状态的断言,语义没有错,但省略了 Sharers.count() == 0 这一配对断言,且"某状态"含糊。
  • 严重性:轻微(信息部分省略,方向无误)。

建议:可改为"协议层用 SLICC 内嵌状态断言(如 Modified 状态下 Owner.count() == 1 且 Sharers.count() == 0)"以精确对齐源文献。不改也不影响核心论点。


Section 3:可疑编造

0 处。

所有文献均已核实真实存在:

引用核实结果
Chen 1998 蜕变测试技术报告 HKUST-CS98-01真实。Wikipedia Metamorphic Testing 词条明确写"Chen 在 1998 年技术报告中提出"。
Chen 2018 ACM Computing Surveys 综述,DOI 10.1145/3143561,51(1) Article 4真实。ACM DL 可访问(403 系反爬,非不存在),多个镜像源(figshare/uow、Nottingham repository)确认作者、刊物、卷期、Article 4 号。
Claessen & Hughes 2000 QuickCheck,DOI 10.1145/351240.351266真实。ACM DL 页面存在,DOI 精确匹配,ICFP 2000,ACM SIGPLAN Notices 35(9),pp.268–279。
McKeeman 1998 差分测试,Digital Technical Journal 10(1):100–107真实。dblp 条目 journals/dtj/McKeeman98 及 Tufts 存档 PDF 确认所有细节完全匹配。
CSmith "325+ 编译器 bug",Yang et al. PLDI 2011真实。WebSearch 确认"more than 325 previously unknown bugs",四位作者(Xuejun Yang, Yang Chen, Eric Eide, John Regehr)及 PLDI 2011 均正确。
Feathers 特征化测试,Working Effectively with Legacy Code,Prentice Hall 2004,ISBN 978-0131177055真实。书籍信息属实,ISBN 正确。
Akram & Sawalha 2019,MAPE 136% → 6%,Haswell,PMBS@SC19真实(见 Finding 2-A,数值和作者属实,仅误差源表述偏强)。
gem5 Discussion #778 标题"Testing Approaches for Timing and Statistics Output"真实。WebFetch 直接确认标题和内容,讨论双方(Giacomo / Jason)以及容差比对提案均存在。
BookSim2 deadlock_warn_timeout = 256真实booksim_config.cpp 源码中 _int_map["deadlock_warn_timeout"] = 256 直接可见,liveness 检查属实。
BookSim2 守恒等式 injected = received + in_flight部分核实。booksim_config.cpp 含 #ifdef TRACK_FLOWS 的流量追踪统计,具体守恒等式在实现文件而非配置文件,但 BookSim 文档和论文中守恒统计是其已知特性,无编造迹象,等级为"可信但未直接引用 LOC"。
gem5 quick/long/very-long 三层测试,PR 必须过 quick真实。TESTING.md 直接确认三层定义和时长(数小时/约12小时/数天)及 PR 要求。

Section 4: Pass 引用一览

以下引用通过全部检查,无问题:

引用 ID内容
[^metamorphic-wiki]Wikipedia Metamorphic testing,内容与文档描述一致
[^chen2018]Chen 2018 ACM CSUR 综述,DOI / 卷期 / Article 号均正确
[^quickcheck]QuickCheck DOI 10.1145/351240.351266 正确
[^mckeeman]McKeeman 1998 Digital Technical Journal 10(1):100–107 全部正确
[^csmith]Yang et al. PLDI 2011,"325+" 表述准确
[^feathers]Feathers 2004 书籍,ISBN 正确
[^hypothesis]Hypothesis 官方文章,URL 200
[^proptest]proptest-rs GitHub,URL 200
[^ns3-testing]ns-3 v3.9 testing,URL 200
[^ns3-framework]ns-3 v3.17 testing manual,URL 200
[^booksim]booksim2 booksim_config.cpp,URL 200,deadlock_warn_timeout=256 确认
[^garnet-ni]Garnet NetworkInterface 源码页,URL 200
[^gem5-slicc]gem5 SLICC Debugging,URL 200,Owner/Sharers 断言确认
[^gem5-regression]gem5 旧版回归测试页,URL 200
[^gem5-778]gem5 Discussion #778,标题与内容属实
[^gem5-testing]gem5 TESTING.md,三层分级确认
[^gem5-ci]gem5 CI workflow yaml,URL 200
[^sst-test]SST Test Framework,URL 200

需修复项汇总

优先级Finding位置操作
HIGH[^chen1998] URL 指向 TR-2017-04 (2017) 而非 1998 原文参考资料节删除 [^chen1998] 单独条目,在 [^chen2018] 注脚补注"首发于 1998 技术报告 HKUST-CS98-01"
MEDIUMAkram 2019 "分支预测是主要误差源"表述过强§CI 回归防线末段改为"通过补全循环预测器等若干配置修正,IPC MAPE 从 136% 降至 6%"
LOWSLICC 断言省略了配对的 Sharers.count()==0 且用"某状态"含糊代替 Modified 状态§守恒与活性可选修正,不影响核心论点