您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > junit
不僅僅只有JUnit
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/3/25 15:00:32 ] 推薦標(biāo)簽:

        今年忙乎了大半年的自動(dòng)化測(cè)試,寫(xiě)了一個(gè)測(cè)試框架,一直想寫(xiě)點(diǎn)東西總結(jié)一下,由于懶,總是沒(méi)有心性來(lái)寫(xiě)些東西,無(wú)聊,乘機(jī)寫(xiě)點(diǎn),不然又不知猴年馬月才能動(dòng)筆了^_^
        本文不想討論自動(dòng)化測(cè)試的利弊;Web測(cè)試和性能測(cè)試也不是本文的討論范疇,本文只討論單元測(cè)試以及集成測(cè)試階段的問(wèn)題;只談了JUnit的一些缺陷以及我們是否有更好的選擇,以及開(kāi)發(fā)者的測(cè)試是否能讓測(cè)試人員也能玩得動(dòng)呢。如果你沒(méi)興趣,不防此別過(guò),以免你后悔。
        言歸正傳,說(shuō)到用JUnit進(jìn)行單元測(cè)試,對(duì)于Java開(kāi)發(fā)人員來(lái)說(shuō)再熟悉不過(guò)了,即使
        沒(méi)有用過(guò),也一定聽(tīng)過(guò)吧。
        在項(xiàng)目的過(guò)程中,如果你是開(kāi)發(fā)人員,你也許有這樣的想法:偶們知道用JUnit來(lái)寫(xiě)單元測(cè)試的好處,可偶們沒(méi)時(shí)間寫(xiě);功能夠用了,可還是繁瑣;一開(kāi)始還用的,可后來(lái)忙于改代碼,接口改動(dòng)又大,也沒(méi)時(shí)間堅(jiān)持用下去了。
        如果你是測(cè)試人員,你或許會(huì)這樣想:偶覺(jué)得開(kāi)發(fā)人員寫(xiě)的單元測(cè)試可能過(guò)于粗略,很可能有些邊界沒(méi)檢查到,但我對(duì)Java不太熟悉,無(wú)法通過(guò)修改他們的測(cè)試代碼來(lái)進(jìn)行更完善的測(cè)試,只能”通過(guò)現(xiàn)象猜本質(zhì)“了--在功能測(cè)試階段,多點(diǎn)幾下鼠標(biāo)也可能出錯(cuò)了。
        哦,也許我猜錯(cuò)了,我怎么能懂得測(cè)試人員的心思呢,實(shí)際上我都不是一個(gè)稱職的測(cè)試人員。
        我們來(lái)看看JUnit都有哪些令人不爽的地方:
        1、繁瑣,維護(hù)的成本不低。XP提倡為每個(gè)方法都加一個(gè)測(cè)試方法,不少XP的追隨者也是真能做到的。但當(dāng)項(xiàng)目的代碼行達(dá)到50萬(wàn)以上時(shí),為每個(gè)方法增加一個(gè)測(cè)試方法,令人不爽的是:需要幾乎跟源碼一樣多的測(cè)試代碼,甚至更多。唉,老大,不是我不想做,我是做不完啊。
        2、測(cè)試代碼的質(zhì)量不好檢查。如果你是一個(gè)敬業(yè)的人,相信不會(huì)有這樣的問(wèn)題,但是人都有惰性,尤其是日復(fù)一日地重復(fù)寫(xiě)代碼的你,當(dāng)面臨加班寫(xiě)測(cè)試代碼和回家看球賽的選擇時(shí),我想還是選看球賽的人大有人在--反正簡(jiǎn)單得很,不會(huì)出錯(cuò)的。關(guān)鍵的是:頭兒不會(huì)知道的。
        3、在單元測(cè)試階段的效果比較明顯,在其它測(cè)試階段幾乎難于勝任了。也難怪,望文生意:JUnit本來(lái)是Java Unit測(cè)試嘛,你XXX要求還真高。
        關(guān)鍵不是我要求高,是我們這些coding的”共同敵人“要求高啊,所以,問(wèn)題不能不解決。于是,有一些”先驅(qū)們“做了一些嘗試:
一、Software Agitator
        什么是Software Agitator?當(dāng)年JUnit的Kent Beck的又一力作,它是一個(gè)自動(dòng)的運(yùn)行軟件代碼并提供軟件代碼行為觀察報(bào)告的一種方法,它幫助開(kāi)發(fā)人員單元測(cè)試他們的代碼,而不用手動(dòng)編寫(xiě)測(cè)試代碼,使用該方法,開(kāi)發(fā)人員將創(chuàng)造出更好、更容易維護(hù)和健康的軟件,產(chǎn)生很少的bug,具有更高的生產(chǎn)效率,因?yàn)樗麄兓撕苌俚臅r(shí)間去分析失敗和改寫(xiě)他們的代碼。
Software Agitator的主要特性有:
1、自動(dòng)生成測(cè)試數(shù)據(jù)、自動(dòng)創(chuàng)建智能的Mock 對(duì)象,提供盡可能多的代碼覆蓋。
2、全面的報(bào)告:代碼覆蓋率、報(bào)告方法、輸出、語(yǔ)句行和條件覆蓋率。
3、超過(guò)200個(gè)Factory庫(kù),也可以通過(guò)簡(jiǎn)單的Java API 延伸factory控制輸入數(shù)據(jù)和
轉(zhuǎn)化數(shù)據(jù)格式。
4、支持TDD(測(cè)試驅(qū)動(dòng)開(kāi)發(fā))
5、支持JUnit等。
6、支持Regression測(cè)試(也老外這么多名詞,說(shuō)白了是測(cè)試用例在不同的項(xiàng)目中
重復(fù)利用)。
7、存儲(chǔ)信息在XML文件里(包括用例、報(bào)告),不需要數(shù)據(jù)庫(kù)。
8、自動(dòng)檢測(cè)代碼標(biāo)準(zhǔn)違規(guī)。
9、完全集成Eclipse開(kāi)發(fā)環(huán)境。

        顯然,Agitator的功能非常強(qiáng)大,陣對(duì)性強(qiáng),個(gè)人覺(jué)得起碼有如下好處:
1、基于XML來(lái)描述用例信息比robot和Quest Test都易于使用,這使測(cè)試人員都能參與其中。題外話:我一直想不通robot和Quest Test為何要自己發(fā)明一套自己的腳本?除了自我封閉、排除異己之外,實(shí)在沒(méi)有其它有說(shuō)服力的道理可言。
2、它能大大減輕了開(kāi)發(fā)人員的重復(fù)勞動(dòng),這是開(kāi)發(fā)人員不能堅(jiān)持用JUnit進(jìn)行測(cè)試的罪魁啊,基本上彌補(bǔ)了JUnit的缺陷,真不愧為JUnit的始俑者。一句話:懶人只需要一個(gè)理由。
3、測(cè)試報(bào)告全面,而且是xml形式的。通過(guò)測(cè)試報(bào)告也能比較可靠地檢查質(zhì)量。
Agitator的缺陷也明顯:
1、不適合于Web測(cè)試和GUI測(cè)試。
2、它不是免費(fèi)的,這是大的缺點(diǎn)了吧,如果能象JUnit那樣免費(fèi)。。。。。。我想得也太 美了:(

        可惜拿不到Agitator的試用版,不然,能做些例子,但能給我們不少啟發(fā):
1、測(cè)試框架需要進(jìn)一步減輕開(kāi)發(fā)人員的工作量
2、測(cè)試用例的開(kāi)放性(XML格式)。別只顧自己玩代碼,讓開(kāi)發(fā)經(jīng)驗(yàn)欠缺的測(cè)試人員也玩玩 如何?自動(dòng)化測(cè)試有必要學(xué)習(xí)其他腳本語(yǔ)言嗎?除了商業(yè)利益的因素外,沒(méi)有任何令人信服的理由。
3、測(cè)試的智能化:全面的報(bào)告,支持Regression測(cè)試,自動(dòng)定時(shí)執(zhí)行等等。

        是啊,真的是個(gè)好東東啊。難道沒(méi)有其它免費(fèi)的嗎?我還真沒(méi)發(fā)現(xiàn),如果你知道,請(qǐng)告訴我,謝謝。

        不過(guò),如果你能讀到這,為了報(bào)答你的拜讀之情,介紹一款免費(fèi)的測(cè)試框架,以致不會(huì)令你太失望。

上一頁(yè)12下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd