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

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.4 已于 2010 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

第 26 章 回归测试

回归测试是针对PostgreSQL中 SQL 实现的一套全面测试。它们既测试标准 SQL 操作,也测试 PostgreSQL的扩展能力。从 PostgreSQL 6.1 起,回归测试对每个正式发行版都是最新的。

26.1. 运行测试 #

回归测试既可以针对一个已安装并正在运行的服务器运行,也可以使用构建树中的一个临时安装来运行。此外,还有“并行”和“顺序”两种运行测试的模式。顺序方法依次运行每个测试脚本,而并行方法会启动多个服务器进程来并行运行成组的测试。并行测试可以让人确信进程间通信和锁机制工作正常。由于历史原因,顺序测试通常针对现有安装运行,而并行方法针对临时安装运行,但这并没有技术上的原因。

要在构建之后、安装之前运行回归测试,在顶层目录中键入

gmake check

(或者你可以切换到 src/test/regress 并在那里运行该命令。)这会先构建若干辅助文件,例如一些示例用户定义触发器函数,然后运行测试驱动脚本。最后你应当看到类似

======================
 All 93 tests passed.
======================

的输出,或者一条关于哪些测试失败的说明。更多信息见下文第 26.2 节。

由于这种测试方法运行的是一个临时服务器,当你以 root 用户身份操作时它将无法工作(因为服务器不会以 root 启动)。如果你已经以 root 完成了构建,不必从头再来。只需让回归测试目录可被其他用户写入,以该用户登录,然后重新启动测试。例如

root# chmod -R a+w src/test/regress
root# chmod -R a+w contrib/spi
root# su - joeuser
joeuser$ cd top-level build directory
joeuser$ gmake check

(这里唯一可能的“安全风险”是其他用户可能背着你篡改回归测试结果。管理用户权限时请运用常识。)

或者,在安装之后运行测试。

并行回归测试会以你的用户 ID 启动相当多的进程。目前最大并发度是二十个并行测试脚本,这意味着六十个进程:每个测试脚本有一个服务器进程、一个 psql,并且通常还有一个 psql 的 shell 父进程。因此,如果你的系统对每个用户的进程数有限制,请确保该限制至少在七十五左右,否则并行测试中可能出现看似随机的失败。如果你无法提高该限制,可以通过设置 MAX_CONNECTIONS 参数来降低并行度。例如

gmake MAX_CONNECTIONS=10 check

最多同时运行十个测试。

在某些系统上,默认的 Bourne 兼容 shell(/bin/sh)在要并行管理太多子进程时会出问题。这可能导致并行测试运行锁死或失败。在这种情况下,在命令行上指定一个不同的 Bourne 兼容 shell,例如:

gmake SHELL=/bin/ksh check

如果没有可用的无缺陷 shell,你也可以像上面那样通过限制连接数来规避该问题。

要在安装之后运行测试(见第 14 章),初始化一个数据区域并启动服务器,如第 16 章所述,然后键入

gmake installcheck

除非 PGHOST 和 PGPORT 环境变量另有指示,测试将期望在本地主机和默认端口号上连接服务器。

提交更正

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