zoukankan      html  css  js  c++  java
  • Jmeter高级编程

    一、JMeter 内置函数
     以两个下划线开头。
     函数区分大小写。
     ${__char(ascii1,ascii2,...)}
     返回指定ascii 的字符
     ${__machineIP(存入变量名)}
     返回本机IP
     若省略变量名,则直接输出IP
     ${__threadNum}
     返回当前线程号
     函数后的括号可以省略
     ${__time(格式,存入变量)}
     直接使用返回1970/1/1 至今的秒数
     获取日期时间,Y 年,MM 月,dd 日,hh,mm,ss
     格式不必加引号
     ${__UUID}
     生成一个唯一的字符串
     ${__Random(初值,终值,存入变量名)}
     生成随机数
     ${__RandomString(length,seed,variable)}
     用于生成随机字符串。
     length
     指定字符串长度。
     seed
     字符串种子(基于这些字符自由组合成将来的字符串)。
     variable
     生成的字符串存入此变量。

    二、Jmeter 访问MySQL 数据库
     加载数据库驱动包
     点击测试计划-->点击中间底部"浏览"-->选中mysql 驱动jar 包-->打开
     配置数据库连接参数
     配置元件→JDBC Connection Configuration
     通常加到线程组前面
     Variable Name
     输入数据库连接名
     Validation Query
     Select 1
     表示检查select 语法
     Database URL
     jdbc:mysql://localhost:3306/数据库名
     JDBC Driver class
     com.mysql.jdbc.Driver
     不同数据库的URL 和驱动程序不同。
     添加JDBC Request
     Variable Name
     即前面的数据库连接名
     Query Type
     select 用于查询,update 用于插入和更新(含删除)
     其它设置保持默认
     Prepared(预编译查询)
     在sql 语句中使用“?”代替实际数据,将来使用参数数据替换“?”
     Parameter values
     参数值,多个用逗号间隔,将来替换sql 语句中的“?”
     Parameter types
     参数的类型
     必填,且与参数值个数要一致
     Variables names
     省略时,与表中列名相同
     后续若要使用参数名,则不能省略,以后可以使用${变量名_1}、${变量名_2}
    等访问,数字表示行号,不需要记录集的名字
     Result variable name
     结果集的名字
     访问:vars.getObject("rs").get(0).get("uname")
     rs 表示记录集名称
     0 表示第1 行
     uname 表示列名

    三、测试Java 程序
    1 编译软件
     Jmeter 没有自带编译器,需要借助第三方编译器才能实现。
     Eclipse 导入包
     apache-jmeter-3.0lib
     avalon-framework-4.1.4.jar
     jorphan.jar
     logkit-2.0.jar
     apache-jmeter-3.0libext
     ApacheJMeter_core.jar
     ApacheJMeter_java.jar
     以上包需要全部导入
    2 被测程序
    public class Add{
    public int sum(int a,int b)
    {
    return a+b; r
    }
    public static void main(String args[]){
    Add math = new Add();
    System.out.println(math.sum(1, 2));
    }
    }
    3 测试程序
    public class JavaTest extends AbstractJavaSamplerClient {
    private Add test=null;
    private String a;
    private String b;
    private String result;
    //定义参数
    public Arguments getDefaultParameters() {
    Arguments params = new Arguments();
    params.addArgument("num1", "");//参数num1,初值为空,jmeter 可更改此值
    params.addArgument("num2", "");
    return params;
    }
    //每个线程测试前执行一次,做一些初始化工作,取参数值
    public void setupTest(JavaSamplerContext arg0) {
    test = new Add();
    a = arg0.getParameter("num1");//获取参数值
    b = arg0.getParameter("num2");
    }
    //开始测试,从arg0 参数可以获得参数值
    public SampleResult runTest(JavaSamplerContext arg0) {
    SampleResult sr = new SampleResult();//取样器
    sr.setSamplerData("请求参数num1:"+a+" 请求参数num2:"+b);//发送请求
    try {
    sr.sampleStart();//类似于事务,开始统计响应时间
    result = String.valueOf(test.sum(Integer.parseInt(a), Integer.parseInt(b)));
    if (result != null && result.length() > 0) {
    //下面的操作将响应数据输出到Jmeter 的察看结果树中
    sr.setResponseData("结果是:"+result, "utf-8");
    sr.setDataType(SampleResult.TEXT);
    sr.setResponseCode("200");
    sr.setResponseOK();
    }
    sr.setSuccessful(true);
    } catch (Throwable e) {
    sr.setSuccessful(false);
    e.printStackTrace();
    } finally {
    sr.sampleEnd(); //结束统计响应时间标记
    }
    return sr;
    }
    //测试结束时调用,只执行一次
    //public void teardownTest(JavaSamplerContext arg0) {
    //}
    //必须加入下面的main 方法编译,导出代码时,必须禁用main
    public static void main(String[] args) {
    Arguments pms = new Arguments();
    pms.addArgument("num1", "1");//设置参数,赋值1
    pms.addArgument("num2", "2");//设置参数,赋值2
    JavaSamplerContext arg0 = new JavaSamplerContext(pms);
    JavaTest test = new JavaTest();
    test.setupTest(arg0);
    test.runTest(arg0);
    test.teardownTest(arg0);
    }
    }
    4 导出包
     在测试程序中加入main 方法,然后运行正确,否则不能导出包。
     务必禁用测试程序中的main 方法,然后保存代码。
     右击项目→导出→Java→可运行的JAR 文件(导出时要关JMeter)
     启动配置
     选择测试的类名
     导出目标
     必须放在apache-jmeter-3.0libext 目录中,名字可与类名不同
     忽略错误
     找不到main 方法
     Jmeter 操作
     导入包
     测试计划→Add directory or jar to classpath 处:浏览
     添加线程组
     添加Java 请求
     在类名称中选择上面导出的包
     为参数赋值
     添加查看结果树并运行
    四、测试BeanShell 请求
     添加BeanShell Sampler
    public static String test(){
    vars.put("username","zhsan"); //保存参数
    vars.put("password","123456");
    return "success";
    }
    test(); //必须调用函数
     添加Debug Sampler
     可以尾部添加${usernameusername} 查看到变量
     在Debug Sampler 的响应数据中可以看到BeanShell 中的变量名与值
     添加结果树看结果

  • 相关阅读:
    如何使用go module导入本地包
    gin-vue-admin 03 项目打包上线
    golang map转xml
    vim简明文档
    goframe gf-cli的使用
    supervisor 的安装与使用
    element Tree 树形控件
    gin-vue-admin开发教程 02 了解项目目录结构和代码执行的流程
    gin-vue-admin开发教程 01安装与启用
    oraclesql遇见的问题(一)
  • 原文地址:https://www.cnblogs.com/woaixihongshi/p/12619915.html
Copyright © 2011-2022 走看看