健壯性與正確性是不一樣的——一個傾向於使程序儘量保持運行,即便遇到錯誤,一個傾向於使程序儘量正確,不在乎保持運行java
異常分爲兩種——checked exception與unchecked exception編程
兩者的區別在於:ide
那麼結合我以前對繼承關係的理解,——前置條件不能增強,後置條件不能減弱函數
若是父類拋出了一個異常,子類拋出一個更具體的異常——?測試
這我能理解。由於異常也能夠看作方法的後置條件,後置條件不能減弱,固異常變得更加具體是徹底符合的debug
若是父類拋出了一個異常,子類能夠不拋出異常————???3d
那麼這個就只可以理解爲」不拋出任何異常是比拋出某一種異常更加具體的條件。」, 咱們能夠就這樣理解,不跑出異常至關於把異常拋出的條件無限增強。對象
防護式編程(Avoiding debugging),顧名思義,就是爲了減小bug的出現而採用的一系列措施。blog
聽起來很厲害哈哈哈哈,說得倒輕巧。繼承
其實這第一道防線的意思就是減小bug的一些編程技巧,好比說:
也就是老生常談的fail fast
使用Assertion是一個重要技巧,可是哪些東西須要使用asserrtion呢,這也有一些套路的
。。。。。。(這裏真的沒有什麼內容啊)
測試用例很重要,可是也很繁瑣。本學期軟件構造課的實驗中,對我來講的最大的噩夢就是爲本身的代碼寫test用例了。
簡而言之,就是經過對方法的輸入空間和解空間,根據方法的特性來設定測試用例。
一個簡單的例子:
若是要測試BigInteger.multiply(BigInteger b)
如何劃分?
而後只要按照這些劃分來寫測試用例便可。
這是一個很淺顯的例子,事實上ppt與mit的reading中都明確給出了關於等價類劃分的一套證實,但我認爲若是要理解測試用例的書寫,只須要理解
便可。
選擇測試用例的劃分是編程時常常用到的技巧,可是對於考試題來講,還必須會將測試用例書寫下來才行。不要到考場上才慌慌張張想着怎麼排版按什麼格式
黑盒測試就是在不知道方法的內部實現的狀況下,只根據前置條件和後置條件對方法進行測試,這是最經常使用的。
而白盒測試則是對方法的內部實現進行測試 例子?