🍅?點擊文末小卡片?,免費獲取軟件測試全套資料,資料在手,漲薪更快??
一、什么是單元測試?
單元測試是指,對軟件中的最小可測試單元在與程序其他部分相隔離的情況下進行檢查和驗證的工作,這里的最小可測試單元通常是指函數或者類;單元測試屬于最嚴格的軟件測試手段,是最接近代碼底層實現的驗證手段,可以在軟件開發的早期以最小的成本保證局部代碼的質量。另外,單元測試都以自動化的方式執行,所以在大量回歸測試的場景下執行單元測試,更能提高測試效率,另外,也可以幫助開發工程師改善代碼的設計與實現。
代碼的基本特征:
單元測試的對象是代碼,代碼的開發語言多種多樣,程序的功能也千變萬化,但是其基本特征還是順序執行、條件分支、循環處理和函數調用等最基本的邏輯控制。
代碼產生錯誤的原因:
如果有代碼分類遺漏,就會產生缺陷;如果代碼分類錯誤,也會產生缺陷;如果代碼分類正確也沒有遺漏,但是代碼分類時的處理邏輯錯誤,也同樣會產生缺陷。在具體的工程實踐中,開發工程師為了設計并實現邏輯功能正確的代碼,通常會有如下的考慮過程。
1、如果要實現正確的邏輯功能,會有哪幾種正常的輸入?
2、是否有需要特殊處理的多種邊界輸入?
3、各種非法輸入的可能性有多大?如何處理?
這里,黑盒測試的“等價類”,這些開發工程師眼中的代碼“功能點”,就是單元測試(白盒測試)的“等價類”。
二、單元測試用例
單元測試的用例是一個“輸入數據”和“預期輸出”的集合;測試人員需要針對確定的輸入,根據邏輯功能推算出預期正確的輸出,并且以執行被測試代碼的方式進行驗證。輸入數據不僅僅是函數的入參,同樣輸出數據也不僅僅是函數的返回值那么簡單。
輸入數據:
? ? ? ? 1、被測函數的輸入參數;
? ? ? ? 2、被測函數內部需要讀取的全局靜態變量;
? ? ? ? 3、被測函數內部需要讀取的成員變量;
? ? ? ? 4、在函數內部調用子函數獲得的數據;
? ? ? ? 5、在函數內部調用子函數改寫的數據;
? ? ? ? 6、嵌入式系統中,在中斷調用時改寫的數據:
? ? ? ? 。。。。。。
預期輸出:
? ? ? ? 1、被測函數的返回值;
? ? ? ? 2、被測函數的輸出參數;
? ? ? ? 3、被測函數所改寫的成員變量:
? ? ? ? 4、被測函數所改寫的全局變量;
? ? ? ? 5、被測函數中進行的文件更新;
? ? ? ? 6、被測函數中進行的數據庫更新:
? ? ? ? 7、被測函數中進行的消息隊列更新:
? ? ? ? 8、被測試函數中調用的其他函數:
? ? ? ? 。。。。。。
三、驅動代碼與樁代碼
驅動代碼指調用被測函數的代碼;在單元測試中,驅動模塊通常包括調用被測函數前的數據準備、調用被測函數以及驗證結果三個步驟。
樁代碼是用來代替真實代碼的臨時代碼;如某個函數A調用一個尚未完成的函數B,為了對函數A的邏輯進行測試,模擬一個函數B,B就是樁代碼。為了實現對A的全路徑覆蓋,需要控制不同測試用例中函數B的返回值。
樁代碼的編寫:
編寫樁代碼通常需要遵守的原則:
1、樁函數要具有與原函數完全相同的原型,僅僅內部實現不同,這樣測試代碼才能正確鏈接到樁函數。
2、用于實現隔離和補充的樁函數比較簡單,只須保持原函數的聲明,并加一個空的實現即可,目的是通過編譯和鏈接。
3、實現控制功能的樁函數是應用最廣泛的,要根據測試用例的需要,輸出合適的數據作為被測函數的內部輸入。
四、單元測試的自動化
單元測試階段的“自動化”內涵不僅指測試用例執行的自動化,還包含以下方面:
? ? ? ? 1、測試用例框架代碼的自動生成;
? ? ? ? 2、部分測試輸入數據的自動生成;
? ? ? ? 3、樁代碼的自動生成;
? ? ? ? 4、被測代碼的自動靜態分析;
? ? ? ? 5、測試覆蓋率的自動統計與分析;
? ? ? ? 6、單元測試用例的自動執行。
最后感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
這些資料,對于做【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!凡事要趁早,特別是技術行業,一定要提升技術功底。