zoukankan      html  css  js  c++  java
  • 性能测试十一:jmeter进阶之java请求

    使用Java编写JDBC脚本对Mysql进行增删改查等操作的性能测试

    使用Jmeter提供的脚本框架依赖的jar包(分别在jmeter目录下的lib和ext目录下)

    ApacheJMeter_core.jar

    ApacheJMeter_java.jar

    avalon-framework-4.1.4.jar jorphan.jar

    logkit-2.0.jar

    若为4.+以上的jmeter还需加两个 slf4j-api-的.jar包

    脚本调试好后,导出为jar包,放在apache-jmeter-3.1libext目录下

    Jmeter脚本要点

    1,实现JavaSamplerClient接口

    2,四个方法:

    getDefaultParameters:获取参数,设置的参数会在Jmeter的参数面板上显示出来

    setupTest:初始化方法,只执行一次,跟LR里的init方法一样的,用于建立链接

    runTest:执行N次,处理业务

    teardownTest:结束方法,只执行一次,LR里的end方法是一样的,用于释放资源

    3,导出Jmeter的java脚本

    导出之前先把脚本运行一遍,使用main方法,空的也行

    file-export-runnable java file - launch configuration 那里要选择你的类名

    Library handing那里选择第三项copy xxxx

    将导出的xxx.jar 和xxx_lib文件夹放到Jmeter的lib/ext目录下

    重新启动Jmeter

     创建class文件时在interfaces处add->JavaSamplerClient

     

    package cn.test.jmeter;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;

    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 MyJmeterTest implements JavaSamplerClient {

    // 全局变量
    PreparedStatement statement;
    Connection conn;

    @Override
    public Arguments getDefaultParameters() {
    // TODO Auto-generated method stub
    return null;
    }

    /**
    * 初始化的操作写在setup方法里,类似于LR里的init
    */
    @Override
    public void setupTest(JavaSamplerContext arg0) {
    // 注册驱动,告诉Java接下来要链接哪个数据库
    try {
    Class.forName("com.mysql.jdbc.Driver");
    // 建立mysql数据库链接
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/oa", "root", "123456");
    // 把sql进行编译
    statement = conn.prepareStatement("insert into itcast_role (name, description) values (?,?)");
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    /**
    * 真正多次操作的业务,放在runtest方法里,类似于LR里的action
    */
    @Override
    public SampleResult runTest(JavaSamplerContext arg0) {
    SampleResult result = new SampleResult();
    // 给事务起个名称
    result.setSampleLabel("insert");
    // 事务开始
    result.sampleStart();
    // 执行sql之前,先进行参数化
    try {
    statement.setString(1, "abc");
    statement.setString(2, "test");
    int rows = statement.executeUpdate();
    if (rows > 0){
    // 事务成功
    result.setSuccessful(true);
    }else{
    // 事务失败
    result.setSuccessful(false);
    }

    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    // 事务结束
    result.sampleEnd();

    return result;
    }


    /**
    * 结束的操作放在teardown里,类似于LR里的end
    */
    @Override
    public void teardownTest(JavaSamplerContext arg0) {
    // 关闭链接
    try {
    conn.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }

    public static void main(String[] args) {
    MyJmeterTest test = new MyJmeterTest();
    // 创建一个JavaSamplerContext对象,该对象创建的时候需要传入一个Arguments对象
    JavaSamplerContext context = new JavaSamplerContext(new Arguments());
    test.setupTest(context);
    test.runTest(context);
    test.teardownTest(context);
    }

    }

     导出到jmeter中用

    拷贝到jmeter的lib_ext下,包括二次开发的脚本也都是放在这个目录下,重启jmeter

    创建一个java请求

  • 相关阅读:
    .NET实现Excel文件的读写 未测试
    权限管理设计
    struts1中配置应用
    POJ 2139 Six Degrees of Cowvin Bacon(floyd)
    POJ 1751 Highways
    POJ 1698 Alice's Chance
    POJ 1018 Communication System
    POJ 1050 To the Max
    POJ 1002 4873279
    POJ 3084 Panic Room
  • 原文地址:https://www.cnblogs.com/malinalian/p/10582987.html
Copyright © 2011-2022 走看看