App下載

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

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

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

什么是單元測試

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

單元測試的目的和意義

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

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

誰來負責(zé)單元測試

單元測試應(yīng)該由開發(fā)來負責(zé),但由于國內(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,當(dāng)下最火的python對應(yīng)的是unittest(原名PyUnit,現(xiàn)已被納入標準python的一個模塊)。

小結(jié)

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

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

點擊junit教程前往Junit教程學(xué)習(xí)!


0 人點贊