<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

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

    性能測試分享—JMeter篇

     這周嘗試了一把性能測試,之前都是測試網站的性能測試,java接口的性能測試還是頭一次,學到了很多,特此分享一下。
      主要用到了兩個性能測試工具,一個是jmeter,一個是LoadRunner
      使用jmeter的測試方法:
      1、下載jemeter的linux版本的,下載的文件里包含了兩個jar包,一個是ApacheJMeter_core.jar,ApacheJMter_java.jar。分別把這兩個jar放到eclipse的Java Build Path的libraries下面。
      2、創建編寫腳本的類,使他繼承AbstractJavaSamplerClient。初步結構是
    private SampleResult results;
    public void setupTest(JavaSamplerContext arg0) {
    results = new SampleResult();
    }
    public Arguments getDefaultParameters() {
    Arguments params = new Arguments();
    return params;
    }
    //測試執行的循環體,根據線程數和循環次數的不同可執行多次,類似于LoadRunner中的Action方法
    public SampleResult runTest(JavaSamplerContext arg0) {
    results.sampleStart();
    results.sampleEnd();
    results.setSuccessful(true);
    return results;
    }
    //結束方法,實際運行時每個線程僅執行一次,在測試方法運行結束后執行,類似于LoadRunner中的end方法
    public void teardownTest(JavaSamplerContext arg0) {
    }
     將需要循環的業務流程放到runTest方法里。編寫好的代碼如下:
    package app;
    import http.HttpClient4;
    import http.HttpParameter;
    import http.HttpResp;
    import http.JsonUtil;
    import java.io.IOException;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.Map;
    import java.util.Random;
    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.HttpException;
    import org.apache.commons.httpclient.methods.PostMethod;
    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;
    import com.yeepay.g3.utils.common.encrypt.AES;
    import com.yibao.utils.des3.RSA_Encrypt;
    public class TheardTest extends AbstractJavaSamplerClient{
    private SampleResult results;
    public void setupTest(JavaSamplerContext arg0) {
    results = new SampleResult();
    }
    public Arguments getDefaultParameters() {
    Arguments params = new Arguments();
    return params;
    }
    public static String ramdonNum(int num){
    Random rd = new Random();
    StringBuilder sb = new StringBuilder("");
    if (num <1){
    return null;
    }
    else{
    for(int i=1;i<=num;i++){
    int sr=rd.nextInt(9);
    sb.append(String.valueOf(sr));
    }
    return sb.toString();
    }}
    public static void testCreditPay() throws ParseException{
    String PUBLIC_KEY=TheardTest.testConsult();
    HttpClient client = new HttpClient();
    PostMethod method = new PostMethod("http://xxxxxxxx/xxxxxx/api/bankcard/credit/pay");
    String key=TheardTest.ramdonNum(6);
    String encryptkey = "0123456789"+key;
    String merchantAccount = "YB01000000078";
    //民生
    String cardNo ="XXXXXXXXX";
    String validthru="xxx7";
    String cvv2 = "6xx";
    String phone = "13xxxxxx5431";
    String orderId = "33hhkssseef3utyt2"+key;
    System.out.println(orderId);
    Integer transtime = (int)(System.currentTimeMillis()/1000);
    Integer currency = 156;
    String  amount = "50";
    String productcatalog = "1";
    String productName = "123";
    String productDesc = "小丸子";
    String userIp = "123.45.45.45";
    String identityId = "a";
    Integer identityType = 6;
    String other = "eeee";
    String data = "{\"merchantaccount\":\"" + merchantAccount
    +"\",\"cardno\":\"" + cardNo
    + "\",\"validthru\":\"" + validthru
    + "\",\"cvv2\":\"" + cvv2
    + "\",\"phone\":\"" + phone
    + "\",\"orderid\":\"" + orderId
    + "\",\"transtime\":" + transtime
    + ",\"currency\":" + currency
    + ",\"amount\":" + amount
    + ",\"productcatalog\":\"" + productcatalog
    + "\",\"productname\":\"" + productName
    + "\",\"productdesc\":\"" + productDesc
    + "\",\"userip\":\"" + userIp
    + "\",\"identityid\":\"" + identityId
    + "\",\"identitytype\":" + identityType
    + ",\"other\":\"" + other + "\"}";
    data = AES.encryptToBase64(data, encryptkey);
    try {
    method.setParameter("merchantaccount", merchantAccount);
    method.setParameter("data", data);
    method.setParameter("encryptkey", RSA_Encrypt.encrypt(encryptkey, PUBLIC_KEY));
    client.executeMethod(method);
    System.out.println(method.getStatusLine());
    String respStr = method.getResponseBodyAsString();
    System.out.println(respStr);
    String result = AES.decryptFromBase64(respStr, encryptkey);
    System.out.println(result);
    //                    自動退款
    Map<String, Object> mapjson=JsonUtil.parse(result);
    Object obj = mapjson.get("yborderid");
    String yborderid=obj.toString();
    System.out.println("流水號:"+yborderid);
    TheardTest.refundTeseCase(yborderid,merchantAccount,amount);
    method.releaseConnection();
    } catch (HttpException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    /**
    * 測試協商接口
    * @author shangwei
    * @return
    * @throws ParseException
    *
    */
    public static String testConsult() throws ParseException{
    String url = "http://xxxxxxx/xxxxxx/consult";
    HttpClient4 client =HttpClient4.createDefault();
    String data = "";
    Date d = new Date();
    Calendar now = Calendar.getInstance();
    now.setTime(d);
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String dateline=format.format(now.getTime());
    System.out.println(dateline);
    Date date = format.parse(dateline);
    String dates=date.getTime()/1000+"";
    System.out.println(dates);
    try {
    data = AES.encryptToBase64(dates, "12345678901234HH");
    } catch (Exception e) {
    e.printStackTrace();
    }
    HttpParameter parameter = new HttpParameter();
    parameter.add("data", data);
    parameter.add("merchantaccount", "YB01000000078");
    HttpResp resp = new HttpResp();
    try{
    resp=client.doPost(url, parameter, "utf-8");
    String respStr= resp.getText("utf-8");
    System.out.println(respStr);
    String aes=AES.decryptFromBase64(respStr, "12345678901234HH");
    System.out.println(aes);
    return aes;
    }catch (HttpException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    client.shutdown();
    return "出錯啦";
    }
    public static void refundTeseCase(String yborderid,String merchantAccount,String amount) throws IOException{
    String url ="http://xxxxxxxx/xxxxxxx/api/refund/direct";
    HttpClient4 client =HttpClient4.createDefault();
    HttpParameter parameter = new HttpParameter();
    parameter.add("merchantaccount", merchantAccount);
    parameter.add("merchantrefundid", "093032323");
    parameter.add("transorderid", yborderid);
    parameter.add("amount", amount);
    HttpResp rep;
    try {
    rep = client.doPost(url, parameter,"utf-8");
    System.out.println(rep.getStatusCode());
    System.out.println(rep.getText("utf-8"));
    }catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    //測試執行的循環體,根據線程數和循環次數的不同可執行多次,類似于LoadRunner中的Action方法
    public SampleResult runTest(JavaSamplerContext arg0) {
    results.sampleStart();
    try {
    testCreditPay();
    } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    results.sampleEnd();
    results.setSuccessful(true);
    return results;
    }
    //結束方法,實際運行時每個線程僅執行一次,在測試方法運行結束后執行,類似于LoadRunner中的end方法
    public void teardownTest(JavaSamplerContext arg0) {
    }
    }
      3、將寫好的class類和該類引入到的類都打成jar包,放到jemter文件的lib/ext文件下。將用到的其他的jar包放到lib文件夾下面。
      4、啟動jemter后,創建先添加線程組,在添加sampler的java請求,如果之前步驟成功,在類名稱下拉列表里會出現測試代碼打好jar包的類。之后操作jemter進行測試就OK啦。
      下面在分享LoadRunner進行性能測試及環境優化。

    posted on 2014-01-02 09:24 順其自然EVO 閱讀(858) 評論(0)  編輯  收藏 所屬分類: jmeter and badboy

    <2014年1月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久久久国色AV免费看图片| 久久久久亚洲Av无码专| 67194熟妇在线永久免费观看| 免费人成视频在线观看免费| 亚洲国产午夜电影在线入口| 亚洲精品成人无码中文毛片不卡| 毛片免费观看的视频| 在线成人爽a毛片免费软件| 国产精品免费久久久久电影网| 99久久国产亚洲综合精品| 亚洲第一精品电影网| 久久精品国产亚洲香蕉| 中文字幕不卡亚洲| 亚洲日韩人妻第一页| 国产乱子伦片免费观看中字| 成年人在线免费观看| 青青青国产在线观看免费网站 | 国产成人一区二区三区视频免费| 免费大片黄在线观看| 亚洲精品无播放器在线播放| 久久精品国产亚洲av麻豆图片| 91亚洲国产成人久久精品网站 | 成人网站免费大全日韩国产| 免费人成动漫在线播放r18| 国产综合成人亚洲区| 亚洲色偷偷综合亚洲AV伊人蜜桃| 亚洲av片不卡无码久久| 亚洲看片无码在线视频| 亚洲一区二区三区无码国产| 亚洲国产成a人v在线观看 | 在线观看成人免费视频不卡| 特级精品毛片免费观看| 日韩内射激情视频在线播放免费| 999zyz**站免费毛片| 久久九九全国免费| 免费无遮挡无码永久视频| 久久99国产乱子伦精品免费| 91精品国产免费入口| 嫖丰满老熟妇AAAA片免费看| 一二三四在线播放免费观看中文版视频| 国产国产人免费视频成69堂|