PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

31.2. 测试结果评估 #

31.2.1. 错误消息差异
31.2.2. 区域设置导致的排序差异
31.2.3. 日期与时间输出差异
31.2.4. 浮点数表示差异
31.2.5. 行顺序差异
31.2.6. 调用栈深度限制
31.2.7. 伪随机测试差异
31.2.8. 配置参数影响

回归测试的判定原理是将测试脚本的实际终端输出(存放在 src/test/regress/results/ 目录下),与官方标准参考输出(存放在 src/test/regress/expected/ 目录下)通过 diff 工具进行逐行文本比对。比对产生的差异会被完整保存在 src/test/regress/regression.diffs 中。

在某些异构软硬件平台上,即便是完全正常安装且功能完备的系统,也可能会因微小的底层系统差异导致部分测试项报告“失败”。在遇到失败时,应当仔细核验 diff 差异报告,常见的良性微小差异包括:

31.2.1. 错误消息差异 #

操作系统语言区域设置或第三方库版本不同可能导致报错信息字符串存在细微差异。

31.2.2. 区域设置导致的排序差异 #

不同操作系统的 Collation 算法可能导致字符排序输出顺序略有不同。

31.2.3. 日期与时间输出差异 #

系统时区定义数据库或夏令时规则演进可能导致日期时间表示出现差异。

31.2.4. 浮点数表示差异 #

底层 CPU 架构与 C 运行库的浮点数舍入精度差异可能引起末位微小偏差。

31.2.5. 行顺序差异 #

在未显式声明 ORDER BY 的查询中,数据行的物理返回顺序依赖于执行计划,计划不同会导致行顺序改变,这并非缺陷。

31.2.6. 调用栈深度限制 #

操作系统的最大栈深度配额差异可能导致递归深度测试提前终止报错。

31.2.7. 伪随机测试差异 #

涉及伪随机生成器的测试用例在不同硬件平台上可能产出不同的数值。

31.2.8. 配置参数影响 #

不同的基础配置参数(如内存大小)可能影响代价预估并改变计划。