• 16
  • 15
分享
  • jmeter接口测试教程以及接口测试流程详解——软件测试圈
  • 饭团🍙 2021-09-24 14:00:55 字数 4042 阅读 3089 收藏 15

一、Jmeter简介

Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试。

Jmeter具备高移植性,可以实现跨平台运行。

Jmeter可以实现分布式负载。

Jmeter采用多线程,允许通过多个线程并发取样或通过独立的线程对不同的功能同时取样。

Jmeter具有较高扩展性。

二、Jmeter安装

1、安装JDK,必须JDK1.7以上的版本,推荐1.8的版本

2、进入官网:http://jmeter.apache.org/download_jmeter.cgi下载最新的Jmeter版本,下载后解压到非中文目录,如:D:\

3、配置Jmeter的环境变量。

  • 新增变量:JMETER_HOME:D:\apache-jmeter-5.2.1

  • 在CLASSPATH变量的最前面加入如下变量:

%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;
  • 在PATH变量的最前面加入如下变量:

%JMETER_HOME%\bin;

4、进入D:\apache-jmeter-5.2.1\bin,双击jmeter.bat,或在dos窗口输入jmeter命令打开jmeter界面,安装成功。

三、设置Jmeter语言为中文环境

1、临时设置

Jmeter菜单栏选择OptionsàChooseLanguageàChinese(Simplified)这种方法,重启软件后又变为英文环境了。

2、永久设置

进入apache-jmeter-5.2.1\bin目录,找到“jmeter.properties”文件,在文件的第37行后添加“language=zh_CN”,保存之后再打开jmeter就永久变为中文环境了。

1.jpg

四、Jmeter主要元件

1、测试计划:是使用JMeter进行测试的起点,它是其它JMeter测试元件的容器;

2、线程组:代表一定数量的用户,它可以用来模拟用户并发发送请求。实际的请求内容在Sampler中定义,它被线程组包含;

3、配置元件:维护Sampler需要的配置信息,并根据实际的需要修改请求的内容;

4、前置处理器:负责在请求之前工作,常用来修改请求的设置;

5、定时器:负责定义请求之间的延迟间隔;

6、取样器(Sampler):是性能测试中向服务器发送请求,记录响应信息、响应时间的最小单元,如:HTTPRequestSampler、FTPRequestSample、TCPRequestSample、JDBCRequestSampler等,每一种不同类型的sampler可以根据设置的参数向服务器发出不同类型的请求;

7、后置处理器:负责在请求之后工作,常用获取返回的值;

8、断言:用来判断请求响应的结果是否如用户所期望的;

9、监听器:负责收集测试结果,同时确定结果显示的方式;

10、逻辑控制器:可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。

五、Jmeter元件的作用域和执行顺序

1、元件作用域

配置元件:影响其作用范围内的所有元件。

前置处理器:在其作用范围内的每一个sampler元件之前执行。

定时器:在其作用范围内的每一个sampler有效

后置处理器:在其作用范围内的每一个sampler元件之后执行。

断言:在其作用范围内的对每一个sampler元件执行后的结果进行校验。

监听器:在其作用范围内对每一个sampler元件的信息收集并呈现。

总结:从各个元件的层次结构判断每个元件的作用域。

2、元件执行顺序:

配置元件->前置处理器->定时器->取样器->后置处理程序->断言->监听器

注意事项:

  1. 前置处理器、后置处理器和断言等组件只能对取样器起作用,因此,如果在它们的作用域内没有任何取样器,则不会被执行。

  2. 如果在同一作用域内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行。

六、Jmeter进行接口测试流程

使用Jmeter进行接口测试的基本步骤如下:

  1. 测试计划

  2. 线程组

  3. HTTPCookie管理器

  4. Http请求默认值

  5. Sampler(HTTP请求)

  6. 断言

  7. 监听器(查看结果树、图形结果、聚合报告等)

七、Jmeter进行接口测试流程步骤详解

1、测试计划

打开Jmeter,在菜单左侧出现“测试计划”。在这里测试计划我们可以把它理解成新建的空白项目,在这个空白项目下面可以添加一系列的接口。

2.jpg

2、线程组

添加方法:右键点击TestPlan->添加->线程(用户)->线程组。

元件描述:一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。

3.png

  1. 线程数:即虚拟用户数。设置多少个线程数也就是设置多少虚拟用户数

  2. Ramp-Up时间(秒):设置虚拟用户数全部启动的时长。如果线程数为20,准备时长为10秒,那么需要10秒钟启动20个线程。也就是平均每秒启动2个线程。

  3. 循环次数:每个线程发送请求的个数。如果线程数为20,循环次数为10,那么每个线程发送10次请求。总请求数为20*10=200。如果勾选了“永远”,那么所有线程会一直发送请求,直到手动点击工具栏上的停止按钮,或者设置的线程时间结束。

3、HTTPCookie管理器

添加方法:右键线程组->添加->配置元件->HTTPCookie管理器。

元件描述:HTTPCookie管理器可以像浏览器一样存储和发送cookie,如果你要发送一个带cookie的http请求,cookiemanager会自动存储该请求的cookies,并且后面如果发送同源站点的http请求时,都可以用这个cookies。

4.jpg

4、HTTP请求默认值

添加方法:右键线程组->添加->配置元件->HTTP请求默认值。

元件描述:HTTP请求默认值是为了方便填写后续内容而设置。主要填写[服务器名称或IP]和[端口号],后续的HTTP请求中就不用每次都填写IP地址和端口号了。

5.jpg

5、HTTP请求

添加方法:右键线程组->添加->Sampler->HTTP请求。

元件描述:HTTP请求包括接口请求方法、请求路径和请求参数等。

6.jpg

HTTP请求详解

  1. 名称:本属性用于标识一个取样器,建议使用一个有意义的名称。

  2. 注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。

  3. 服务器名称或IP:HTTP请求发送的目标服务器名称或IP地址。

  4. 端口号:目标服务器的端口号,默认值为80。

  5. 协议:向目标服务器发送HTTP请求时的协议,可以是HTTP或者是HTTPS,默认值为http。

  6. 方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、TRACE、OPTIONS、DELETE等。

  7. 路径:目标URL路径(不包括服务器地址和端口)

  8. 内容编码:内容的编码方式,默认值为iso8859

  9. 自动重定向:如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter自动重定向到新的页面。

  10. 使用keepAlive:保持jmeter和目标服务器之间的活跃状态,默认选中

  11. 对Post使用multipart/from-data:当发送POST请求时,使用multipart/from-data方法发送,默认不选中。

  12. 同请求一起发送参数:在请求中发送URL参数,对于带参数的URL,jmeter提供了一个简单的对参数化的方法。用户可以将URL中所有参数设置在本表中,表中的每一行是一个参数值对(对应RUL中的名称1=值1)。

6、响应断言

添加方法:右键HTTP请求->添加->取样器->HTTP请求。

元件描述:检查接口是否访问成功。如果检查失败的话会提示找不到断言的内容,没提示的话就代表成功了。

7.jpg

Applyto

指断言作用范围,通常发出一个请求只触发一个请求,所以勾选“mainsampleonly”就可以;若发一个请求可以触发多个服务器请求,就有mainsample和sub-sample之分了。

  1. Mainsampleandsub-samples:作用于主请求和子请求

  2. Mainsampleonly:仅仅只作用于主请求

  3. Sub-samplesonly:仅仅只作用于子请求

  4. JmeterVariable:作用于jmeter变量(输入框内输入jmeter变量名称)

测试字段

响应文本(匹配返回的json数据)、响应代码(匹配返回码:如200,404,500等)、响应信息(匹配响应信息如“OK”字样)、响应头(匹配响应头)、请求头(匹配请求头)、URL样本(匹配请求的url链接,如果有重定向则包含请求url和重定向url)、[文档(文本)](匹配响应数据的文本形式)、忽略状态(一个请求有多个响应断言,第一个响应断言选中此项,当第一个响应断言失败时可以忽略此响应结果,继续进行下一个断言。如果下一个断言成功则还是判定事务是成功的)、请求数据(匹配请求数据)

模式匹配规则

包括:响应内容包含需要匹配的内容即代表响应成功,支持正则表达式。

匹配:响应内容要完全匹配需要匹配的内容即代表响应成功,大小写不敏感,支持正则表达式。

字符串:响应内容包含需要匹配的内容才代表响应成功,大小写敏感,不支持正则表达式

相等:响应内容要完全等于需要匹配的内容才代表响应成功,大小写敏感,不支持正则表达式

否:相当于取反,如果结果为true,勾上否就是false

或者:如果不想用AND连接(所有的模式都必须匹配,断言才算成功),用OR选项可以用于将多个断言模式进行OR连接(只要一个模式匹配,断言就是成功的)

测试模式

其实就是断言的数据。点击“添加”按钮,输入要断言的数据。

7、增加监听器

添加方法:线程组->右键添加->监听器->察看结果树。一般还会一并添加图形结果、聚合报告。

元件描述:树状形式显示接口的访问结果,包括请求结果、请求内容、服务器的响应内容。

8.jpg


作者:测试逍遥子

原文链接:https://www.cnblogs.com/csmashang/p/12762177.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   随着开发的逐渐深入,从节省时间、资源和提高测试效率的角度来说,自动化用例必然会成为一个大众型选择。并且,几乎大大小小的软件公司,都在朝着测试自动化的脚步迈进。  那么,我们应该如何有效地利用自动化测试结果挖掘问题,或者说如何通过自动化测试结果分析出一些问题呢?当然,这里的问题不全指代码故障,也可能包括测试脚本问题。  首先,让我们来看看,软件公司常用的将自动化测试嵌入开发流程方法。提及此,不得不提到DevOps(开发运营一体化)。  传统DevOps流程包括:设计——>开发——>测试——>部署,如下图所示。  构建DevOps流程需要一个持续化集成工具,如Jenkins,...
            11 12 1308
            分享
          •   前言  程序员到了30岁是一个非常尴尬的年龄,大部分企业对于30岁以上的程序员都会比较迟疑。面试碰壁,感觉到受挫,如果面的又是自己非常想去的公司,会更加的难过。而内心恐慌可能是多次受挫,开始陷入自我怀疑,不确定未来该何去何从,感觉很迷茫!  为什么会出现这种状况呢?  ·压力增大,力不从心  三十岁也到了结婚的年纪了,有些孩子估计都有了,再加上父母也基本五六十岁了,压力陡然增大,家庭生活压力、房贷压力、身体健康压力、小孩教育压力、赡养老人的压力。而程序员本就是工作量大,经常需要加班,种种事情拖住自己,没有什么激情去专一地去想工作上的事情和思维,力不从心。  · 普通程序员可替代性...
            1 0 1481
            分享
          •   首先谈谈我在软件测试行业的亲身经历:我的一位同事曾经很认真地问过我一个问题,他说他现在从事软件测试工作已经4年了,但是他不知道现在的工作和自己在工作3年时有什么不同,他想旁观者清,也许我能回答他的问题。此外他还想知道他做软件测试工作到第5年或第6年会怎么样。后来他在工作到第5年的时候转岗了。虽然他已经转岗了,但是最近联系时,他依然问我这个问题,似乎这个问题困惑他很深、很久了。  这件事情对我的触动很大,我相信这个问题是带有一定普遍性的,我也开始系统思考这个问题。  软件测试是一个缺乏发展空间、做到一定阶段后只能通过“转岗”来寻找发展机会的职业吗?  肯定不是。  Martin Pol,欧洲...
            0 0 1113
            分享
          • 前言selenium自动化+ pytest测试框架本章你需要一定的python基础一定的selenium基础——不讲selenium,不会的自己去看selenium中文翻译网测试框架简介测试框架有什么优点呢:代码复用率高,如果不使用框架的话,代码会很冗余可以组装日志、报告、邮件等一些高级功能提高元素等数据的可维护性,元素发生变化时,只需要更新一下配置文件使用更灵活的PageObject设计模式测试框架的整体目录目录/文件说明是否为python包common这个包中存放的是常见的通用的类 是config配置文件目录是logs日志目录page对selenium的方放进行深度的封装是pag...
            5 9 5834
            分享
          • 引入问题相信不少开发看到测试提的bug单都少不了吐槽:这题的是什么玩意啊?也相信不少测试工程师在测试过程中,遇到问题不做二次确认,直接提个bug单。接下来,让我们作为旁观者,看看张三的问题: 张三在发现bug之后,立马给开发提了bug,不去排查bug产生的原因。这样就会产生三个问题:张三未经过二次验证确认问题的有效性,可能会导致把无效的问题提给开发。张三不去排查问题出现的原因,可能会将问题指给错误的开发。影响彼此工作的效率好不容易发现了有效的问题,简单一句话将问题描述并提单,又出了问题:在提问题单的时候,如果描述不清楚的话,开发很难复现问题。影响彼此工作的效率:开发无法复现问题,又需...
            10 10 2106
            分享
      • 51testing软件测试圈微信