<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>
            • 軟件測試技術(shù)
            • 軟件測試博客
            • 軟件測試視頻
            • 開(kāi)源軟件測試技術(shù)
            • 軟件測試論壇
            • 軟件測試沙龍
            • 軟件測試資料下載
            • 軟件測試雜志
            • 軟件測試人才招聘
              暫時(shí)沒(méi)有公告

            字號: | 推薦給好友 上一篇 | 下一篇

            利用 Ant 和 JUnit 進(jìn)行增量開(kāi)發(fā)

            發(fā)布: 2010-6-17 14:32 | 作者: 不詳 | 來(lái)源: 領(lǐng)測測試網(wǎng)采編 | 查看: 83次 | 進(jìn)入軟件測試論壇討論

            領(lǐng)測軟件測試網(wǎng)

              利用 Ant 和 JUnit 進(jìn)行增量開(kāi)發(fā) 軟件測試

              軟件開(kāi)發(fā)習慣中一個(gè)細微更改都可能會(huì )對軟件質(zhì)量產(chǎn)生巨大改進(jìn)。將單元測試合并到開(kāi)發(fā)過(guò)程中,然后從長(cháng)遠角度來(lái)看它可以節省多少時(shí)間和精力。本文通過(guò)使用代碼樣本說(shuō)明了單元測試的種種好處,特別是使用 Ant 和 JUnit 帶來(lái)的各種方便。

              測試是大型開(kāi)發(fā)過(guò)程中的基本原則之一。在任何職業(yè)中,驗證都是一個(gè)重要部分。醫生要通過(guò)驗血來(lái)確診。波音公司在研制 777 的過(guò)程中對飛機的每個(gè)組件都進(jìn)行了精心測試。為什么軟件開(kāi)發(fā)就應該例外呢?

              以前,由于在應用程序中將 GUI 和商業(yè)邏輯緊密聯(lián)系在一起,這就限制了創(chuàng )建自動(dòng)測試的能力。當我們學(xué)會(huì )通過(guò)抽象層將商業(yè)邏輯從界面中分離出來(lái)時(shí),各個(gè)單獨代碼模塊的自動(dòng)測試就替代了通過(guò) GUI 進(jìn)行的手工測試。

              現在,集成開(kāi)發(fā)環(huán)境 (IDE) 能在您輸入代碼的同時(shí)顯示錯誤,對于在類(lèi)中快速查找方法具有智能探測功能,可以利用語(yǔ)法結構生成彩色代碼,而且具有許多其它功能。因此,在編譯更改過(guò)的代碼之前,您已經(jīng)全盤(pán)考慮了將構建的類(lèi),但您是否考慮過(guò)這樣的修改會(huì )破壞某些功能呢?

              每個(gè)開(kāi)發(fā)者都碰到過(guò)更改“臭蟲(chóng)”。代碼修改過(guò)程可能會(huì )引入“臭蟲(chóng)”,而如果通過(guò)用戶(hù)界面手工測試代碼的話(huà),在編譯完成之前是不會(huì )發(fā)現它的。然后,您就要花費幾天的時(shí)間追蹤由更改所引起的錯誤。最近在我做的一個(gè)項目中,當我把后端數據庫由 Informix 更改到 Oracle 時(shí)就遇到了這種情況。大部分更改都十分順利,但由于數據庫層或使用數據庫層的系統缺少單元測試,從而導致將大量時(shí)間花費在嘗試解決更改“臭蟲(chóng)”上。我花了兩天的時(shí)間查到別人代碼中的一個(gè)數據庫語(yǔ)法更改。(當然,那個(gè)人仍是我的朋友。)

              盡管測試有許多好處,但一般的程序員對測試都不太感興趣,開(kāi)始時(shí)我也沒(méi)有。您聽(tīng)到過(guò)多少次“它編譯了,所以它一定能用”這種言論?但“我思,故我在”這種原則并 不 適用于高質(zhì)量軟件。要鼓勵程序員測試他們的代碼,過(guò)程必須簡(jiǎn)單無(wú)痛。

              本文從某人學(xué)習用 Java 語(yǔ)言編程時(shí)所寫(xiě)的一個(gè)簡(jiǎn)單的類(lèi)開(kāi)始。然后,我會(huì )告訴您我是如何為這個(gè)類(lèi)編寫(xiě)單元測試,以及在編寫(xiě)完它以后又是如何將單元測試添加到構建過(guò)程中的。最后,我們將看到將“臭蟲(chóng)”引入代碼時(shí)發(fā)生的情況。

              從一個(gè)典型類(lèi)開(kāi)始

              第一個(gè)典型的 Java 程序一般都包含一個(gè)打印 "Hello World" 的 main() 。在清單 1 中,我創(chuàng )建了一個(gè) HelloWorld 對象的實(shí)例并調用 sayHello() 方法,該方法會(huì )打印這句習慣說(shuō)法。

              清單 1. 我的第一個(gè) Java 應用程序 "Hello world"

            /* * HelloWorld.java * My first java program */ class HelloWorld { /** * Print "Hello World" */ void sayHello() { System.out.println("Hello World"); } /** * Test */ public static void main( String[] args ) { HelloWorld world = new HelloWorld(); world.sayHello(); } }

              main() 方法是我的測試。哦噢!我將代碼、文檔、測試和樣本代碼包含在了一個(gè)模塊中。保佑 Java!但隨著(zhù)程序越變越大,這種開(kāi)發(fā)方法很快就開(kāi)始顯現出了缺陷

              混亂

              類(lèi)接口越大, main() 就越大。類(lèi)可能僅僅因為正常的測試而變得非常龐大。

              代碼膨脹

              由于加入了測試,所以產(chǎn)品代碼比所需要的要大。但我不想交付測試,而只想交付產(chǎn)品。

              測試不可靠

              既然 main() 是代碼的一部分, main() 就對其他開(kāi)發(fā)者通過(guò)類(lèi)接口無(wú)法訪(fǎng)問(wèn)的私有成員和方法享有訪(fǎng)問(wèn)權。出于這個(gè)原因,這種測試方法很容易出錯。

              很難自動(dòng)測試

              要進(jìn)行自動(dòng)測試,我仍然必須創(chuàng )建另一程序來(lái)將參數傳遞給 main() 。

            延伸閱讀

            文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/

            TAG: ant Ant ANT junit Junit JUnit JUNIT 開(kāi)發(fā) 增量

            71/71234567>

            關(guān)于領(lǐng)測軟件測試網(wǎng) | 領(lǐng)測軟件測試網(wǎng)合作伙伴 | 廣告服務(wù) | 投稿指南 | 聯(lián)系我們 | 網(wǎng)站地圖 | 友情鏈接
            版權所有(C) 2003-2010 TestAge(領(lǐng)測軟件測試網(wǎng))|領(lǐng)測國際科技(北京)有限公司|軟件測試工程師培訓網(wǎng) All Rights Reserved
            北京市海淀區中關(guān)村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
            技術(shù)支持和業(yè)務(wù)聯(lián)系:info@testage.com.cn 電話(huà):010-51297073

            軟件測試 | 領(lǐng)測國際ISTQBISTQB官網(wǎng)TMMiTMMi認證國際軟件測試工程師認證領(lǐng)測軟件測試網(wǎng)

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>