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

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

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

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

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

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

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