jmeter接口测试项目实战详解,零基础也能学,源码框架都给你-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1.什么是jmeter

JMeter是100%完全由Java语言编写的免费的开源软件是非常优秀的性能测试和接口测试工具支持主流协议的测试

2.jmeter能做什么

1.JMeter是100%完全由Java语言编写的软件性能测试的GUI的测试工具方便用户可以无代码的方式编写性能测试脚本。JMeter的特点可以总结为如下

2.JMerer测试工具不仅仅可以做性能测试也可以做API的测试可以和构建工具整合起来如Ant,Maven以及CI工具的整合以及也可以和Grafana可视化整合起来

3.JMeter支持多种协议进行性能测试如HTTP,HTTPS,WS

3.jmeter环境搭建

3.1前提

1、需要安装JDK的环境配置java环境变量参考

2、查看java环境是否搭建成功javac / java -version

3.2jmeter下载

下载地址去官方正版下懒得下找我要安装包也行

3.3jmeter环境搭建

3.3.1mac当中jmeter环境搭建

控制台 sudo vim .bash_profile

把下面的复制进去JMETER_HOME=后面是jmeter的路径改成自己的路径

#JMETER export JMETER_HOME=/Applications/tools/apache-jmeter-5.4.1 export PATH=$JMETER_HOME/bin:$PATH

3.4jmeter基本配置

3.4.1.切换语言

环境搭建成功之后就可以直接在控制台输入jmeter启动启动成功后先切换成中文

添加图片注释不超过 140 字可选

3.4.2.安装插件

第一步选项--插件管理

添加图片注释不超过 140 字可选

第二步在搜索框输入json 勾选第一行 点击右下角安装插件

添加图片注释不超过 140 字可选

4.jmeter组件

4.1测试计划

在JMeter的测试工具中把测试计划可以理解为是一个工程的目录也就是说每一个脚本都可以说是一个测试计划在一个测试计划里面包含了很多的线程组来进行执行测试计划也是JMeter脚本的根节点。

4.2线程组

测试套件等于postman里面的集合。JMerer通过线程组来驱动多个(也可以理解为LR⼯具⾥⾯的虚拟⽤户)运⾏测试脚本对⽬标服务器发起⼤量的⽹络请求在每个客户端上可以运⾏多个线程组也就是说⼀个测试计划⾥⾯可以包含N个线程组

在JMeter的测试⼯具中依据业务的形态来设置它的⽬录结果但是设置性能测试的场景主要是在线程组中来进⾏设置。JMeter的线程组可以理解为是建⽴了⼀个线程池在执⾏的过程中处理线程组⾥⾯的各个业务逻辑线程组的信息具体如下:

添加图片注释不超过 140 字可选

4.2.1取样器错误后要执⾏的动作

这部分可以理解为当客户端向服务端发送请求后以及发送请求的过程中出错后的异常处理⽅式。

继续

如果有⼀个请求错误其他的请求会继续不会因为有⼀个请求错误的导致其他请求终⽌。

启动下⼀个进程循环

如果请求出现问题同⼀脚本中的其他请求就都不再执⾏直接执⾏下⼀个进程的信息。如登录后下⼀个请求是查看个⼈主⻚但是因为登录出错下个接⼝查看个⼈主⻚就不会被执⾏。

停⽌线程

停⽌线程指的是如果请求失败就停⽌当前线程执⾏不再继续执⾏。如果线程数很多的那么导致的结果是停⽌的线程就会很多处于真正运⾏的线程会很少最后导致服务器的负载不够⼀般不建议构选改选项。

停⽌测试

如果请求失败那么停⽌所有线程执⾏也就是说停⽌整个测试。

⽴即停⽌测试

如果请求失败⽴即停⽌整个测试场景的执⾏。

4.2.2线程属性

线程数

⼀个线程可以理解为对应模拟⼀个⽤户所以线程数越多那么也就认为可以模拟的⽤户数越多。

Ramp-Up时间(秒)

该属性指的是所有线程从启动到开始运⾏的时间间隔单位是秒也就是说所有线程在多⻓时间内开始执⾏如线 程数设置50设置的时间为5秒那么计算的公式为: 每秒执⾏线程数=线程数/Ramp-Up 具体如 如设置的线程数为50Ramp-up的时间为10那么也就是说开启执⾏后每秒会启动5个线程如果Ramp-Up设置为 0那么开始执⾏后50个线程会⽴刻启动

循环次数

循环次数可以理解为请求的重复次数。如果选择“永远”那么请求将⼀直进⾏不建议这样操作。

延迟创建线程直到需要如50个线程数Ramp-Up时间是10秒执⾏后线程是全部就绪的那么就是每隔1秒启动5个线程数

调度器

思维调度器可以理解为设置何时开始运⾏。

持续时间

测试计划持续多⻓时间

启动延迟

从当前时间延迟多⻓时间开始运⾏测试也就是说点击执⾏后仅仅是做初始化的场景不会执⾏测试等待延迟

到达后开始运⾏测试执⾏的时间为持续时间设置的时间。

4.3jmeter监听器

4.3.1聚合报告

聚合报告是以表格的形式来显示取样器的结果信息如果不同的取样器拥有相同的名字那么在聚合报告会显示在⼀⾏⾥⾯那么⼀般来说聚合报告都是根据取样器来显示每个取样器的执⾏结果信息。聚合报告的信息具体如下:

Label:取样器名称 Samples:取样器运⾏次数 Average:单个请求的平均响应时间 Median:50%请求的响应时间 90%Line:90%请求响应时间 95%Line:95%请求响应时间 99%Line:99%请求的响应时间 Min:请求的最⼩响应时间 Max:请求的最⼤响应时间 Std.Dev:响应时间的标准⽅差 Error%:事务错误率 Throughput:吞吐率也就是TPS KB/sec:每秒数据包流量 Avg.Bytes:平均数据流量 Received KB/sec:每秒从服务器端接收到的数据量 SentKB/sec:每秒从客户端发送的请求的数量

4.3.2后端监听器

后端监听器可以把JMeter与influxdb,grafana整合起来把性能测试过程中的数据存储到influxdb然后最后显示在grafana的可视化界⾯中。

4.3.3察看结果树

结果树能够很清晰的显示每个取样器执⾏的结果信息以及每个取样器的⽹络请求信息

4.3.4取样器

取样器是JMeter的基本单元⼀般性的各种都是取样器来发起的

HTTP请求

可以把它理解为⼀个独⽴的测试⽤例或者说是⼀个测试场景。

4.3.5配置元件

配置元件可以理解为对取样器的各种请求进⾏辅助配置。

HTTP信息头管理器

每个HTTP的请求都是需要请求头的信息的那么可以把请求头的信息添加到HTTP信息头管理器然后需要把它放在取样器的前⾯。

HTTP Cookie管理器

在系统登录成功后需要访问系统中的其他⽹络请求但是需要记住⽤户登录成功后的sessionID的信息那么使⽤HTTP Cookie管理器就可以⾃动记录下这些信息。

在JMeter中如果一个网站使用的是session来实现的但是jmeter无法获取登录成功后的sessionid,那么也就导致登录后的请求都会重定向到登录的页面也就是说无法验证我是谁可以使用cookie管理器来解决它内部会记住所有网络请求的cookie信息并且会让所有的网络请求间的cookie共享如下图

添加图片注释不超过 140 字可选

⽤户定义的变量

在测试中如果某些请求参数存在变化⽐如是⽤户名和密码那么就可以单独的独⽴出来⽤户定义的变量可以

很轻松的来解决这部分的问题。

HTTP请求默认值

每个取样器发送⽹络请求的时候都是需要IP地址等信息但是使⽤HTTP请求默认值可以很轻松的把请求的地址独⽴出来。

4.3.6逻辑控制器

逻辑控制器主要控制JMeter的执⾏顺序它的存在使整体的测试的灵活度更⾼。⽐如接⼝A执⾏完成后得到的结果

信息经过逻辑控制器判断之后再执⾏接⼝B或者是接⼝C。⼀般性的⽽⾔简单控制器使⽤的最多但是也看具

体的场景进⾏设置。

4.3.7前置处理器

在执⾏取样器之前需要进⾏初始化的设置等价于UnitTest测试框架中的setUp()的⽅法。

用户参数

我们⼀个测试点需要多次操作并且每次操作的数据都是不⼀样的测试步骤⼀致但是测试数据每次不⼀样前置处理器

比如登录的账户

添加图片注释不超过 140 字可选

CSV 数据⽂件设置

将数据放到一个文件里直接调用配置元件里面

记事本

添加图片注释不超过 140 字可选

添加图片注释不超过 140 字可选

4.3.8后置处理器

在执⾏取样器之后执⾏如API测试中经常会涉及到上个API的输出是下个API的输⼊那么就会使⽤到后置处理器

中的正则表达式提取器或者是JSON提取器BeanShell断⾔等。

正则表达式提取器后置处理器--正则表达式提取器

测试地址

添加图片注释不超过 140 字可选

模板⽤$$引⽤起来如果在正则表达式中有多个正则表达式多个括号括起来的东东则可以是$2$$3$等等表示解析到的第⼏个值给user_id。例如$1$表示匹配到的第⼀个值

匹配数字0代表随机取值-1代表所有值此时提取结果是⼀个数组其余正整数代表第⼏个匹配的内容提取出来。如果匹配数字选择的是-1还可以通过 {user_id_2}来取第2个匹配的内容。

缺省值正则匹配失败时取的值

4.3.9断⾔

主要⽤来验证返回的结果数据与预期的结果数据是否完全匹配⼀般最常⽤的是响应断⾔和JSON断⾔。

4.3.10定时器

定时器主要⽤来在测试计划执⾏的过程中定时器⽤来缓减线程运⾏⽐如刻意的等待3秒后再执⾏下⼀个请求的信息

延时等待

api的测试用例执行的速度非常快的基本只在毫秒级别的但是在某些时候由于业务的特性吗想让他延迟几秒钟执行那么这个时候就用延时等待定时器--固定定时器

添加图片注释不超过 140 字可选

5.jmeter的目录内容

bin目录可执行的应用程序

extras目录扩展插件目录

lib目录所用到的插件目录里面均为jar包

6.Jmeter动态参数的解决思路是什么

假设一个图书管理系统可以进行增删改查我们在登录成功之后会返回一个token值通过登录接口的后置处理器中的json提取器或者正则表达式提取器我们一般用json提取器定义一个变量来存储登录成功后的token在下个接口中我们在请求头当中调用这个变量。

7.jmeter里面调用变量是什么怎么调用

在请求头添加token jwt ${token}

添加--配置元件--http信息头管理器--添加

添加图片注释不超过 140 字可选

8.测试报告

8.1 认识ant

8.1.1 ant下载

下载地址官网下懒得找找我要安装包

8.1.2ant环境变量配置

mac配置ant环境变量

#ant环境变量

export ANT_HOME=/Applications/tools/apache-ant-1.10.1

export PATH=$ANT_HOME/bin:$PATH

windows配置ant环境变量

把他目录到bin目录配置到path环境变量

8.1.3验证环境

控制台输入ant现实如下说明环境已经搭建好

添加图片注释不超过 140 字可选

8.2 认识build.xml文件

ant构建工具该构建工具执行的时候依赖于build.xml的文件在build.xml文件里面会定义具体执行的脚本执行的顺序以及测试报告存储的目录

1 xml version="1.0" encoding="UTF8"?> 2 3 <project name="ant-jmeter-test" default="run" basedir="."> 4 5 <property name="jmeterPath" value="/Applications/tools/apache-jmeter-5.4.1"/> 6 <property name="mailhost" value="smtp.sina.cn"/> 7 <property name="username" value="wuya1303@sina.com"/> 8 <property name="password" value="admin123"/> 9 <property name="mailfrom" value="wuya1303@sina.com"/> 10 <property name="mail_to" value="1730645056@qq.com"/> 11 <property name="mailsubject" value="API测试报告"/> 12 <property name="mail_port" value="25"/> 13 <property name="message" value="Hi 14 15 16 <tstamp> 17 <format property="time" pattern="yyyyMMddhhmm" /> 18 </tstamp> 19 <property name="jmeter.home" value="${jmeterPath}" /> 20 <property name="jmeter.result.jtl.dir" value="${jmeterPath}\tests\report\jtl" /> 21 <property name="jmeter.result.html.dir" value="${jmeterPath}\tests\report\html" /> 22 <property name="htmlReportNameSummary" value="testReport" /> 23 <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${htmlReportNameSummary}${time}.jtl" /> 24 <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${htmlReportNameSummary}${time}.html" /> 25 26 27 <target name="run"> 28 <antcall target="test" /> 29 <antcall target="report" /> 30 <antcall target="sendEmail" /> 31 </target> 32 33 <!--执行接口测试--> 34 <target name="test"> 35 <echo>执行接口自动化测试</echo> 36 <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> 37 <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> 38 <!--要执行的测试脚本--> 39 <testplans dir="${jmeterPath}\tests\script" includes="1212.jmx" /> 40 <property name="jmeter.save.saveservice.output_format" value="xml"/> 41 </jmeter> 42 </target> 43 44 <!--解决报告中NAN字段显示问题--> 45 <path id="xslt.classpath"> 46 <fileset dir="${jmeter.home}/lib" includes="xalan-2.7.2.jar"/> 47 <fileset dir="${jmeter.home}/lib" includes="serializer-2.7.2.jar"/> 48 </path> 49 50 <!--生成HTML测试报告--> 51 <target name="report"> 52 <echo>生成接口自动测试报告</echo> 53 <xslt classpathref="xslt.classpath" 54 force="true" 55 in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" 56 style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" /> 57 58 <!--复制图片--> 59 <copy todir="${jmeter.result.html.dir}"> 60 <fileset dir="${jmeter.home}/extras"> 61 <include name="collapse.png" /> 62 <include name="expand.png" /> 63 </fileset> 64 </copy> 65 </target> 66 <!--自动发送邮件--> 67 <target name="sendEmail"> 68 <echo>发送自动化测试报告</echo> 69 <mail mailhost="${mailhost}" 70 ssl="ture" 71 user="${username}" 72 password="${password}" 73 mailport="${mail_port}" 74 subject="${mailsubject}" 75 messagemimetype="text/html" 76 tolist="${mail_to}"> 77 <from address="${mailfrom}" /> 78 <attachments> 79 <fileset dir="${jmeter.result.html.dir}"> 80 <include name="${htmlReportNameSummary}${time}.html"/> 81 <include name="collapse.png" /> 82 <include name="expand.png" /> 83 </fileset> 84 </attachments> 85 <message> 86 ${message} 87 </message> 88 </mail> 89 </target> 90 </project>

8.2目录结构

tests

用来存放测试的所有资料

report

用来存放测试报告 里面再创建html和jtl的文件夹

scrip

用来存放测试脚本

8.3自动发送邮件

1、 在JMeter的extras下找到ant-jmeter-1.1.1.jar,把它copy到ant的apache-ant-1.10.0\lib下。

2、自动发送邮件需要三个jar包分别是activation.jar,commons-email-1.2.jar,mail.jar,这三个文件放在ant的lib目录下

3、输出测试报告的配置

打开jmeter的bin目录下的jmeter.properties文件做如下修改:

把jmeter.save.saveservice.output_format=csv

修改为jmeter.save.saveservice.output_format=xml

添加图片注释不超过 140 字可选

4、build文件修改代码

1、修改jmeter的路径

添加图片注释不超过 140 字可选

2、修改收到测试报告的邮箱

添加图片注释不超过 140 字可选

3、修改要执行测试用例的路径和脚本

添加图片注释不超过 140 字可选

6.生成测试报告在控制台进入到测试用例tests的目录下输入ant

添加图片注释不超过 140 字可选

7.生成的报告在哪打开

jmeter--tests--report--html

最下面就是你最新生成的 点击就能直接打开

添加图片注释不超过 140 字可选

生成的测试报告如下

添加图片注释不超过 140 字可选

添加图片注释不超过 140 字可选

添加图片注释不超过 140 字可选

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“jmeter接口测试项目实战详解,零基础也能学,源码框架都给你-CSDN博客” 的相关文章