Автоматизация тестирования с приложением postgresql - PullRequest
0 голосов
/ 14 ноября 2008

Я хочу автоматизировать тесты в моем веб-приложении, и оно использует postgresql. Кто-нибудь знает, как определить точку восстановления в базе данных postgresql и восстановить прежнее состояние? Я что-то слышал о восстановлении на момент времени, но я не знаю, если это то, что мне нужно.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 14 ноября 2008

Прежде всего, не делайте этого в вашей производственной базе данных.

Правильный способ (тм) - использовать транзакции для того, что они стоят. В postgres вы можете даже вкладывать их, используя точки сохранения (к которым вы можете выполнить откат).

test=# create table foo (foo_id serial primary key, bar varchar);
NOTICE:  CREATE TABLE will create implicit sequence "foo_foo_id_seq" for serial column "foo.foo_id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "foo_pkey" for table "foo"
CREATE TABLE
test=# begin; insert into foo (bar) values ('test');
BEGIN
INSERT 0 1
test=# savepoint sp1;
SAVEPOINT
test=# insert into foo (foo_id, bar) values (1, 'test');
ERROR:  duplicate key value violates unique constraint "foo_pkey"
test=# rollback to sp1;
ROLLBACK
test=# select * from foo;
 foo_id | bar  
--------+------
      1 | test
test=# -- note that you're still in a transaction

Если это не подходит (из-за ограничений программного обеспечения или по другим причинам), вы всегда можете хранить несколько дампов вашей базы данных в файлах, которые вы можете легко восстановить; и / или иметь скрипт, который автоматически выгружает вашу производственную базу данных в локальную тестовую базу данных.

Кроме того, всегда не забывайте сохранять изменения схемы в управлении версиями (или как минимум некоторые файлы .sql); облегчает обновление вашей производственной базы данных после того, как вы разработали что-то новое, используя свою тестовую базу данных.

PITR в первую очередь предназначен для горячего резервирования / резервного копирования.

0 голосов
/ 14 ноября 2008

PITR предназначен для сценариев резервного копирования в онлайн-хранилище, он предназначен для создания резервных копий без прерывания операций и возможности восстановления данных в случае аварии, а не для тестирования приложений. Восстановление данных не онлайн и довольно сложно.

Я думаю, что правильный способ тестирования состоит в том, чтобы иметь базу данных, которую вы можете легко удалить и восстановить из стандартной резервной копии, и затем вы можете повторить тесты, используя стандартные сценарии резервного копирования / восстановления в автоматизации. В противном случае, другой способ проверить это - использовать транзакции. Каждый выполненный вами тест будет включен в транзакцию, которую вы откатите после выполнения теста.

BEGIN;
SELECT ...
INSERT ...
UPDATE ...
DELETE ...

<Here go queries to check if everything is alright, setting the test result>
ROLLBACK
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...