↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本PostgreSQL 7.0 已于 2005 年 5 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

第 34 章 回归测试

摘要

回归测试的说明与分析。

PostgreSQL 回归测试是对嵌入在 PostgreSQL 中的 SQL 实现的一套全面测试。它们既测试标准 SQL 操作,也测试 PostgreSQL 的扩展能力。

回归测试有两种不同的运行方式:"sequential"(顺序)方法和 "parallel"(并行)方法。顺序方法依次运行每个测试脚本,而并行方法会启动多个服务器进程来并行运行成组的测试。并行测试可以让人确信进程间通信和锁机制工作正常。另一个关键区别是,顺序测试过程使用一个已安装的 postmaster,而并行测试过程测试的是已构建但尚未安装的系统。(并行测试脚本实际上会安装到一个临时目录中,并在那里启动一个私有的 postmaster。)

某些安装正确且功能完备的 PostgreSQL 安装可能会因浮点表示和时区支持的特有问题而在其中一些回归测试上"失败"。这些测试目前是通过与参考系统生成的输出做简单的 diff 比较来评估的,因此结果对细微的系统差异很敏感。当某项测试被报告为"失败"时,务必检查期望结果与实际结果之间的差异;你很可能会发现这些差异并不重要。

回归测试最初由 Jolly Chen 和 Andrew Yu 开发,并经 Marc Fournier 和 Thomas Lockhart 大幅修订/重新打包。从 PostgreSQL v6.1 起,回归测试对每个正式发行版都是最新的。

34.1. 回归测试环境

下面的回归测试说明假定以下条件(除非另有说明):

  • 命令是 Unix 兼容的。见下面的说明。

  • 除非另有说明,均使用默认值。

  • 用户 postgres 是 Postgres 超级用户。

  • 源代码路径是 /usr/src/pgsql(其他路径也是可能的)。

  • 运行时路径是 /usr/local/pgsql(其他路径也是可能的)。

通常,回归测试应当以 postgres 用户运行,因为 'src/test/regress' 目录及其子目录为 postgres 用户所有。如果你以其他用户运行回归测试,那么 'src/test/regress' 目录树必须可被该用户写入。

过去必须把系统时区设置为 PST 来运行 postmaster,但现在不再需要了。你可以在正常的 postmaster 配置下运行回归测试。测试脚本会设置 PGTZ 环境变量以确保依赖时区的测试产生期望的结果。但是,你的系统必须提供对 PST8PDT 时区的库支持,否则依赖时区的测试将会失败。要验证你的机器确实支持这一点,请键入:

setenv TZ PST8PDT
date
    

上面的 "date" 命令应当以 PST8PDT 时区返回当前系统时间。如果 PST8PDT 数据库不可用,你的系统可能返回的是 GMT 时间。如果 PST8PDT 时区不可用,你可以显式设置时区规则:

setenv PGTZ PST8PDT7,M04.01.0,M10.05.03
    

回归测试区域的目录布局如下:

表 34.1. 目录布局

目录 描述
目录 描述
input 使用 make all 转换成 sql 子目录中某些 .sql 文件的源文件。
output 使用 make all 转换成 expected 子目录中 .out 文件的源文件。
sql 用于执行回归测试的 .sql 文件。
expected 表示我们期望结果是什么样子的 .out 文件。
results 包含结果实际是什么样子的 .out 文件。也用作表复制测试的临时存储。
tmp_check 由并行测试脚本创建的临时安装。


提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。