• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

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

    單元測試和編碼的協作的方法

    發布: 2009-5-21 09:24 | 作者: 網絡轉載 | 來源: 測試時代采編 | 查看: 79次 | 進入軟件測試論壇討論

    領測軟件測試網 自1947年9月9日一只飛蛾被發現困在Harvard Mark Ⅱ中開始,調試問題就一直困擾著程序員。(這第一個“真實的Bug”,至今還存放在Smithsonian的美國國家歷史博物館)。計算機先驅Manrice Wilkes在談到他意識到調試的嚴重性的時候說道:“我生命中余下的時間,將有很大的一部分將被用于從我自己所寫的代碼中查找錯誤!彼倪@個解釋在很多的計算機專家身上得到了驗證。

      單元測試是一個檢測bug的方法。首先,單元測試適用于單獨的代碼片斷。例如函數,方法。除非這些最小的代碼片斷是正確的,否則,整個軟件的“大廈“將會倒塌。其次,單元測試讓代碼的編寫者也同時來參與代碼的測試。通過測試能夠查出bug,但程序員除了編碼不愿花費時間在其他任何事上。

      JUnit是一個開放源代碼的Java類庫,目的是讓單元測試更簡單、有趣。事實上JUnit是如此的有趣以至于程序員會愛上編寫測試代碼。Kent Beck和Erich Gamma從Beck的SmallTalk測試框架中獲得了靈感并建立了JUnit項目。最初的想法是讓編碼和測試能同時進行。程序員寫若干行的代碼,然后為這幾行的代碼編寫測試。如果沒有通過測試,就改正程序中的bug;如果正常通過測試,就繼續編碼和測試。所有的測試碼隨著代碼的變化而變化,一旦運行代碼發生變化,通過回歸測試的方法能保證整個軟件不會因為這些變化而遭到破壞。

      編碼和測試的整合是極限編程XP(eXtreme Programming)和敏捷軟件開發活動的中心環節。在敏捷軟件開發過程中,軟件通過不斷增加實現功能來構建,簡言之就是活動的突發催生軟件功能的完善。)為了達到這個目的則必須保證所有已經完成的代碼都是正確的,只有這樣才能有自信在這些代碼的基礎上進行后續開發。

      一、JUnit簡介

      在單元測試中,我們經常編寫這樣的代碼:按實際需求提供輸入的代碼和以輸出結果形式展示的代碼的運行情況。程序員長期使用的一個簡單的方法是:編寫一系列的if條件語句與預期的結果來進行比較。在JUnit中,我們并不需要這些if語句,而是寫斷言(assertion)。斷言是這樣一個方法:預先標志出期望的結果,并將得到的結果與之進行比較,如果匹配,則斷言成功,否則斷言失敗。

      一般的說,測試需要建立“測試框架”:例如初始化變量,創建對象等。在JUnit中,準備工作被稱為裝配(setup)。setup和assertions是相互獨立的,所以相同的測試框架可適用于若干獨立的測試。setup過程在測試以前執行。

      而當一個測試結束的時候,可能需要對測試框架進行一些清理活動。在JUnit中,清理活動被稱為拆卸(TearDown)。它保證每一個測試不會留下任何的影響。如果接下來有另一個測試活動開始了,那么這個測試的setup過程就能被正確得執行。setup和teardown被成為一個測試的固定環節

      單獨的測試被稱為測試用例(Test Cases),測試用例幾乎不存在于真空中。如果一個項目經歷了若干個單元測試,就能積累一定數量的測試用例集。程序員往往將這些測試一起運行。如果測試一起運行,就將測試聯合成為測試組(test suites)。這種情況下,程序員將多個測試用例組合成為一個測試組(test suites),作為一個單獨的整體來運行。

      二、一個例子

      用實踐來理解JUnit往往更簡單。設想我們需要一個Complex類(當然不是從其他地方得到現成的)。這個Complex類應當包含常規的復數運算和操作,我們會對這些方法進行測試。

      首先,新建一個TestCase子類。在這個子類中,為fixture的每一部分(setup和teardown)新建實例變量。然后重寫setUp()(注意保留)方法以初始化變量,重寫tearDown()方法以清理所有測試過程中使用的資源從而避免任何的副作用。在這個例子中,所有的操作并沒有副作用,所以我們并不需要重寫tearDown()方法。Figure 1(a)中展示了如何創建一個TestCase子類并重寫setUp()方法。

      (a)

      import junit.framework.TestCase;

      import junit.framework.Test;

      import junit.framework.TestSuite;

      public class ComplexTest extends TestCase {

      private Complex a;

      private Complex b;

      protected void setUp() {

      a = new Complex(1, -1);

         b = new Complex(2, 5);

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: 編碼 單元 協作


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

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>