深刻 Python :Dive Into Python 中文版 讀書筆記 第13,14,15單元測試

第 13 章 單元測試

13.4. 正面測試 (Testing for success) 13.5. 負面測試 (Testing for failure) 測試有效輸入還不夠,還必需測試無效輸入,並且要按預期失敗形式執行 13.6. 完備性檢測 (Testing for sanity) 測試的一條基本規則:每一個測試用例只回答一個問題。 另外一個基本規則:每一個測試用例必須能夠與其餘測試用例隔離工做,每一個測試用例是一個「孤島」,下降測試間的藕合程序員

第 14 章 測試優先編程

當全部測試都經過了,中止編程。正則表達式

第 15 章 重構

不要怕麻煩,今天的單元測試就是明天的迴歸測試 (regression test) 15.2. 應對需求變化 全面的單元測試意味着沒必要依賴於程序員的一面之詞 15.3. 重構編程

  • 預編譯正則
  • 使用新的表達式,如: M?M?M?M? 替換爲 M{0,4}
  • 在正則裏增長註釋,使用re.VERBOSE 選項,告訴 Python 正則表達式裏有內聯註釋,像下面這樣

<pre> romanNumeralPattern = re.compile(''' ^ # beginning of string M{0,4} # thousands - 0 to 4 M's (CM|CD|D?C{0,3}) # hundreds - 900 (CM), 400 (CD), 0-300 (0 to 3 C's), # or 500-800 (D, followed by 0 to 3 C's) (XC|XL|L?X{0,3}) # tens - 90 (XC), 40 (XL), 0-30 (0 to 3 X's), # or 50-80 (L, followed by 0 to 3 X's) (IX|IV|V?I{0,3}) # ones - 9 (IX), 4 (IV), 0-3 (0 to 3 I's), # or 5-8 (V, followed by 0 to 3 I's) $ # end of string ''', re.VERBOSE) </pre>性能

15.4. 後記單元測試

  • 能夠考慮用查表法提升性能
  • 單元測試給了你大規模重構的信心

15.5. 小結 單元測試是一個強大的概念,使用得當的話既能夠減小維護成本又能夠增長長期項目的靈活性。一樣重要的是要意識到單元測試並非「靈丹妙藥」,也不是「銀彈」。編寫好的測試用例很困難,保持其更新更須要磨練。單元測試不是其它形式測試的替代品,好比說功能性測試、集成測試以及可用性測試。但它切實可行且功效明顯,一旦相識,你會反問爲何以往沒有應用它。測試

總結:

  • 先寫測試用例,再寫實現代碼
  • 除了測試正確的結果,也要測試異常或錯誤的狀況
  • 爲解決 Bug 或適應新需求而新增和升級測試用例。
  • 爲改進性能、可伸縮性、可讀性、可維護性和任何缺乏的特性而勇敢的重構代碼。
相關文章
相關標籤/搜索