丨什么是單元測試如何做好_第1頁
丨什么是單元測試如何做好_第2頁
丨什么是單元測試如何做好_第3頁
丨什么是單元測試如何做好_第4頁
丨什么是單元測試如何做好_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

假設你發(fā)現是供電板的供電電壓不足,那你就要繼續(xù)逐級排查組成供電板的各個電子元器件,最終你可能發(fā)現罪魁禍首是一個電容的故障。這時,為了定位到這個問題,你已經花費了大量的時間和精力。單元測試通常由開發(fā)工程師完成,一般會伴隨開發(fā)代碼一起遞交至代碼庫。單元測試屬于最嚴格的軟件測試,是最接近代碼底層實現的驗證,可以在軟件開發(fā)的早期以最小的成本保證局部代碼的質量。同時,你還會發(fā)現,單元測試的實施過程還可以幫助開發(fā)工程師改善代碼的設計與實現,并能在單元測試代碼里提供函數的使用示例,因為單元測試的具體表現形式就是對函數以各種不同輸入參數組合進行調用,這些調用方法構成了函數的使用說明。要做好單元測試,你首先必須弄清楚單元測試的對象是代碼,以及代碼的基本特征和產生錯誤的原因,然后你必須掌握單元測試的基本方法和主要技術,比如什么是驅動代碼、樁代碼和Mock代碼等。因為無論是開發(fā)語言還是語言,都會有條件分支、循環(huán)處理和函數調用等最基本的邏輯控制,如果拋開代碼需要實現的具體業(yè)務邏輯,僅看代碼結構的話,你會發(fā)現所有的代碼都是在對數據進行分類處理每一次條件判定都是一次分類處理嵌套的條件判定或者循環(huán)執(zhí)行,也是在做分類處理講到這里,你有沒有回想起我跟你的“等價類”。沒錯,這些開發(fā)工程師眼中的代通常來講,單元測試的用例是一個“輸入數據”和“預計輸出”的集合。你需要針對確定被測試函數的輸入參數是“輸入數據”的話,那就大錯特錯了。這里我總結了幾種“輸入…后所改寫的所有數據。具體來看有以下幾大類:…MockMock用被測函數的,而樁代碼和Mock代碼是用來代替被測函數調用的真實代碼的。驅動代碼,樁代碼和Mock驅動代碼(Drver)指調用被測函數的代碼,在單元測試過程中,驅動模塊通常包括調用被測函數前的數據準備、調用被測函數以及驗證相關結果三個步驟。驅動代碼的結構,通常樁代碼(Stub)是用來代替真實代碼的臨時代碼。比如,某個函數A的內部實現中調用了一個尚未實現的函數B,為了對函數A的邏輯進試,那么就需要模擬一個函數B,這個模擬的函數B的實現就是所謂的樁代碼。AB(具被測函數ABA你可以用一個函數B來代替真實的函數B,那么這個函數B就是樁函數。AB數B的偽代碼就應該是這個樣子的:Btrue,而當執(zhí)行第二個測試用例的時候,樁函數B應該返回false。A的if-else從這個例子可以看出,樁代碼的應用首先起到了和補齊的作用,使被測代碼能夠獨立編用于實現和補齊的樁函數比較簡單,只需保持原函數的,加一個空的實現,目的Mock代碼和樁代碼非常類似,都是用來代替真實代碼的臨時代碼,起到和補齊的作在我看來,Mock(Assertand對于Mock代碼來說,我們的關注點是Mock方法有沒有被調用,以什么樣的參數被調用,被調用的次數,以及多個Mock函數的先后調用順序。所以,在使用Mock代碼的測試中,對于結果的驗證(也就是assert),通常出現在Mock函數中。對于樁代碼來說,我們的關注點是利用StubStubStub(也就是assert),可以參考馬丁·福勒(MartinFowler)的著名文章《Mock代碼不是樁代碼》(MocksAren’tStubs)。Mock你需要確定單元測試框架的選型,這和開發(fā)語言直接相關。比如,Java測試框架是Junit和TestNG;C/C++最常用的單元測試框架是CppTest和ParasoftC/C++testMockMock的語言會有不同的代碼覆蓋率統(tǒng)計工具,比如Java的JaCoCo,JavaScript的最后你需要把單元測試執(zhí)行、代碼覆蓋率統(tǒng)計和持續(xù)集成流水線做集成,以確保每次代碼遞交,都會自動觸發(fā)單元測試,并在單元測試執(zhí)行過程中自動統(tǒng)計代碼覆蓋率,最后以“單元測試通過率”和“代碼覆蓋率”為標準來決定本次代碼遞交是否能夠被接受。代碼要做到功能邏輯正確,必須做到分類正確并且完備無遺漏,同時每個分類的處理邏輯必須正確;單元測試是對軟件中的最小可測試單元在與軟件其他部分相的情況下進行的代碼級 不得售賣。頁面已增加防盜追蹤,將依法其上一 02|如何設計一個“好的”測試用例下一 04|為什么要做自動化測試?什么樣的項目適合做自動化測試寫言寫言小 6黑 5一位說在推行c#的單元測試,我們這邊就是用的c#,框架之前用的Nunit,由于數據性 海羅沃 4輸入什么輸出什么,預計結果是什么等以便codereview時可以快速的知道這段代碼是做什么的,甚至一些大功能還要帶上usecase的id方便追溯原始需求,在測數據持久化層測試 現,被測函數可能會完全被Mock代碼取代了??谒?2 譚 寫打哪元測試,同事們都說代價太大,最后也沒執(zhí)行起來。感覺測試

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論