App下載

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

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

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

什么是單元測(cè)試

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

單元測(cè)試的目的和意義

單元測(cè)試的目的很簡(jiǎn)單,他的動(dòng)機(jī)主要就兩點(diǎn):保護(hù)或驗(yàn)證實(shí)現(xiàn)功能;保護(hù)已經(jīng)實(shí)現(xiàn)的功能不被破壞。簡(jiǎn)單的來(lái)說(shuō)就是保證單元的功能正常。

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

誰(shuí)來(lái)負(fù)責(zé)單元測(cè)試

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

測(cè)試工具的引入

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

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

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

常見(jiàn)單元測(cè)試工具(框架)

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

小結(jié)

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

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

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


0 人點(diǎn)贊