2010-01-06 86 views
2

我在數據庫中有一些表和記錄,我用它來手動測試我的(PHP)代碼。假設,我想分享這些記錄和表格結構(例如:與其他開發者);如果添加了一些模型更改或新表,每個人都會意識到。數據庫版本控制開發測試記錄

你如何整合到你的開發過程中這種需求?我的想法是每次提交都將數據庫轉儲到文件中,並在腳本確認修改後提交該文件。並在更新時,更新此文件,並重新加載其他開發數據庫。這可能是通過日食的external tool函數possiple,但我覺得這是一個哈克。

如何處理數據庫中的測試數據,如果它應該受版本控制/共享?

+0

你是否使用任何特定的建築/包裝工具,如螞蟻的Java或使? – extraneon 2010-01-06 17:33:02

+0

@extraneon:是的,我喜歡。 (Ant + crusiercontrol) – erenon 2010-01-06 17:34:55

回答

3

有處理測試數據很多方法,但我們在使用的過程如下:

  • 維護一個項目(Visual Studio的支持數據庫項目)或至少一個文件夾結構,在您的數據庫腳本它
  • 建立一個工具,它能夠抓取最新的腳本,並從他們身上
  • 導出創建數據庫的數據轉換成可以在腳本後執行一些格式已經運行(INSERT語句,或其他)

顯然,隨着數據庫更改,您將需要維護數據,這可能意味着在添加新的非空列時重構數據文件。但是,一旦你有了這個系統,所有的開發人員都可以輕鬆地從我們的源代碼控制中獲取所有的SQL,並輕鬆地生成他們自己的具有測試數據的數據庫。

替代方案是爲所有開發人員維護一個開發數據庫,​​我們也有這個開發數據庫。這樣,您就擁有了最新的模式更改和測試數據的開發數據庫的「黃金」副本。

1

測試數據與測試本身一樣是代碼的一部分,因此它們應該完全處於版本控制之中。由於測試數據通常不會改變每次提交,而只是爲了適應新的測試或模式而進行更新,這是手工完成的,主要是爲了防止數據被測試(使用測試數據)改變而導致數據轉儲。但是,您可以編寫腳本,或者在構建軟件中創建目標。

我們這樣做的方式是使用ant和合並文件。合併文件是SQL中數據文件的更新(alter table,INSERT,UPDATE語句等)。螞蟻目標使用最新版本的測試數據進行初始化,並在其上執行合併文件,並轉儲新數據。這樣,它總是會清楚變化是什麼。

0

SQL數據比較Pro並排工作SQL比較允許靜態數據以及模式被腳本化並存儲在源代碼控制中。它通過使用DML(INSERT)語句保存.sql文件來完成此操作。除了對文件進行腳本編寫外,SQL Data Compare Pro還可以將這些文件部署到數據庫中。

http://www.red-gate.com/products/SQL_Data_Compare/index.htm

聲明:我爲Red Gate的SQL比較工具的產品經理。

3

您可以使用OffScale DataGrove來解決此問題。

DataGrove跟蹤對整個數據庫(模式+數據)的更改,並允許您在任何時間點保存版本。通過一個簡單的操作,您可以恢復到任何版本並快速擁有完全可操作的數據庫。

您可以使用DataGrove爲每個版本或應用程序保存一個版本。您也可以爲每個測試用例保存一個版本。如果你有一個構建服務器,它可以從DataGrove加載數據庫並自動運行每個測試用例。

DataGrove還允許您生成多個單獨的虛擬副本的數據庫。因此,您可以在存儲庫中擁有一個黃金數據庫(如@E​​d建議的),以及所有最後的黃金副本。如果您需要在舊版本中修補代碼,則可以從存儲庫中生成一個與該版本相匹配的虛擬副本。