jmeter入门到集成ant

jemeter入门

简介

  • apache旗下,开源的性能测试工具,通过多线程的方案实现性能测试
  • 插件丰富,扩展性强,像一个巨大的组装车间
  • 默认1线程,也可以做功能测试
  • 学习曲线比较曲

安装

  1. 安装jdk
  2. 官网下载,安装,配置环境变量:添加安装的bin目录到环境变量path
  3. 运行:cmd > jmeter

工作结构

默认:测试计划(test plan) >>> 线程(thead user).线程组(thread group) >>> 采样器(sampler).http请求(http request) >>> 监听(listener).查看结果树(view result tree)

测试计划:对应项目,可设置用户定义变量

线程组:对应模块,可设置请求默认值,应用于组下全部采样器;设置线程数,启动所有线程时间

采样器:对应测试用例,可设置请求头管理器(新增旧改,可用于添加token),参数化(${变量名}),json采集器,断言

监听:对应测试结果,可拖拽不同层级,查看不同层次的结果

参数化

格式为${变量名}

  1. 用户定义变量(user defined variables):全局变量,在测试计划界面设置,应用于整个项目
  2. 用户参数(User Parameters):局部变量,在http request >>> add >>> pre processors >>> user Parameters,应用于这个请求
  3. CSV Data Set Config:工作使用最多的一种参数化,应用于这个请求,add >>> config element >>> CSV Data Set Config,配置数据文件路径、变量名等
  4. 函数助手(function helper dialog):菜单栏tools下,设置参数,生成函数,比如产生1-100的随机数:${__Random(1,100,)},可一键生成复制放入请求数据。

断言

常用的断言:响应断言,json断言,xml断言

http request >>> add >>> assertions >>> response assertion/Json assertion

响应断言:选择response code,值填200

json断言:填写json路径表达式,比如$.message,填写预期值

关联

jmeter通过上游接口的后置处理器(post processors)来提取response的内容,然后在下游接口直接引用。

常用的有json提取器(json),正则提取器(html),xpath提取器(xml)

以json提取器为例:

添加json提取器,http request >>> add >>> post processors >>> JSON Extractor,填写变量名,如:token,提取变量的json路径表达式,如: . d a t a . t o k e n ,下游接口引用: .data.token,下游接口引用: .data.token,下游接口引用:{token}

生成报告

jmeter的工作目录,一般有jmx;jtl;report,3个文件夹,jmx放项目文件,jtl放测试结果文件,report放测试报告。

新建dos,执行命令

jmeter -n -t D:\jmeter_testcase\jmx\test.jmx -l D:\jmeter_testcase\jtl\test.jtl -e -o D:\jmeter_testcase\report

选项解释:

-n:以非GUI形式运行Jmeter

-t:source.jmx 脚本路径

-l:result.jtl 运行结果保存路径(.jtl),此文件必须不存在

-e:在脚本运行结束后生成html报告

-o:用于存放html报告的目录

缺点1:每次都得手动输

解决方案:让jenkins帮我自动构建,见jenkins篇

缺点2:如何批量执行项目呢?

解决方案:ant(完成构建)+jenkins

集成ant

简介

Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于集成开发环境中

安装

1、下载ant,官网apache ant

2、配置环境变量

​ 新建系统变量ANT_HOME,值E:\soft\ant

系统变量CLASSPATH,值后面添加E:\soft\ant\lib    

系统变量Path,值后面添加E:\soft\ant\bin  

3、cmd=>ant,提示:"build.xml does not exist ",说明安装成功

配置

1、将jmeter\extras下的ant-jmeter-1.1.1.jar复制到ant\lib,目的:这样让ant认识jmeter

2、配置jmeter:打开配置文件jmeter\bin\jmeter.properties

​ jmeter.save.saveservice.output_format=csv改成 jmeter.save.saveservice.output_format=xml,记得去掉前面的“#”

3、在jmeter的工作目录,新建build.xml,jmx可以放多个测试项目,一起测试

4、配置build.xml

<?xml version="1.0" encoding="UTF-8"?>

<project name="ant-jmeter-test" default="run" basedir=".">
    <tstamp>
        <format property="time" pattern="yyyy_MM_dd_hhmm" />
    </tstamp>
    <!-- 需要改成自己本地的 Jmeter 目录-->  
    <property name="jmeter.home" value="D:\software\jmeter" />
    <!-- jmeter生成jtl格式的结果报告的路径--> 
    <property name="jmeter.result.jtl.dir" value="D:\jmeter_testcases\jtl" />
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="D:\jmeter_testcases\report" />
    <!-- 生成的报告的前缀-->  
    <property name="ReportName" value="test" />
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}_${time}.jtl" />
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}_${time}.html" />
    
    <target name="run">
        <antcall target="test" />
        <antcall target="report" />
    </target>
    
    <target name="test">
        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
        <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
             <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
            <testplans dir="D:\jmeter_testcases\jmx" includes="*.jmx" />
            <property name="jmeter.save.saveservice.output_format" value="xml"/>
        </jmeter>
    </target>
    
    <path id="xslt.classpath">
        <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
        <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
    </path> 
    
    <target name="report">
        <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp>
        <xslt 
              classpathref="xslt.classpath"
              force="true"
              in="${jmeter.result.jtlName}"
              out="${jmeter.result.htmlName}"
              style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
              <param name="dateReport" expression="${report.datestamp}"/>
        </xslt>
                <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> 
        <copy todir="${jmeter.result.html.dir}">
            <fileset dir="${jmeter.home}/extras">
                <include name="collapse.png" />
                <include name="expand.png" />
            </fileset>
        </copy>
    </target>

运行

在工作目录下,即放置测试用例的目录,如:D:\jmeter_testcase,运行cmd,执行ant。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值