2011-07-01 44 views
1

在我們的組織中,我們有一箇舊的遺留系統,需要一個純文本密碼。集成測試需要密碼時如何保證密碼安全?

當從我們的.Net網絡服務進行調用時,我們需要提供我們自己的用戶名/密碼,所以在編寫集成測試時,我們對憑證進行了硬編碼。

測試使用NUnit執行,並且只在本地機器上執行。什麼是保護我們的密碼的最佳方式,而不將他們暴露給檢查源代碼的其他開發者?

回答

3

您可以使用屬性文件。每個開發人員在自己的機器上都有自己的文件,但系統始終假定此屬性文件將與變量一起存在。

當我們使用像Subversion這樣的工具時,我們通常會有一個名爲「properties.txt.tmpl」的文件,它是屬性文件的主要定義。然後,每個開發人員將負責將其複製到properties.txt,並確保對.txt.tmpl文件所做的任何更改都發送到其本地副本。

然後,我們所要做的就是設置Subversion忽略properties.txt文件,並且不會產生任何衝突。

+0

對我而言,這可能是最好的解決方案,一個專門的開發者帳戶將是理想的,但我們組織的輪子變得緩慢,這是阻力最小的路徑! – Andronicus

2

如何作爲一個組織,你做一個帳戶在機器上專門爲用戶名開發和密碼密碼測試。如果你正在對這臺機器寫集成測試,我假設它不是生產,所以沒有人會介意虛擬賬戶......(我假設)。這就是我們在我的公司所做的,每個服務器,數據庫,Web服務等在開發/測試環境中都有一個帳戶。

1

就像Roly說的那樣,你應該有一個單獨的測試數據庫和一組已知的數據。您的集成測試可以使用「測試」組憑據來運行。

然後,所有您需要做的是建立你的測試收拾妥當後,自己(如果他們創造的記錄,刪除它們,復位狀態標誌,等等)。這具有明顯的優勢,可讓您安排集成測試作爲更大系統測試的一部分運行,並使測試更加脆弱。

在一般情況下,針對本地數據庫運行的集成測試都將是脆弱的,因爲你不能依賴於數據是從運行之間是一致的。如果您爲測試用例設置數據並針對它運行集成測試,那麼它將打破從生產備份還原的第二步。另一位開發人員不能保證與您具有相同的測試數據,因此如果其他人正在處理您的代碼並運行測試,則可能會中斷測試。或者,如果您只是選擇一些不太可能改變的舊數據進行測試,則無法保證在某些時候不會有任何改變。然後,巴姆,失敗的考驗。

我有好運氣與具有具有運行集成測試的唯一目的的專用測試服務器。重要的部分是確保數據始終保持一致,並且即使在失敗的情況下,每個測試都能正確清理。