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

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

  • <strong id="5koa6"></strong>
  • FIT 和 Eclipse: 使用 Extended FIT Eclipse 插件執行測試

    發表于:2007-05-25來源:作者:點擊數: 標簽:
    了解 Framework for Integrated Tests (FIT) 的基本概念,并使用 Extended FIT Eclipse 插件著手為 Eclipse 開發 人員測試 FIT 表。本文是由兩部分組成的系列文章的第一部分,向您介紹 FIT 并展示如何在基于 Eclipse 的環境中使用它。 自從大型計算機誕生以
    了解 Framework for Integrated Tests (FIT) 的基本概念,并使用 Extended FIT Eclipse 插件著手為 Eclipse 開發人員測試 FIT 表。本文是由兩部分組成的系列文章的第一部分,向您介紹 FIT 并展示如何在基于 Eclipse 的環境中使用它。

    自從大型計算機誕生以來,軟件工程師就關心著兩個主要問題:第一,業務如何通過應用程序與其所需內容通信;第二,工程師如何驗證他們是否正在構建滿足業務需要的正確軟件。多年來,為了解決這些關心的問題,已探索了許多方法和框架,但直到出現 Framework for Integrated Tests (FIT) 以后,才找到了解決這些問題的簡便而直觀的方法。

    FIT 是一種通用的開放框架,您可以方便地對它進行擴展,來表示各種測試。本文介紹如何結合使用 FIT 與 Eclipse 來解決軟件開發中的幾個問題。首先簡要介紹一下 FIT 如何解決軟件工程中的固有問題。

    FIT 促進了企業各利益相關者 (stake holder) 和開發人員之間的溝通,從而使他們更精確地關注必須完成的任務。此功能可幫助每個人避免不明確的業務需求,有助于確保開發人員有的放矢地解決業務問題。此外,FIT 還支持因系統升級而導致的不可避免的代碼重組,從而減少維護、擴展或更改代碼的難度,并減少代碼膨脹和軟件熵 (software entropy)。最后,FIT 通過確保團隊能夠立即知道組件何時完成,以及何時錯誤地中斷完成的工作,從而提高了軟件的總體質量。

    FIT 和 JUnit

    如果您使用的是 JUnit,則最重要問題是:必須停止編寫 JUnit 測試用例?回答當然是。FIT 不是用于補充 JUnit 測試的;它具有更高級別的功能,即集成測試(參見圖 1)。


    圖 1. FIT 處理流程
    FIT 處理流程

    您仍可以開發 JUnit 測試。但是,另外還需要使用 FIT 表創建 FIT 測試。





    回頁首


    FIT 和FIT 表

    對于 JUnit,它是一個測試用例。對于 IBM Rational Unified Process® (RUP®),它是一個使用用例。對于 FIT,它是一個表。表在 FIT 提高利益相關者之間的溝通能力、軟件靈活性和軟件穩定性方面扮演著重要角色。

    在日報上,無論是棒球比賽的最后得分,還是股票價格,表都是簡單而又有效的溝通方法。因此,FIT 創建者選擇表作為精良武器,使用戶能夠通過示例與軟件行為進行通信。這減少了責任不明的情況,并由用戶負責明確地定義軟件系統。

    靈活性(允許進行更改)是現代軟件系統的重要特征。持續增長的競爭力迫使業務用戶不斷添加更多的特性和功能。FIT 測試通過定義更改,并確保軟件修改不影響以前滿足的需求,從而幫助增加了靈活性。FIT 表作為一種機制,用來傳達所開發軟件的結果,它在軟件開發過程中像一盞指路明燈,并側重于業務價值。

    但是,隨著靈活性的提高和不斷進行的更改,失去穩定性的風險也在增加。FIT 表通過確保將底層系統的任何更改(包括重構和增強)立即以可視方式傳達給該系統的各利益相關者,可以幫助恢復“被測系統 (SUT)”所需的平衡。





    回頁首


    使用 FIT 進行測試計算

    按照給定業務規則進行測試計算是軟件測試的重要組成部分。采用表和具體示例的形式溝通業務需求可以幫助您了解所需內容。

    示例:FIT 計算表

    此示例中計算測試的業務規則是:

    將價值 500 美元的美國獎學金授予“學術評估測驗 (SAT)”分數至少為 2000 的學生,每超過 100 分增加 500 美元。表中的示例數據摸擬了 SAT 分數和所得獎學金之間關系的幾種情形。例如,如果分數為 2300,則獎學金為 2000 美元。

    表 1 是 FIT 表的一個示例,它摸擬了此業務規則的預期行為。該規則計算了學生根據他們的 SAT 分數應得到的獎學金。


    表 1. 使用 ColumnFixture 表的 FIT 計算
    CalculateScholarship
    Score Scholarship()
    1000 0
    1999 0
    2000 500
    2050 500
    2100 1000
    2200 1500
    2300 2000
    2350 2000
    2400 2500

    表中的第一行顯示要測試的 fixture 名稱。fixture 類的作用相當于驅動程序,確定如何根據 SUT 來測試表中的示例數據集。在本示例中,fixture 是 CalculateScholarship。

    因為本示例涉及一個 ColumnFixture 表,所以第二行會標識給定的和計算的字段列名稱。在本示例中,Score 列表示輸入值,Scholarship() 列表示預期的計算結果。





    回頁首


    為 ColumnFixture 表創建一個 FIT fixture

    要讓框架能夠處理表 1,必須創建一個 fixture,或創建一個中間 Test Adapter 類,告訴 FIT 如何與您的軟件通信。清單 1 顯示了 CalculateScholarship fixture。


    清單 1. CalculateScholarship fixture
    public class CalculateScholarship extends ColumnFixture {
                public int score;
                public int scholarship(){
                ScholarshipSystem scholar  = new ScholarshipSystem();
                return scholar.calculateScholarship(score);
                }
                }
                

    此 fixture 將調用清單 2 中顯示的 SUT ScholarshipSystem 類,然后調用該類上的 calculateScholarship() 方法。


    清單 2. ScholarshipSystem 類
    public class ScholarshipSystem  {
                public int calculateScholarship(int score){
                int scholarship  = 0;
                if(score<2000)
                return scholarship;
                else
                scholarship = 500;
                scholarship = scholarship + ((score - 2000)/100) * 500;
                return scholarship;
                }
                }
                

    您可以根據測試的內容對不同類型的 fixture 進行擴展。在上面的示例中,我使用 ColumnFixture 將表中的列映射為 fixture 中的變量和方法。

    表中的兩個列對應于 fixture 中的變量。包含預期結果的第二列對應于 fixture 中的 scholarship() 方法。為計算結果,我將 ScholarshipSystem 類用作 SUT。





    回頁首


    在 Eclipse 中使用 FIT 測試

    為了演示如何在 Eclipse 環境中使用 FIT,我使用了 Extended FIT Eclipse 插件,它提供了一個簡單的用戶界面 (UI),用于加載 FIT 輸入和輸出文件。此插件基于 FIT Library 基本插件。

    安裝 Extended FIT Eclipse 插件

    要安裝 Extended FIT Eclipse 插件,請完成下列操作步驟:

    1. 下載核心 FIT Eclipse 插件。
    2. 解壓縮 .zip 文件內容,將 .jar 文件復制到 Eclipse 安裝所在的 Plugins 文件夾中。
    3. 下載 Extended FIT Eclipse 插件。
    4. 將 .jar 文件復制到 Eclipse 安裝所在的 Plugins 文件夾中。
    5. 重新啟動 Eclipse。

    現在,您會看到一個新的 FIT 菜單和 Run FIT 工具欄按鈕(參見圖 2)。如果是這樣,則表明您已成功安裝了 Extended FIT Eclipse 插件。


    圖 2. 在 Eclipse 中安裝的 Extended FIT 插件
    Extended FIT 插件

    Extended FIT Eclipse 插件與 FIT .jar 文件捆綁在一起,所以您無需單獨安裝 FIT .jar 文件就可以運行測試。但是,要開發自已的 fixture,可能需要將 FIT .jar 文件添加到您的構建路徑中。

    測試其他類型的 fixture

    您可以使用此處所示的方法(即使用 FIT 表和 fixture 測試計算結果)來測試其他 FIT 表。例如,使用 ActionFixtures fixture 測試業務處理流程,而使用 RowFixtures fixture 測試預期的搜索或查詢結果。使用 Extended FIT Eclipse 插件測試此類 fixture 的惟一不同之處是您編寫的 fixture 會擴展不同類型的 Base Fixture 類。

    使用 Extended FIT Eclipse 插件

    若要使用 Extended FIT Eclipse 插件,您需要三個文件:

    • 一個包含所有輸入 FIT 表的輸入 .html 文件
    • 一個包含 FIT 測試運行結果的輸出 .html 文件
    • 一個包含所有自定義 fixture 類的單獨 .jar 文件

    注意:當創建自定義 fixture 類時,一定要使用您喜歡的構建工具將它們捆綁為一個 .jar 文件。Extended FIT Eclipse 插件需要此 .jar 文件的位置才能運行 FIT 測試。

    有了 Extended FIT Eclipse 插件所需的所有文件后,您可以通過完成以下操作步驟來著手運行 FIT 測試:

    1. 單擊 Run FIT。
    2. 單擊 Browse i/p 添加輸入文件名。
    3. 單擊 Browse o/p 找到輸出文件。
    4. 單擊 Browse fixture Jar 找到 fixture .jar 文件。
    5. 單擊 Run FIT。

    FIT 采用 .html 文件作為輸入文件;因此,應將輸入文件名配置為與之相同(參見圖 3)。


    圖 3. 使用 Extended FIT Eclipse 插件運行測試
    運行測試

    Extended FIT Eclipse 插件功能

    用于 Eclipse 的 Extended FIT Eclipse 插件的作用相當于簡單的包裝,充當底層 FIT 庫的一個委派。單擊 Run FIT 后,Extended FIT Eclipse 插件通過將所選輸入和輸出文件作為參數傳遞給 FIT FileRunner 類來調用并運行該類。FIT FileRunner 類會依次解析輸入文件,并將 FIT 運行的結果寫入您選擇的輸出文件中。如果一切順利,就會在窗口中顯示運行結果。





    回頁首


    展望

    在本文中,您了解到 FIT 如何讓用戶和工程師就他們的軟件架起溝通的橋梁。通過創建切實的示例,用戶可以讓工程師清楚地了解他們必須構建什么內容。您還了解到如何將 FIT 和 Eclipse 完美地結合在一起,不但讓開發人員可以編寫 fixture,而且可以運行 FIT 表來驗證他們的軟件。通過擴展核心 FIT Eclipse 插件,您了解到如何使用 Eclipse 執行基于計算規則的 FIT 測試,同時它也可以方便地應用于其他形式的 FIT 測試。

    在本系列文章的下一篇中,您將了解如何構建 Extended Eclipse FIT 插件。還將學習如何使用 FIT 在 Eclipse 的“插件開發環境 (PDE)”中測試插件本身。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品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>