2013-01-10 46 views
1

爲了確保這個問題對於FAQ中的標準具有足夠的具體性,我只是問以下內容:什麼是一些來源,討論將單元測試應用於特定功能的最常見方法,通常是依賴於供應商數據或其他非常具體的數據的功能,因此合成數據在測試中無益?如果你對更多背景感興趣,請閱讀下文。單元測試一個非常特定的功能

背景:

我寫單元測試經常在我每天的代碼開發,但我也儘量讓我的代碼爲抽象的和可重複使用成爲可能。在我加入的一個新項目中,很多情況下代碼由非常特定的函數組成,這些函數旨在接受非常特定的格式化輸入數據並將輸出數據存儲到數據庫表中。大部分輸入數據由供應商數據或其他內部數據組成,可通過調用供應商和內部API訪問。

到目前爲止,我唯一的想法是測試輸入數據格式不正確時遇到的故障種類。我一定會寫這個測試,但對於我們的測試團隊來說,這對我們來說是無用的。更有用的測試應該檢查這些數據操作的邏輯是否正確,包括根據輸入數據檢查輸出數據的準確性。

不幸的是,我沒有任何基準數據集,我明確知道輸出應該是什麼。其他人建議創建我自己的綜合輸入數據(如我可以預測輸出應該是什麼的所有1的矩陣或某種設計的矩陣)。不幸的是,該函數執行的操作非常非線性(按百分位加權歸類,並在每個百分位數組中進行彙總統計)。任何基於完全設計的合成輸入數據的測試對我們來說都不會很有用,它的格式化時間成本,然後寫入一些合成輸出數據庫表並閱讀它以檢查單元測試類型使得這樣的測試毫無價值。

我知道單元測試應該只測試一種行爲。我只是不確定如何分解一個函數來完成某些功能,比如在加權百分位數分組中彙總複雜的統計數據,並將其歸結爲測試的「一件事」。

在此設置中使用了哪些標準?

+0

更適合http://programmers.stackexchange.com也許?! – Songo

回答

0

我遇到了非常大的方法類似的問題。我的建議是利用依賴注入重構代碼並遵守單一職責原則。然後根據其職責測試每個班級。