App下載

單元測試——如何確定代碼是否符合功能需求?

猿友 2021-06-30 10:55:55 瀏覽數(shù) (2321)
反饋

很多小伙伴的的固有理解是——我學的是編程開發(fā),不是軟件測試,我只需要做好開發(fā)就可以了,代碼測試并不由我負責。實際上,作為開發(fā)者,他們要做的并不僅僅是開發(fā),還要做一部分的測試。這部分測試是基于代碼單元進行測試的,所以又叫單元測試。接下來這篇文章,小編就將以單元測試是什么,單元測試的目的和意義,以及常見的單元測試工具與小伙伴們進行討論。

什么是單元測試

首先,要確定什么是單元。在軟件開發(fā)項目中,一般把最簡單的功能模塊稱為單元(另一種說法是最小的可測代碼模塊),簡單的理解,比如C語言中的函數(shù),java中的方法,都是單元。單元測試,就是測試這些單元是否滿足需求。

單元測試的目的和意義

單元測試的目的很簡單,他的動機主要就兩點:保護或驗證實現(xiàn)功能;保護已經(jīng)實現(xiàn)的功能不被破壞。簡單的來說就是保證單元的功能正常。

雖然單元測試的目的很簡單,意義卻相當重要。單元測試作為所有測試中最早的測試(用例和需求審查在程序開發(fā)之前,不計入討論),單元測試的質(zhì)量直接影響后面測試的質(zhì)量和工作量。另外,單元測試作為最早介入開發(fā)的測試,他對bug的預(yù)防具有重要意義。

誰來負責單元測試

單元測試應(yīng)該由開發(fā)來負責,但由于國內(nèi)存在重開發(fā)輕測試的情況(開發(fā)工作量更高)。也可以采用測試協(xié)助開發(fā)做單元測試。

測試工具的引入

單元測試只不過是一個測試名稱,而不是具體的測試方法,很多開發(fā)不一定會使用正規(guī)的測試工具。但實際上,測試工具的引入對單元測試的效率提升有著很大的幫助。

沒有引入測試工具前,一般單元測試使用main方法來運行代碼,這種最原始的方法有著最低的效率。比如新開發(fā)了一個方法,要對他進行測試,需要設(shè)計好幾個測試用例,這些測試用例的代碼量隨著測試用例的增多,將遠超功能代碼;另外,每次測試,都要采用肉眼觀察的方式來判斷測試是否通過,測試效率低下。

引入測試工具后,以上的問題都解決了:使用測試工具,它將自動化調(diào)用功能代碼,最終要寫的測試代碼量將控制到一個比較小的水平;測試工具一般都有斷言驗證功能,使用這個功能可以自動判斷測試是否通過(只要提前設(shè)置條件),為批量自動化測試和生成測試報告提供了很大幫助。

常見單元測試工具(框架)

這方面最出名的應(yīng)該是xUnit家族了。java最出名的單元測試框架為JUnit,.Net也有對應(yīng)的NUnit,C/C++可以使用CPPUnit,PHP也有對應(yīng)的PHPUnit,當下最火的python對應(yīng)的是unittest(原名PyUnit,現(xiàn)已被納入標準python的一個模塊)。

小結(jié)

 接下來要提到的極限編程,他的核心思想之一就是測試驅(qū)動開發(fā),實現(xiàn)方式大概就是:先確定需求,然后根據(jù)需求寫測試用例和對應(yīng)的測試代碼,最后寫功能模塊。在寫功能模塊的時候要運行到測試代碼完全通過

單元測試作為測試里面的最基礎(chǔ)的測試,它的重要性不言而喻。而掌握對應(yīng)的語言的單元測試工具的使用也作為學習該語言必不可少的一項技能。在一些比較極端的開發(fā)團隊中甚至對單元測試看得相當重要(以極限編程思想作為指導(dǎo)的敏捷開發(fā)團隊)。所以掌握單元測試工具是每個合格程序員的必修課,各位小伙伴趕緊學起來吧!

點擊junit教程前往Junit教程學習!


0 人點贊