原創(chuàng)|行業(yè)資訊|編輯:龔雪|2014-10-20 09:26:15.000|閱讀 321 次
概述:單元測(cè)試的需求越來(lái)越大,開(kāi)發(fā)者或開(kāi)發(fā)者團(tuán)隊(duì)的工作壓力或技術(shù)局限,導(dǎo)致單元測(cè)試漏洞頻發(fā)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
世界著名開(kāi)發(fā)測(cè)試公司PRQA與Parasoft或多或少的讓開(kāi)發(fā)者知道了單元測(cè)試框架的概念。相對(duì)于單元測(cè)試的需求,開(kāi)發(fā)者暴露出來(lái)的測(cè)試問(wèn)題,總結(jié)下來(lái)可以歸結(jié)五大漏洞。
1. 跟協(xié)作邏輯一起來(lái)測(cè)試算法。如果跟協(xié)作邏輯代碼分離開(kāi)來(lái),那么算法邏輯是最容易測(cè)試的。否則在你的邏輯被測(cè)試之前,你就不得不先進(jìn)行諸如通過(guò)任務(wù)隊(duì)列提交一個(gè)任務(wù)之類(lèi)的工作。 任務(wù)隊(duì)列部分只會(huì)使事情變得復(fù)雜。除非你想測(cè)試任務(wù)隊(duì)列本身,否則你就應(yīng)當(dāng)把調(diào)用run方法時(shí)所執(zhí)行的邏輯剝離開(kāi)來(lái),并對(duì)它進(jìn)行單獨(dú)測(cè)試。那樣,不論是編碼還是測(cè)試都會(huì)更易于編寫(xiě)和管理。
2. Mock測(cè)試太多。也許單元測(cè)試的最大好處就是它迫使你編寫(xiě)能夠獨(dú)立測(cè)試的代碼。也就是說(shuō),你的代碼會(huì)變得模塊化。當(dāng)你把你要處理的對(duì)象的周?chē)囊磺卸寄M了,就沒(méi)有什么能迫使你去把各部分分離開(kāi)來(lái)。你會(huì)發(fā)現(xiàn)這樣寫(xiě)出的代碼,你很難在外圍添加獨(dú)立的部分 – 因?yàn)樗袞|西都糾纏在一起。
3. 不使用斷言。有時(shí)我會(huì)看到一些測(cè)試,里面創(chuàng)建了一個(gè)對(duì)象,調(diào)用了一些方法,然后,就沒(méi)有然后了。也許它是 在循環(huán)里這樣做的,而且在創(chuàng)建和調(diào)用上會(huì)有些差異。但是,卻沒(méi)有用斷言來(lái)做任何檢查。這就完全失去了意義 – 沒(méi)有檢查你的代碼是否按照預(yù)期進(jìn)行工作的。當(dāng)然,代碼是運(yùn)行了,但是僅此而已。如果拋出了一個(gè)異常,我們會(huì)注意到它,但是卻不會(huì)驗(yàn)證其它任何事情。
4. 在測(cè)試代碼中遺留print語(yǔ)句。我把這視為手工測(cè)試的后遺癥 – 你希望看到對(duì)象的值來(lái)判斷它們是否正確。但是所有的檢查都應(yīng)當(dāng)使用斷言來(lái)完成。如果單元失敗了,你也能看到它,因?yàn)檫@個(gè)測(cè)試也會(huì)失敗。當(dāng)測(cè)試通過(guò)時(shí),什么 也不應(yīng)當(dāng)打印出來(lái)。在編寫(xiě)測(cè)試代碼時(shí),使用print語(yǔ)句有時(shí)是有用的。但是在需要用print的地方應(yīng)當(dāng)設(shè)置一個(gè)標(biāo)志位,用來(lái)在進(jìn)行測(cè)試的時(shí)候屏蔽它。
5. 查看日志信息,而不是運(yùn)行結(jié)果。 還好這并不普遍,但是我卻見(jiàn)過(guò)一個(gè)非常有能力的開(kāi)發(fā)人員這么干過(guò)。要知道,真正重要的是方法的運(yùn)行結(jié)果,而不是日志中都打印了什么,因?yàn)榧词勾a中有錯(cuò)誤,測(cè)試也可能會(huì)通過(guò)。
從總結(jié)的五大弊端來(lái)看,有思想上的滯后,有技術(shù)上的缺陷,有人為能力的限制等,當(dāng)然還有很多,這五條是最常見(jiàn)或最難處理的。只能根據(jù)開(kāi)發(fā)團(tuán)隊(duì)自己內(nèi)部調(diào)整,但也可以使用一定的測(cè)試工具(PRQA與Parasoft測(cè)試工具性?xún)r(jià)比非常高)。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn