2010-06-07 84 views
1

我目前正在與另一位開發人員在集中式開發服務器上進行Web開發。過去這一切都行得通,因爲我們有兩個獨立的項目,我們正在努力並且很少發生衝突。但是,現在我們正在添加第三個(可能的)開發人員。這顯然會影響其他開發人員對我的工作產生影響的問題,反之亦然。爲了解決這個問題,我認爲最好的解決方案是創建一個虛擬機在開發者之間分發以供本地使用。我遇到的問題是涉及到數據庫。如何創建安全的本地開發環境?

鑑於我們都在筆記本電腦上開發,只需保留實時數據的本地副本就顯得很愚蠢。

我已經考慮清理數據,但我無法真正弄清楚如何替換真實的數據,用數據代表人們實際輸入的內容,而不是一遍又一遍地重複相同的信息。每個人的地址變成123測試巷,測試鎮,西澳大利亞州,99999什麼的。這真的值得關注嗎?有沒有工具可以幫助解決這類問題?我正在使用MySQL。理想情況下,如果我清理數據庫,它應該從我可以定期運行的腳本完成。如果我這樣做,我還需要一種方法來減小數據庫本身的大小。 (我想我可以選擇所有在x後創建的記錄,並將它們和相應的表中的所有記錄刪除,這樣並不是什麼大問題。)

我想過的第二種解決方案是加密vm的硬盤驅動器,但我不確定這在速度方面是多麼的實用,以及在丟失/被盜的筆記本電腦的情況下。如果我這樣做,虛擬硬盤驅動器文件本身應該加密還是應該在虛擬機中加密? (我假設後者是可移植的,並且不需要開發者在他們選擇的操作系統上具有任何類型的加密能力。)

第三個是爲每個開發人員創建數據庫的副本在我們的開發服務器上,他們隨後負責通過遷移腳本或您有什麼方式使架構與規範數據庫保持同步。這個解決方案似乎是最簡單的,但並不是隨着更多開發人員的增加而擴展。

你如何處理這個問題?

回答

2

使用虛假數據 - 如果必須投資數據生成器,但請不要在開發環境中使用真實數據,特別是如果訪問該數據可能會受到影響。我對MS SQL的工具更熟悉,但使用谷歌搜索「MySQL data generator」帶來了EMS SqlManagerDatanamic

+0

我不是特別熟悉的工具,但+1「請不要在開發環境中使用真實的數據」!您可能無法預見這有多重要,但*投入時間尋找生成假數據的方法! – 2010-06-07 18:47:12

+0

過去我經常聽到這種說法,也許我只是笨手笨腳,但我沒有看到使用真實數據的問題。僅僅是因爲它被盜的可能性?如果你曾經爲一家軟件公司工作,我可以看到使用真實數據是一個問題。您不想從您的某個客戶導入數據庫。如果您想讓開發人員與實時服務器分離,出於某種原因,我也會遇到問題。還有別的事嗎?我在這裏錯過了什麼? – baudtack 2010-06-07 20:26:09

+0

@docgnome - 貴公司是否有隱私政策?如果是這樣,那麼對於客戶數據的使用和保護方式有何評論?如果數據是公司內部的,那麼您的人力資源政策對這些數據有何看法?如果您使用的是實際數據,則至少必須具有與生產實例中的數據相同的保護級別。坦率地說,我發現這對開發箱來說太具侵入性了。丟失數據的風險(如果數據非常敏感,可能是您的工作 - 是的,電話號碼很敏感)不值得爲開發生成假數據。 – tvanfosson 2010-06-07 21:01:32

0

正如tvanfosson提到的,使用假數據而不是直播。這樣做不僅可以保持實時數據的安全,還可以讓您測試不同的場景,例如國際名稱等。

至於如何分配數據庫,您的模式和創建腳本確實應該在源代碼控制中,因此每個開發人員都可以在他們認爲合適的情況下創建數據庫的本地副本。

0

您可以設置一個燈具(種子數據)系統。您只需提供一次數據,並根據需要將其放入數據庫中。這可以在源代碼控制中進行,以便所有用戶使用/更新燈具。

我認爲自動發電機通常是一個壞主意。他們很難生成可能是真實的信息。賽程將允許你提供這些信息,並且知道你在找什麼。你也可以通過使用燈具來推動驗證器的界限。

第一次設置可能需要一點時間,但我認爲您將獲得更高質量的數據用於測試。

問候,

賈斯汀

+0

取決於你在說什麼樣的測試。對於單元測試,DB應該被抽象出來,模擬數據應該被用於IMO。對於集成/ UI測試,您可以在很大程度上使用規則或正則表達式(無論工具允許)使用生成的數據。我認爲數據庫不應該包含無效數據,即不應允許用戶輸入的數據。如果您有一些有效但不易生成的邊緣案例,這些邊緣案例總是可以通過手工生成。一旦你有一個好的測試數據集,它應該在版本控制中進行備份和維護。 – tvanfosson 2010-06-07 21:04:44

相關問題