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

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

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

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

    使用JMeter測試你的EJB

    發布: 2009-8-24 18:41 | 作者: 網絡轉載 | 來源: 領測軟件測試網 | 查看: 112次 | 進入軟件測試論壇討論

    領測軟件測試網 對EJB進行一些性能基準測試是非常有必要和有幫助的,測試的方法和工具有很多,不過我最近發現,Apache JMeter是進行基準測試的一個優秀工具?上У氖,JMeter沒有提供一個可測試任意EJB的通用取樣器(sampler),不過,我們可以自己動手來創建一個。

      首先,讓我們簡單的了解一下Apache JMeter,它是一個100%的純Java桌面應用,可用于壓力測試和性能測量。它最初被設計用于Web應用測試但后來擴展到其他測試領域。

      在本篇文章中,我使用JBoss應用服務器來運行我的EJB。使用其它容器的實現過程應該也非常類似。

      1、首先為EJB創建一個工廠(factory)類

      我們需要做的第一件事情是,創建一個簡單的Singleton factory class,以為你的測試創建EJB客戶端實例。參考代碼如下:

      public class MyServiceFactory {

      private static final Log log = LogFactory.getLog(MyServiceFactory.class);

      private static MyService service;

      private static MyServiceFactory me;

      private MyServiceFactory() { }

      static {

      MyServiceFactory.me = new MyServiceFactory();

      }

      public static MyServiceFactory getInstance() {

      return MyServiceFactory.me;

      }

      public MyService getService() {

      if (MyService.service == null) {

      try {

      log.info("Loading the service...");

      Context ctx = new InitialContext();

      service = (MyService)ctx.lookup("MyAction/remote");

      if (service == null) {

      log.error("Didn't get the service!");

      }

      } catch (NamingException e) {

      log.error("Error looking up the remote service", e);

      return null;

      }

      }

      return service;

      }

      }

    2、編寫測試代碼

      接下來我們需要自己編寫測試代碼,為了實現這個目的,我們可以對JMeter的 org.apache.jmeter.protocol.java.sampler包中的AbstractJavaSamplerClient類進行擴展。這個抽象類具有一個runTest方法,我們需要對其進行重寫(override),使用這個方法來實現實際的測試。另外,我們還將重寫 getDefaultParameters方法,以使其提供某些合理的默認值,它們將在JMeter圖形應用界面中顯示。

      package us.mikedesjardins.demo.jmeter;

      import org.apache.jmeter.config.Arguments;

      import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;

      import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;

      import org.apache.jmeter.samplers.SampleResult;

      public class DigitalContentServiceEJBTestSampler extends AbstractJavaSamplerClient {

      public SampleResult runTest(JavaSamplerContext context) {

      SampleResult results = new SampleResult();

      MyService service = MyServiceFactory.getInstance().getService();

      results.sampleStart();

      Long param1 = context.getLongParameter("PARAM_1");

      String param2 = context.getStringParameter("PARAM_2");

      MyResult result = service.myMethod(param1, param2);

      if (result != null) {

      results.setSuccessful(true);

      results.setResponseCodeOK();

      results.setResponseMessage("'myResult:" + myResult);

      } else {

      results.setSuccessful(false);

      }

      results.sampleEnd();

      return results;

      }

      @Override

      public Arguments getDefaultParameters() {

      Arguments args = new Arguments();

      args.addArgument("PARAM_1", "4815162342");

      args.addArgument("PARAM_2", "Iculus");

      return args;

      }

      }

      3、運行JMeter

      JMeter的擴展lib目錄是${JMETER_INSTALL_LIB}/lib/ext。你需要把所有EJB客戶端所需要的jar文件拷貝到這個目錄中。如果你使用的是JBoss,則需要把jbossall-client.jar拷貝到這個目錄中;對于其它應用服務器,則拷貝類似的客戶端jar文件到這個目錄。

      當你啟動JMeter后,你的新取樣器(sampler)將會出現在它的Sampler菜單中,這樣你就可以使用它來測試你的EJB了。

     

    延伸閱讀

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

    TAG: ejb EJB jmeter JMeter Jmeter


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