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

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

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

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

    通過測試分類實現敏捷構建

    發布: 2008-4-03 17:15 | 作者: Andrew Glover | 來源: IBM | 查看: 61次 | 進入軟件測試論壇討論

    領測軟件測試網


    三種類型

    測試套件可以形象地分為三層,每一層代表一種不同的開發人員測試類型,該測試類型由其運行時間的長短決定。正如在圖 1 中看到的那樣,每一層都增加了總的構建時間,要么增加了運行時間,要么最終增加了編寫時間。


    圖 1.測試分類的三個層次
    測試分類的三個層次

    底層由運行時間最短的測試構成,可以想象的到,它們也最易于編寫。這些測試占用的代碼量也是最少的。頂層由更高級別的測試構成,這些測試占用了應用程序更大的部分。這些測試有一點難于編寫,執行時間也要長得多。中間層是處于這兩個極端中間的測試類型。

    三種類型如下所示:

    • 單元測試
    • 組件測試
    • 系統測試

    讓我們分別來看一下。

    改進代碼質量

    別錯過 Andrew 的相關 討論論壇,里面有關于代碼語法、測試框架以及如何編寫專注于質量的代碼的幫助。

    1. 單元測試

    單元測試隔離地 驗證一個或多個對象。單元測試不處理數據庫、文件系統或任何可能延長測試運行時間的內容;因而,從第一天就可以編寫單元測試。事實上,這也正是 JUnit 設計的確切目的所在。單元測試的隔離概念有無數的模擬對象庫作后盾,這些庫便利了將一個特定的對象從其外部依賴項中隔離出來。而且,單元測試能夠在真正要測試的代碼前編寫 —— 由此有了測試優先開發 的概念。

    單元測試通常易于編寫,因為它們并不依靠于架構的依賴項,且通常運行得很快。缺點是,獨立的單元測試只能覆蓋稍顯有限的代碼。單元測試的重大價值在于:它們使開發人員能夠在盡可能低的層面上保證對象的可靠性。

    由于單元測試運行得如此之快且如此易于編寫,代碼庫中應包含許多單元測試,并且應該盡可能多地運行它們。在執行構建時,應該經常 運行它們,不管是在機器上,還是在 CI 環境的上下文中(這意味著,代碼一經簽入 SCM 環境,就要運行單元測試)。


    2. 組件測試

    組件測試驗證多個相互作用的對象,但它突破了隔離的概念。由于組件測試處理一個架構的多個層次,所以它們經常用于處理數據庫、文件系統、網絡元素等。同樣,提前編寫組件測試有點難,所以將其包含至一個真正的測試優先/測試驅動的場景中是很大的挑戰。

    編寫組件測試要花更長的時間,因為它們比單元測試所涉及的東西要多。另一方面,由于其寬廣的范圍,它們實現了比單元測試更廣的代碼覆蓋率。當然它們也要花更多時間運行,所以同時運行很多的組件測試會顯著地 增加總的測試時間。

    許多框架有助于測試大型架構組件。DbUnit 是這類框架的一個典型例子。DbUnit 能夠很好地處理在測試狀態間建立一個數據庫這樣的復雜性,因而它會使編寫依賴于數據庫的測試變得較為簡單。

    當構建的測試延長時,通常都預示著包含了一個大型的組件測試套件。由于這些測試比真正的單元測試運行時間長,因而不能一直運行它們。相應地,在 CI 環境中這些測試可以至少 每小時運行一次。在簽入任何代碼前,也應該總在一個本地開發人員機器上運行這些測試。

    驗收測試
    驗收測試 和功能測試類似,不同之處在于,理想情況下,驗收測試是由客戶或最終用戶編寫的。正如功能測試一樣,驗收測試也像最終用戶測試那樣進行。Selenium(參見 參考資料)是一個備受矚目的驗收框架,它使用瀏覽器測試 Web 應用程序。Selenium 在構建過程中可以是自動運行的,就像 JUnit 測試一樣。但 Selenium 是一個新平臺:它不使用 JUnit,在使用方式上也不相似。

    3. 系統測試

    系統測試端到端地 驗證一個軟件應用程序。因而,它們引入了一個更高級別的架構復雜度:整個應用程序必需為要進行的系統測試而運行。如果是一個 Web 應用程序,您就需要訪問數據庫以及 Web 服務器、容器和任何與運行系統測試相關的配置。其遵循這樣的原則,即大多數系統測試都在軟件生命周期的較后周期中編寫。

    編寫系統測試是個挑戰,也需要大量的時間來實際地執行。而另一方面,就架構性代碼覆蓋率來講,系統測試是一件極為劃算的事情。

    系統測試和功能測試很相似。所不同的是,它們并不仿效用戶,而是模擬出 一個用戶。與在組件測試中一樣,現在創建了大量的框架來為這些測試提供方便。例如,jWebUnit 通過模擬一個瀏覽器來測試 Web 應用程序。

    用 jWebUnit 還是 Selenium 呢?
    jWebUnit 是為系統測試設計的一個 JUnit 擴展框架;因而它需要您來編寫測試。Selenium 在驗收測試和功能測試方面表現卓越,不同于 jWebUnit,它使非程序員也能夠編寫測試。理想情況下,團隊可以同時 使用兩種工具來驗證應用程序的功能。

    實現測試分類

    所以,您的單元測試套件就是名副其實的包括單元測試、組件測試和系統測試的套件。不僅如此,在檢查了這些測試后,您現在知道構建花了三個小時的原因是:絕大部分時間都被組件測試所占用。下一個問題是,如何用 JUnit 實現測試分類?

    有幾種方式可選,但這里我們只關注于其中兩種最簡單的方式:

    • 根據所需種類創建定制的 JUnit 套件文件。
    • 為每種測試類型創建定制目錄。
    用 TestNG 進行測試分類
    用 TestNG 實現測試分類相當簡單。用 TestNG 的 group 注釋按照種類在邏輯上劃分測試,這與將適當的 group 注釋應用到所需測試中一樣簡單。這樣一來,運行一個特定類型實際上就是將一個相應的組名稱傳遞給一個測試運行程序,如 Ant。

    創建定制套件

    可以使用 JUnit 的 TestSuite 類(屬于 Test 類型)來定義許多互相歸屬的測試。首先,創建一個 TestSuite 實例,并為其添加相應的測試類或測試方法。然后,可以通過定義一個叫做 suite()public static 方法,在 TestSuite 實例中指定 JUnit。包含的所有測試隨后將在單個運行中執行。因而,可以通過創建單元 TestSuite、組件 TestSuite 和系統 TestSuite 來實現測試分類。

    例如,清單 1 中顯示的類創建了一個 TestSuite,其持有 suite() 方法中所有的組件測試。請注意此類并不是非常特定于 JUnit 的。它既沒有擴展 TestCase,也沒有定義任何測試用例。但它會反射性地找到 suite() 方法并運行由它返回的所有測試。

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

    32/3<123>

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