Глава 14. Регрессивный тест

Оглавление
Регрессивная среда
Схема размещения каталогов
Процедура регрессивного тестирования
Регрессивный анализ

Инструкции регрессивных тестов и анализ.

Регрессивные тесты PostgreSQL - это обширный набор тестов для реализации SQL, встроенного в PostgreSQL, разработанного Jolly Chen и Andrew Yu. Он тестируют как стандартны операции SQL, как расширенные возможности PostgreSQL.

Эти тесты недавно были были исправлены Marc Fournier и Thomas Lockhart и теперь упакованы как функциональные модули, которые легче запускать и понимать. После PostgreSQL v6.1 регрессивные тесты теперь в каждом официальном релизе.

Некоторые правильно установленные и полностью функциональные установки PostgreSQL, могут не пройти некоторые регрессивные тесты из-за различного представления чисел с плавающей точкой и поддержки временных зон. Текущие тесты оцениваются с помощью простого алгоритма "diff", и чувствительны к маленьким системным различиям. Для явно не прошедших тестов, при исследовании различий может обнаружиться, что различия несущественны.

Регрессивное тестирование, отмечаемое ниже, предполагает следующее (исключая замечания):

Регрессивная среда

Регрессивный тест вызывается командой make, которая компилирует программу C, в разделяемую библиотеку в текущем каталоге. Также в текущем каталоге создаются локализованные сценарии shell. Файлы шаблонов вывода в файлах ./expected/*.out. Локализация заменяет макросы в исходных файлах абсолютными именами и именами пользователей.

Обычно, регрессивный тест должен запускаться pg_superuser, т.к. каталог 'src/test/regress' и подкаталоги принадлежат pg_superuser. Если ты запустил регрессивный тест другим пользователем, то он должен иметь право на запись в дерево каталогов 'src/test/regress'.

Прежде было необходимо запускать postmaster с системной временной зоной установленной в PST, но теперь это больше ненужно. Ты можешь запускать регерессивные тесты под обычной конфигурацией postmaster. Сценарий теста устанавливает переменную среды PGTZ, чтобы быть уверенным что тесты зависящие от временной зоны приведут к ожидаемым результатам. Однако, твоя система должна быть обеспечена библиотекой поддержки для временной зоны PST8PDT, или тесты зависящие от временной зоны, не пройдут. Для проверки, что твоя система имеет такую поддержку, набери следующее:

    setenv TZ PST8PDT
    date

Команда "date" выше, должна вернуть текущую системное время во временной зоне PST8PDT. Если база данных PST8PDT недоступна, то твоя система может вернуть время в GMT. Если временная зона PST8PDT недоступна, то можно установить правила временной зоны так:

    setenv PGTZ PST8PDT7,M04.01.0,M10.05.03