單元測試 Unit Test 之大小

2021-04-15 15:45:40 字數 1330 閱讀 2936

現在,軟體行業的人普遍都知道測試驅動開發,知道單元測試,儘管測試驅動開發在實踐中存在一些爭論,軟體專案本身的一些約束條件或者開發人員的程式設計習慣都可能成為制約因素而不能真正做到100%的測試驅動、寫程式先寫單元測試。然而,必須承認對軟體行業來說,單元測試的理念的確是一種進步,某種意義上說這是這個行業走向成熟的一種跡象。因為,在外界看來的高科技產業-軟體行業,從發展程度來看,相當一部分企業及開發人員還停留在"手工作坊時代"的初級階段:

問題1 - 軟體產品質量的好壞主要由開發人員的"手藝"決定,並沒有一種客觀的可以量化的評測標準來衡量。

問題2 - 軟體的變更甚或開發人員的更替都會導致軟體質量某種程度上的不確定性。

單元測試的出現和流行使得這一現象開始有了改觀,從管理的角度看它可以解決上述兩個問題:

1.單元測試在軟體的最底層發揮質量保證的作用

2.單元測試可以作為一種客觀的質量評測標準,保證軟體的質量的一至性

政治經濟學中說 「生產工具和勞動者決定了生產力水品「 ,套用一下,單元測試的大規模應用可以標誌著軟體開發進入了"工業時代"。

題外話:當今足球的先進理念,相信很多教練都知道,但是並不是每個人都能帶領球隊取得成功。公尺盧在中國成功了,杜伊最近的一些列戰績表明他正在走向成功,起碼讓人看到了成功地希望。

同樣,知道單元測試,使用了單元測試並不一定代表你的軟體開發水平真的提高了,誤解及錯誤的應用反而適得其反。有乙個相關的例子很知道玩味,pmp培訓課上講到質量管理的時候,強茂山老師舉了乙個例子,他說,現在很多公司都上了iso質量體系認證,判斷這個企業是不是真的實現了iso的要求,乙個最簡單的方法就是看這個企業冊成本在實施了iso後是上公升了還是下降了。

那麼怎樣的單元測試才是正確的,使之真正對軟體開發起到正作用而不是一種負擔?

單元測試原則:

1。 測試**盡求簡潔 - 單元測試的目的是檢驗被測試的**(生產** production code)是否正確,複雜的測試**,只會增加開發人員的工作負擔 - 既要維護成產**又要維護測試**。

2。 測試**要明確測試範圍 - 範圍(scope)在軟體行業中並不陌生,大到專案範圍,小至一段測試**的測試範圍。單元測試,作為被測試**的呼叫方(caller, consumer),應該只關心被測試**的公有方法及屬性。因為:

a)被測試**(生產**)中只有其公有部分才會被外部**呼叫,公有部分的測試通過即可保證被測試**可以正常工作以供呼叫。

b)物件導向思想中有乙個封裝(encapsulation)概念,封裝使乙個外部呼叫者只關心被呼叫著的公有介面,被呼叫者的內部實現的改變並不會影響外部呼叫者。只對成產**的公有部分進行測試,使得測試**易於維護,不會因為生產**的內部實現(private)的改變而被迫改變,這在乙個複雜軟體中尤為重要,維護測試**不應該成為一種額外的負擔。

單元測試 Unit Test 之大小

現在,軟體行業的人普遍都知道測試驅動開發,知道單元測試,儘管測試驅動開發在實踐中存在一些爭論,軟體專案本身的一些約束條件或者開發人員的程式設計習慣都可能成為制約因素而不能真正做到100 的測試驅動 寫程式先寫單元測試。然而,必須承認對軟體行業來說,單元測試的理念的確是一種進步,某種意義上說這是這個行...

單元測試 Unit Test 之大小

現在,軟體行業的人普遍都知道測試驅動開發,知道單元測試,儘管測試驅動開發在實踐中存在一些爭論,軟體專案本身的一些約束條件或者開發人員的程式設計習慣都可能成為制約因素而不能真正做到100 的測試驅動 寫程式先寫單元測試。然而,必須承認對軟體行業來說,單元測試的理念的確是一種進步,某種意義上說這是這個行...

單元測試 Unit Test 之大小

現在,軟體行業的人普遍都知道測試驅動開發,知道單元測試,儘管測試驅動開發在實踐中存在一些爭論,軟體專案本身的一些約束條件或者開發人員的程式設計習慣都可能成為制約因素而不能真正做到100 的測試驅動 寫程式先寫單元測試。然而,必須承認對軟體行業來說,單元測試的理念的確是一種進步,某種意義上說這是這個行...