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

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

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

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

    用 JUnitPerf 進行性能測試

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

    領測軟件測試網
    在應用程序的開發周期中,性能測試常被放到最后考慮,這并不是因為它不重要,而是因為存在這么多未知變量,很難有效地測試。在本月的 追求代碼質量 系列中,Andrew Glover 使性能測試成為開發周期的一部分,并介紹了兩種簡單的實現方法。

    在應用程序的開發中,驗證應用程序的性能幾乎總處于次要的地位。請注意,我強調的是驗證 應用程序的性能。應用程序的性能總是 首要考慮的因素,但開發周期中卻很少包含對性能的驗證。

    由于種種原因,性能測試常被延遲到開發周期的后期。以我的經驗,企業之所以在開發過程中不包含性能測試是因為,他們不知道對于正在進行開發的應用程序要期待什么。提出了一些(性能)指數,但這些指數是基于預期負載提出的。

    發生下列兩種情況之一時,性能測試就成為頭等大事:

    • 生產中出現顯而易見的性能問題。
    • 在同意付費之前 ,客戶或潛在客戶詢問有關性能指數的問題。

    本月,我將介紹兩種簡單的性能測試技術,在上述兩種情況中的任何一種發生前進行測試。

    用 JUnitPerf 進行測試

    在軟件開發的早期階段,使用 JUnit 很容易確定基本的低端性能指數。JUnitPerf 框架能夠將測試快速地轉化為簡單的負載測試,甚至壓力測試。

    可使用 JUnitPerf 創建兩種測試類型:TimedTestLoadTest。這兩種類型都基于 Decorator 設計模式并利用 JUnit 的 suite 機制。TimedTest 為測試樣例創建一個(時間)上限 —— 如果超過這個時間,那么測試失敗。LoadTest 和計時器一起運行,它通過運行所需的次數(時間間隔由配置的計時器控制),在一個特定的測試用例上創建一個人工負載。





    回頁首


    恰當的時限測試

    JUnitPerf TimedTest 讓您可以編寫有相關時間限制的測試 —— 如果超過了該限度,就認為測試是失敗的(即便測試邏輯本身實際上是成功的)。在測試對于業務致關重要的方法時,時限測試相比其他測試來說,在確定和監控性能指數方面很有幫助。甚至可以測試得更加細致一些,可以測試一系列方法來確保它們滿足特定的時間限制。

    例如,假設存在一個 Widget 應用程序,其中,特定的對于業務致關重要的方法(如 createWidget())是嚴格的性能限制的測試目標。假設需要對執行該 create() 方法的功能方面進行性能測試。這通常會由不同的團隊使用不同的工具在開發周期的后期加以確定,這通常不能指出精確的方法。但假設決定選擇早期經常測試 方法取而代之。

    創建 TimedTest 首先要創建一個標準的 JUnit 測試。換言之,將對 TestCase 或其派生類進行擴展,并編寫一個以 test 開頭的方法,如清單 1 所示:


    清單 1. 簡單的 widget 測試
    public class WidgetDAOImplTest extends TestCase {	 private WidgetDAO dao; public void testCreate() throws Exception{  IWidget wdgt = new Widget();  wdgt.setWidgetId(1000);  wdgt.setPartNumber("12-34-BBD");    try{   this.dao.createWidget(wdgt);  }catch(CreateException e){   TestCase.fail("CreateException thrown creating a Widget");  }	     } protected void setUp() throws Exception {         ApplicationContext context =    new ClassPathXmlApplicationContext("spring-config.xml");        this.dao = (WidgetDAO) context.getBean("widgetDAO");       }   	}

    由于 JUnitPerf 是一個基于裝飾器的框架,為了真正地駕馭它,必須提供一個 suite() 方法并將現有的測試裝飾以 TimedTest。TimedTestTest 和執行該測試的最大時間量作為參數。

    也可以選擇傳入一個 boolean 標志作為第三個參數(false),這將導致測試快速失敗 —— 意味著如果超過最大時間,JUnitPerf 將立即 迫使測試失敗。否則,測試樣例將完整運行,然后失敗。區別很微妙:在一個失敗的樣例中,不帶可選標志運行測試可以幫您了解運行總時間。傳入 false 值卻意味著得不到運行總時間。

    例如,在清單 2 中,我在運行 testCreate() 時設定了一個兩秒鐘的上限。如果執行總時間超過了這個時間,測試樣例將失敗。由于我并未傳入可選的 boolean 參數,該測試將完整運行,而不管運行會持續多久。


    清單 2. 為生成 TimedTest 而實現的 suite 方法
    public static Test suite() { long maxElapsedTime = 2000; //2 seconds  Test timedTest = new TimedTest(   new WidgetDAOImplTest("testCreate"), maxElapsedTime); return timedTest;    			}

    此測試通常在 JUnit 框架中運行 —— 現有的 Ant 任務、Eclipse 運行器等等,會像運行任何其他 JUnit 測試一樣運行這個測試。惟一的不同是,該測試將發生在計時器的上下文中。

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

    TAG: junit Junit JUnitPerf JUnit

    21/212>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(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>