qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          JMeter入門(4):Java Request實例

           目的:對Java程序進行測試
            一、核心步驟
            1.創建一個Java工程;
            2.將JMeter的lib目錄下的jar文件添加進此工程的Build Path;
            3.創建一個類并實現JavaSamplerClient接口或繼承AbstractJavaSamplerClient,并重寫:
          public Arguments getDefaultParameters():設置可用參數及的默認值;
          public void setupTest(JavaSamplerContext arg0):每個線程測試前執行一次,做一些初始化工作
          public SampleResult runTest(JavaSamplerContext arg0):開始測試,從arg0參數可以獲得參數值;
          public void teardownTest(JavaSamplerContext arg0):測試結束時調用;
          4.Export為Runnable Jar File;
            5.將此jar包放入JMETER_HOME\lib\ext目錄;
            6.以管理員身份打開JMeter;
            7.創建線程組、Java Request、結果樹,進行測試;
            二、實例
            利用JMeter對服務進行性能測試,服務為:將輸入的兩個參數通過IO存入文件;
            1、編寫Java代碼
            服務:
          package test;
          import java.io.File;
          import java.io.PrintWriter;
          public class OutputService {
          public static void output(String filename,int a, int b) throws Exception {
          PrintWriter out = new PrintWriter(new File(filename));
          out.write(a+":"+b);
          out.close();
          }
          }
            測試類:
          package test;
          import org.apache.jmeter.config.Arguments;
          import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
          import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
          import org.apache.jmeter.samplers.SampleResult;
          public class PerformenceTest implements JavaSamplerClient {
          private SampleResult results;
          private String a;
          private String b;
          private String filename;
          // 設置傳入的參數,可以設置多個,已設置的參數會顯示到Jmeter的參數列表中
          public Arguments getDefaultParameters() {
          Arguments params = new Arguments();
          params.addArgument("filename", "0");//設置參數,并賦予默認值0
          params.addArgument("a", "0");//設置參數,并賦予默認值0
          params.addArgument("b", "0");//設置參數,并賦予默認值0
          return params;
          }
          // 初始化方法,實際運行時每個線程僅執行一次,在測試方法運行前執行
          public void setupTest(JavaSamplerContext arg0) {
          results = new SampleResult();
          }
          // 測試執行的循環體,根據線程數和循環次數的不同可執行多次
          @Override
          public SampleResult runTest(JavaSamplerContext arg0) {
          b = arg0.getParameter("b"); // 獲取在Jmeter中設置的參數值
          a = arg0.getParameter("a"); // 獲取在Jmeter中設置的參數值
          filename = arg0.getParameter("filename"); // 獲取在Jmeter中設置的參數值
          results.sampleStart();// jmeter 開始統計響應時間標記
          try {
          OutputService test = new OutputService();
          test.output(filename,Integer.parseInt(a), Integer.parseInt(b));
          results.setSuccessful(true);
          // 被測對象調用
          } catch (Throwable e) {
          results.setSuccessful(false);
          e.printStackTrace();
          } finally {
          results.sampleEnd();// jmeter 結束統計響應時間標記
          }
          return results;
          }
          // 結束方法,實際運行時每個線程僅執行一次,在測試方法運行結束后執行
          public void teardownTest(JavaSamplerContext arg0) {
          }
          public static void main(String[] args) {
          // TODO Auto-generated method stub
          Arguments params = new Arguments();
          params.addArgument("a", "0");//設置參數,并賦予默認值0
          params.addArgument("b", "0");//設置參數,并賦予默認值0
          JavaSamplerContext arg0 = new JavaSamplerContext(params);
          PerformenceTest test = new PerformenceTest();
          test.setupTest(arg0);
          test.runTest(arg0);
          test.teardownTest(arg0);
          }
          }
          Export 為 Runnable Jar File;

          2、設置JMeter
            以管理員身份打開JMeter,并創建Java Request后,結構如下圖所示:
            在Java請求中發現了自己新建的測試類:
            我們在JMeter中發現參數有三個:
            我們在響應的數值中填入:
            大家一定很奇怪,怎么會有一些看不懂的東西,這是JMeter提供的函數,我們可以在
            因為我們要做的是性能測試,因此我們需要開多個線程并發測試,因此隨機數很重要;
            常用的函數為:
            (1)_Random生成隨機整數;
            (2)_RandomString生成隨機字符串;
            在線程組中設置并發線程數為10000,保存后即可運行;
            圖形結果如下所示:
          聚合報告:
            表格查看結果:
            結果成功,成功生成了接近10000個文件:
            3.期間遇到的問題
            3.1 Export為Jar File導致Java Request的類名稱無法找到;
            3.2 JMeter java.lang.OutOfMemoryError: PermGen space問題:
            在JMeter.bat 中修改:
            set HEAP=-Xms512m -Xmx1024m
            set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
            set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%
            set TENURING=-XX:MaxTenuringThreshold=2
            set RMIGC=-Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000
            set PERM=-XX:PermSize=256m -XX:MaxPermSize=512m
            3.3 JMeter需要以管理員身份打開,否則會出現:
          相關文章:

          posted on 2013-11-19 11:09 順其自然EVO 閱讀(452) 評論(0)  編輯  收藏 所屬分類: jmeter and badboy

          <2013年11月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 古浪县| 永定县| 宁化县| 汕尾市| 息烽县| 夹江县| 泰宁县| 普宁市| 浦县| 新巴尔虎左旗| 栖霞市| 囊谦县| 中卫市| 鄂温| 商南县| 嘉义市| 隆林| 海原县| 长宁县| 万源市| 宣恩县| 东阿县| 黄山市| 高唐县| 沧州市| 韩城市| 湖北省| 岱山县| 略阳县| 黔江区| 岢岚县| 桃源县| 大连市| 梁平县| 九龙城区| 鲜城| 桓台县| 原阳县| 安西县| 新巴尔虎右旗| 紫阳县|