巧妙避坑篇——測試代碼時你會犯的 10個錯誤

前言:數據庫

我遇到的大多數開發人員都不怎麼熱衷於測試。有些會去作測試,但大多數都不測試,不肯意測試,或者勉而爲之。我喜歡測試,而且比起編寫新的代碼,愉快地花更多的時間在測試中。我認爲,正是由於專一於測試,我才能夠花更少的時間來編寫新的代碼或修復bug,而且很是有成效。微信

若是你不肯定要不要編寫測試或者並不常寫測試,那麼,下面這些內容將指導你往一個更好的方向發展。架構

正文:ide

1.沒有測試單元測試

咱們很容易毫無緣由地掉入這個陷阱。從如今開始,制定計劃添加測試到你如今正在處理的代碼中,並添加測試到未來的項目中。測試

2.沒有從項目一開始就啓動測試編碼

咱們很難再回過頭去添加測試,而且可能須要改變架構才能添加測試,這樣作最終將須要你花更長的時間才能產出可信任的代碼。從一開始就在項目的生命週期添加測試能夠節省時間和精力。生命週期

3.編寫失敗的測試資源

TDD方法的普及將紅—綠—重構的理念帶到軟件測試世界。這個理念經常被誤認爲應該「經過編寫一個失敗的測試開始」。其實並不是如此。在寫代碼以前建立測試的目的是定義系統的正確行爲應該是什麼。在許多狀況下,它是一個失敗的測試(紅色表示),但它可能會經過一個非決定性的或未實現的測試來表示。開發

4.擔憂未實現測試

軟件開發中的一個大問題就是,代碼和任何關於系統實際上應該作什麼的文檔之間的溝壑。經過擁有一個名稱中明肯定義你最終想要實現的預期行爲的測試,你將從測試中獲得必定的價值,即便將怎麼寫測試目前還不得知。

5.沒有很好地命名測試

命名軟件這件事出了名的很難作好,這一樣適用於測試。關於如何命名測試有幾種流行的約定。不管你使用哪種都沒有關係,只要你可以一向使用,並準確描述正在測試什麼。

6.讓測試作太多事情

又長又複雜的名字一般說明了你想同時測試多件事情。單個測試應該只測試一件事情。若是失敗了也應該在代碼中註明是什麼地方出了錯。你沒有必要爲了知道代碼中出了什麼問題而查看是哪部分測試失敗。這並不意味着你不該該在測試中有多個斷言,但這些斷言應該緊密相關。例如,一個查看訂單處理系統輸出,並確認輸出中是否有一個單一項目以及它是否包含具體項目的測試,是ok的。但一個驗證相同系統的輸出的測試,既建立一個特定項目,又記錄到數據庫中,還發送確認電子郵件,就不行了。

7.沒有實際測試代碼

常常能夠看到測試新手建立過於複雜的模型以及不能實際測試代碼的設置程序。他們可能會驗證模擬代碼是否正確,或者模擬代碼是否和真正代碼作相同的事情,或沒有任何斷言而只是執行代碼。這樣的「測試」都是白費力氣,特別是若是它們的存在只是爲了提升代碼覆蓋率水平的話。

8.擔憂代碼覆蓋率

代碼覆蓋率的理念很崇高,但每每實際價值有限。知道運行測試的時候有多少代碼被執行應該是有用的,但由於它不考慮正在執行代碼的測試的質量,所以就變得沒有意義。代碼覆蓋率在它數值很是高或很是低的時候,是挺博人眼球的。若是很是高,就代表,比起帶來的價值,過多的代碼可能正在被測試。很是低的代碼覆蓋率代表有可能代碼的測試不夠。由於這樣模棱兩可的意思,有的人就不知道單一片斷的代碼是否應該進行測試。我用一個簡單的問題來明確這一點:代碼是否包含重大的複雜性?若是包含,那麼你須要一些測試。若是沒有的話,你就不須要。測試屬性訪問器不過是浪費時間。若是它們失敗的話,那麼比起你正在寫的代碼,你的代碼體系出現了一些更根本的問題。若是你不用看一段代碼,就當即知道一切,那麼它就不重大。這不只適用於代碼,也適用於你寫代碼。若是咱們在任意點重訪代碼,那麼它就須要測試。若是在現有代碼中發現過bug,那就說明這一塊的代碼對其複雜性沒有進行充分的測試。

9.着眼於一種類型的測試

一旦你開始測試,很容易只糾結於一種風格的測試。這是一個錯誤。只用一種類型的測試,你就不能充分測試系統的全部部分。你須要單元測試來確認代碼的各個組件是否可以正確工做。你須要集成測試來確認不一樣組件是否可以協同工做。你須要自動化UI測試來驗證軟件是否能夠如預期使用。最後,你須要爲任何不容易自動化的部分和探索性嘗試進行手動測試。

10.着眼於短時間測試

來自於測試的價值大多數會隨着時間的推移而得到。測試不該該只存在用於確認事情是否正確寫入,而應該隨着時間的推移繼續起做用,而且對於代碼庫作其餘的改變。有迴歸錯誤或新的異常,那麼測試應該重複運行以儘早發現問題,這將意味着錯誤和異常能夠更快,更便宜和更容易被修復。沒有變化(人爲錯誤)可自動和快速執行的測試,是爲何編碼測試如此有價值的緣由。

若是以上這些都不屬於你的狀況,那麼恭喜你!繼續保持開發穩健又有價值的軟件。若是上面有一些確實發生在你身上,那麼是時候作一些改變了。

寫在最後:

漫漫長路,你願一人獨撐,忍受着孤獨與寂寞,承受着體力與肉體的壓榨,只任汗水溶於淚水,可腳步卻從不停歇。好樣的,縱然得不了桂冠,可堅持的你,定會博得最後的掌聲。

天空一直都是藍的,有時會被烏雲給遮蔽,但天空一直都是藍的,那些烏雲總有一天都會飄走的。因此咱們得堅持。

因此小夥伴們若是累了就暫時停歇下來,喘口氣,休息片刻,可是別忘了在休息片刻後,從新背起行囊,繼續前行,相信不忘初心,你終會到達你想要到達的大地方,最終開出一朵屬於本身的一朵花兒來。

願你我相遇,皆有所獲! 歡迎關注微信公衆號:程序媛一菲,下面這些硬核資源就是你的了。

相關文章
相關標籤/搜索