一個新手為老程式碼寫測試程式的心得
我堅持去健身房鍛鍊身體,練習舉重,我喜歡這種讓自己變得更強壯、更健康的感覺。大約兩個月前,我的膝蓋開始感覺抽痛,但我仍然堅強去鍛鍊。
我一心想讓自己更強壯,完全忽視了腿上的健康問題,仍然強迫自己繼續舉重。你可以想象出,膝蓋上的痛沒有好轉,每一次精疲力盡的鍛鍊後我都需要更長時間的恢復。
作為一個在Rackspace公司的初級程式設計師(在Airbrake開發組),我經常會有一種相似的感覺,它催促我不停的大量產出程式碼,以為這樣能讓產品更強壯。當正如我的膝蓋每次在下蹲時都要忍受痛苦一樣,未經測試的老的功能特徵在大量出現的新功能的重壓下開始變形,開始斷裂。
最終我的物理治療師說服我應該重點做康復鍛鍊,恢復前不要再去舉重。他說,當膝蓋上的問題好了之後,肌肉變得更結實有力後,我的進步會更快,也更不容易弄傷自己,讓自己痛苦。
銘記了這些忠告,我看到了它和工作之間的聯絡。我強迫自己去給老程式碼、老功能寫測試程式碼,這樣使得我的開發進度更快,對程式碼更有信心,不再擔心開發新程式碼時會破壞老程式碼的功能。
下面是我在這個轉變過程中學到的關鍵幾點:
開發工具很重要
我使用RSpec, Capybara, FactoryGirl 和 Selenium 來測試我的Rails應用。在寫測試程式碼之前,你要先研究一下這些工具。否則,除錯這些測試程式碼浪費你大量的時間。
一些簡單的任務,例如在測試前和測試後清除資料庫,它們對保證你能正確的、快速的、可重複的測試起著重要作用。對於這些任務,你可以使用這個database_cleaner gem。
如果你是團隊中第一個來寫測試程式碼的人,這個時候測試工具的選擇尤其重要,它會影響團隊其他成員對測試的接受。整個團隊都要提交測試程式,所以你要讓這個過程儘可能的簡單,——採用強大、靈活的工具。
現有的程式碼只是告訴你現在做成了什麼樣,但不是告訴你程式碼實際應該是這樣。
當開始測試別人的程式碼時,我發現有個習慣,首先假設這些程式碼是正確的,符合要求的,所以這些程式碼中能夠通過測試用例。有時這樣是沒問題的,但有時這些程式碼之所以通過測試只是因為測試程式碼是按照它們寫的。
你忍不住會圖省事,會假設所有的這些程式碼是最新的,符合要求的,然後寫的測試來證實這些假設。這就導致了一種反向的測試驅動開發模式:程式碼成了測試的依據和標準。
安全的做法是探求程式碼最初的意願,資深的程式設計師更喜歡寫出很明晰的程式碼,你能通過程式碼看出它試圖實現的功能。
完全測試是不可能的,不要這樣要求自己
為整個專案寫測試程式,你可能需要將它當作一種全職工作來對待。當然,我們都希望100%(+)的測試覆蓋率,就像我們都希望洗滌盆裡沒有髒盤子。然而,另外一種方法是當你需要盤子時清洗所需的盤子。我們用這種策略為新程式碼寫測試程式,老程式碼中我們開發的過程中遇到時再寫測試程式。
我建議新程式設計師應該去為老程式寫測試,這樣它能強迫你學習老程式碼庫,讓你獲得更深的肌肉記憶力。但一定要遵循上面的這些原則。
英文原文:What I Learned as a Junior Developer Writing Tests for Legacy Code
相關文章
- 程式碼寫作測試
- 為程式碼編寫穩定的單元測試 [Go]Go
- 【譯】如何寫一手漂亮的測試程式碼
- Objective-C:寫一份可測試的程式碼Object
- 使用 xunit 編寫測試程式碼
- 如何編寫優秀的測試程式碼|單元測試
- Python新手教程:40行python程式碼寫一個桌面翻譯器Python
- Go測試開發(一) 怎麼寫Go程式碼Go
- 前端進階-編寫測試程式碼前端
- 作為一個軟體測試新手,你知道軟體測試的幾個方向嗎?
- 今天寫了一個可以測試併發數和執行次數的壓力測試程式碼。(Java)Java
- 前端筆試之手寫程式碼(一)前端筆試
- 不用寫程式碼,也能做好介面測試
- 老程式設計師的10個程式設計小技巧,教你寫出高質量程式碼!程式設計師
- 如何寫出具有良好可測試性的程式碼?
- 測試程式碼
- 一個老程式設計師的程式設計之路,寫給年輕的程式設計師們程式設計師
- 七個不一樣的Python程式碼寫法,讓你寫出一手漂亮的程式碼Python
- 看看一個老程式設計師是如何手寫Spring MVC的!程式設計師SpringMVC
- 無需編寫程式碼,API業務流程測試,零程式碼實現API
- 分享一個奇怪得程式碼寫法
- 寫一個簡單的程式碼生成器
- 測試程式碼高亮
- 一個老程式猿的焦慮3
- 測試工程師必須要會寫程式碼嗎?工程師
- .NET Core TDD 前傳: 編寫易於測試的程式碼 -- 單一職責
- 新手的第一個c語言小程式C語言
- MYSQL程式碼顯示測試測試MySql
- 10年老測試工程師的一些心得:結合案例談談迴歸測試和確認測試工程師
- 程式設計師寫了一個新手都寫不出的低階bug,被罵慘了。程式設計師
- 200行程式碼寫一個簡易的dva行程
- JS面試手寫程式碼JS面試
- 前端面試之手寫程式碼前端面試
- JS 筆試手寫程式碼JS筆試
- 一個BAT老程式設計師的忠告!BAT程式設計師
- 何為程式碼質量?——用腦子寫程式碼
- 用Jmeter編寫一個較複雜的測試指令碼JMeter指令碼
- .NET Core TDD 前傳: 編寫易於測試的程式碼 -- 縫
- 程式碼重構與單元測試(一)