2010-04-25 152 views
5

我有幾個代碼測試代碼的文件(它使用「單元測試」類)。如何組織實時數據完整性測試和代碼單元測試?

後來我發現它也會很好地測試數據庫的完整性。我把它放到一個單獨的目錄樹中。 (類似鍵的東西有正確的格式,父節點和子節點都指向正確,等等。編輯:這是一個nosql項目,我不能依賴數據庫級別檢查liek參照完整性等)。

我使用完整性測試相同的單元測試類。

現在我想知道保持這種分開是否真的有意義。爲了測試數據的完整性,我經常複製用於測試處理數據的代碼的部分代碼。

但它是不一樣的。代碼測試使用測試數據庫(每次測試後刪除)和完整性測試連接到實時數據並進行分析。我希望從cron調用完整性測試,並在活動數據庫中發生事件時發送警報。

你會如何處理?這樣的設置是否有標準?你有什麼經驗?

我的傾向是將所有內容放在同一個文件中,這會導致代碼測試也被生產環境中的cron執行。

編輯:也驅使我嘗試保持項目簡單,並且不要讓單個任務或工作流觸及太多文件。沒有所有的測試,我已經有了一個類文件,一個子類,一個相關的類,一些庫(helper)文件和主代碼。測試添加一個文件。它可以幫助我在編碼時集中注意力,減輕壓力,並且我相信我可以減少錯誤,並且可以更快地記住並找到影響較小文件的特定代碼部分。每個工作流程只有一個測試文件可以幫助您。如果我保持獨立,則有2個文件(數據完整性測試和代碼測試),也可能有3個(兩者都有一個通用庫)。抽象會增加複雜性。

EDIT2:我現在重構一點點,只有數據測試文件移動到同一個目錄樹,其中還有代碼測試的生命,但保持不同的文件名爲表示「誠信」或「測試」。我還沒有(合併)這些文件,因爲有兩個人反對,現在我相信他們的經驗和建議。目前我將與代碼複製一起生活。

編輯3:我忘了提及每次運行測試的選擇不是由樹結構決定的。測試枚舉在主文件中,所以我目前有2個主文件「完整性」和「代碼測試」,並且測試可以存在於同一個directury結構中。

也許更多人會回答。感謝您的寶貴意見,這已經幫助我開發最終結構!

編輯4:我現在做了更多的重構。看來我應該保留2個文件,但略有修改的目的。一個針對生產服務器上的預定監控。另一個發展。但是在兩個文件中都可以進行完整性測試或代碼測試。在這兩個文件中,操作都可以在測試數據庫(測試後擦除)和永久性數據庫(每個數據庫都有一個永久性數據庫,生產服務器和開發服務器)上執行。還有一件重要的事情:我發現自己將大量通用代碼從測試文件移動到類文件。所以這些類也會獲得僅用於測試的功能。我喜歡這個,感覺很乾淨。我還沒有創建一個在兩個測試前端之間共享的測試庫,這段代碼已經到了目前正在嘗試的obejct的類文件中。

請注意,下面的評論與「user89021」簽署,但它是我,karlthorwald。我無能爲力。

回答

4

你應該分離從數據庫中的「純」的單元測試相關的測試。
考慮到優勢,擁有兩個不同程序集的成本非常低 - 您可以在任何機器上運行一套快速,無需環境設置的必需測試,而測試數據庫完整性的較慢套件只能針對特定地方(如建立服務器)。

另一個好處是可以有兩個運行不同測試套件的構建過程(快速和夜間)。

爲了避免重複代碼,您可以使用兩個測試套件都需要的常用方法/操作來創建另一個程序集。不要太擔心重複實際的測試,因爲你正在測試不同的東西(邏輯或數據庫),所以遲早你的測試會變得非常不同,這取決於你想測試的東西。

4

你的分離方法很好。

您對代碼重複的關注是100%有效的。

該解決方案相當直截了當 - 抽象出測試之間的通用功能 - 例如, 「RunTest」,「AnalyzeResult」,「ConnectToDB」 - 放入一個公共庫(您沒有指定哪種語言,但我認爲它有一個庫的概念),可以傳遞配置詳細信息,例如連接哪個數據庫。

然後獨立於單元測試驅動程序和完整性測試驅動程序使用該庫 - 如果您技術熟練/夠幸運,可能只有非常少的配置代碼(例如,要連接哪個數據庫,報告結果以及運行哪些測試)。

類似地,如果需要的話,公共輸入端/數據集可被放置在公共目錄

+0

謝謝。我沒有指定,因爲我想避免使用語言標記我的問題。圖書館,對象,繼承,這裏的一切可能。 – user89021 2010-04-25 08:12:08

+0

接受答案並不容易,因爲他們都很好,幫助了我。非常感謝你。 – user89021 2010-04-26 09:09:20

0

還有一個答案。你有兩種類型的測試。我想要做的是解決完整性測試。您可能想要做的是將完整性測試作爲產品代碼的函數。 IOW,作爲系統的一部分具有完整性。

您已經提到重複是一個問題,並且您正在重構以消除重複。重構的代碼當然有開發測試?

系統監控可以是生產代碼。所以你編寫的代碼成爲系統的一部分。

這件事情的好處是,你通過開發測試發展你的代碼。

+0

謝謝。 Y我們的回答確實對我有幫助,特別是「系統監控可以成爲生產的一部分」。這3個答案讓我的發展有了很大的提高! – user89021 2010-05-04 19:30:35