1.接口测试基础

API:Application Programming Interface,即调用应用程序的通道。

接口测试遵循点

接口的功能性实现:检查接口返回的数据与预期结果的一致性。

测试接口的容错性:例如传递的数据类型是错误的能否处理。

测试接口参数的边界值:例如传递的数据足够大或者为负数时能否处理。

测试接口性能:响应时间牵扯到代码实现的优化。

测试接口的安全性:特别是第三方接口、登录的用密码是否密文传输。

接口测试工具:loadrunner、jmeter、postman、soapui、RestClient。

RF和Jmeter对比

语言:RF是 python 写的,Jmeter 是 java + JavaScript(写 beanshell 要用到)。

编程语言能力:RF 有一些(写些RF的关键字),Jmeter 基本可以没有。

灵活度:在不做二次开发(即改动到库函数或者框架源码)前提下,RF 比 Jmeter 高一些。

泛用性:RF 除了做接口,还可以做UI 自动化。Jmeter 除了做接口,还可以做后端性能。

生态圈:个人感觉 RF 相对活跃一些。

环境:jmeter、java8、第三方驱动/包、接口项目

2.Jmeter核心知识

参数化的实现方式

CSV 数据文件:适用于参数取值范围较大的数据文件。

用户参数:适用于参数取值范围很小的时候使用。

用户定义的变量:一般用于不需要随请求迭代的参数设置,如:Host、Port Number。

函数:见下面函数篇。

操作数据库

安装驱动包mysql-jdbc、sqlite-jdbc、ojdbc;数据库连接池配置;添加JDBC请求;添加Degbug Sampler。

关联方式

正则表达式:"dep_ name":"(.*?)”, ()截取区间,.表示任意字符,*表示出现任意次,?表示截取到第一 个结束标记。模板:$$格式;$1$表示解析到的第1个值;如果匹配有2个值,第二个值$2$,以此例推匹配数字:1代表全部取值,0代表随机取值,通常情况下填1

xpath提取器:当需要处理的页面是HTML格式时,必须勾选Use Tidy;用法同web自动化里的xpath。

jsonpath提取器:当响应数据为json时,用于提取json串里面的关键数据。$..data.user[0].id

同步定时器

作用:阻塞线程,直到指定的线程数量到达后,再一起释放,模拟并发。

测并发

可以用线程数,Ramp-Up Period设为0,立马发送请求,是并发,这样很耗机器性能。非0表示在该秒内发送这么多请求,不是真正并发。

加个定时器:集结了指定数量的请求后,大家再一起冲!这样给服务器的压力是最大的。

参1为0,等同于设置为线程组中的线程数,非0代表达到设置的用户(线程)后,并发执行后续操作。

参2为0,Timer将等待线程数直到达到了参1设置的数值后才执行,不够则一直等待。非0表示无论有没有达到参1的数值,只要超过这个时间都会执行。

函数

格式:${__functionName(var1,var2,var3)}

常用函数:CSVRead、counter、Random、time、setProperty、property。

jmeter中函数助手time:yyyy-MM-dd HH:mm:ss:SSSS

可作为其他参数化方式的补充项,如:随机数生成的函数:${Random(,,)};生成时间戳:13015${time(/1000,)}${__Random(00,99)}

3.Jmeter分布式

场景

为了测试服务器处理批量请求能力。目前jmeter最多支持300左右的模拟请求线程(与电脑性能有关),再大的话就卡顿、无响应等情况,这是限于jmeter其本身的机制和硬件配置。分布式压测,即将大量的模拟并发分配给多台压力机,来满足这种大流量的并发请求场景。

Jmeter.properties配置

控制机:remote_hosts=127.0.0.1:1099,127.0.0.1:1100。 注意是英文逗号。

执行机:第一台server_Port=1099,第二台可设为1100。注意:那是自定义的端口号,要选择未被占用的端口号。也可以不用管,默认是1099,多台执行机的ip又不一样。

启动/设置/注意点

执行机启动分布式:windows运行bin目录下jmeter-server.bat,linux或mac运行jmeter-server,运行后勿关窗口。若是运行时修改的记得重启。

控制机:设置线程数,如500,然后点击远程全部启动。

保持高度一致:csv文件路径要一致;jmeter版本和插件要一致,执行机上Jmeter也许需要配置JDK环境变量;

4.Jmeter逻辑控制器

If控制器:条件成真,则执行控制器下所有取样器。"${name}"=="百度"。

ForEach控制器:一般和用户定义的变量一起使用,在其中读取一系列变量。输入要遍历变量前缀(user);遍历变量开始的索引,从0开始(0);遍历变量结束的索引,不包括结束索引(4);定义要被引用的变量名称(foruser)。

交替控制器:交替控制,该控制器包含的所有取样器,步骤交错执行在每个循环中。子节点里放不同的请求即可。

循环控制器:执行循环控制器内取样器指定的次数。设置循环次数,子节点里放请求即可。

仅一次控制器:该控制器下取样器只执行1次。子节点里放请求即可。

随机控制器:随机执行其下的所某个请求。子节点里放不同的请求即可。

随机顺序控制器:子节点全部执行,但顺序是随机的。

While 控制器:循环执行控制器内所有采样器,直到条件为假时,停止循环。如${VAR}:当参数VAR的值被设置成false时退出循环;${__javascript(“${VAR}”==”User1”)}:当参数VAR的值不为User1时退出循环。

Switch Controller控制器:通过给该控制器中的switch value赋值不同的取样器名字,来指定运行哪个请求。子节点里放不同的请求即可。

简单控制器:当文件夹用,子节点里放不同的请求即可。

事务控制器:会在聚合报告中生成一个事务控制器字段来测量其下测试元素的总体时间。子节点里放不同的请求即可。

5.Jmeter 图形监视器

目的:查看服务器(CPU、内存、网络、磁盘)的使用信息。

服务器:下载服务器端监听服务程序(ServerAgent-2.2.1)https://jmeter-plugins.org/wiki/PerfMonAgent/

客户端:下载标准扩展插件(JMeterPlugins-Standard-1.4.0.zip)https://jmeter-plugins.org/downloads/old/

启动服务器监听器程序(ServerAgent-2.2.1.zip)

客户端加载监听服务器组件图表(jp@gc - PerfMon Metrics Collector)

配置:下载标准插件后解压,复制JMeterPlugins-Standard.jar文件,粘贴到Jmeter的Lib目录下面的ext目录,重启Jmeter。

启动:Windows下启动startAgent.bat;Linux下启动startAgent.sh。然后在对应的线程组下添加该组件(jp@gc - PerfMon Metrics Collector),即可看到服务器(CPU、内存、网络、磁盘)的使用信息。

6.jmeter报告

无日志文件生成

例1:jmeter -n -t  -l  -e -o

例2:jmeter -n -t /Users/edz/apache-jmeter-5.3/bin/JmeterProjects/API-autotest.jmx -JthreadNum=100 -Jcycles=10 -l /Users/edz/apache-jmeter-5.3/bin/reports/result.jtl -e -o /Users/edz/apache-jmeter-5.3/bin/reports

使用已有的jtl日志文件或csv日志文件生成:jmeter -g  -o

7.其他功能点

Jmeter FTP服务器测试

File Transfer Protocol文件传输协议,可以根据FTP服务器进行上传和下载文件(上传、下载需要权限)。

FTP请求:Remote file:上传到FTP服务器新的文件名+后缀;local file:为本地存放到本机上的路径+文件名+后缀;get(RETR):为下载文件;用户名:ftp服务器用户名;密码:ftp服务器的密码。

Jmeter Test Fragment(测试片段)

测试片段元素是控制器上的一个种特殊的线程组,它在测试树上与线程组处于一个层级。

备注:它与线程组有所不同,因为它不被执行,除非它是一个模块控制器或者是被控制器所引用时才会被执行。

作用:把单独功能脚本封装起来,待需要使用的时候,直接引用;类似于python中的函数或模块。

模块控制使用图里:测试片段被引用执行两种方式; 模块控制器可以引用执行测试片段;Include Controller控制器也可以引用和执行片段。

Jmeter 工作台-非测试元件

HTTP 镜像服务器:可以在本地临时搭建一个HTTP服务器,该服务器把接收到的请求原样返回;这样就可以看到发送出的请求的具体内容,以供调试;在http请求里,可设置它的ip和端口号。

HTTP代理服务器:HTTP代理服务器是监听浏览器代理,记录基于代理浏览器所有的请求,并以Jmeter可执行的脚本格式保存。

属性显示:以GUI图形界面显示Jmeter配置文件jmeter.properties

8.后记

中文乱码?

在jmeter.properties将default的值ISO-8859-1修改成utf-8;若还乱码,外观选择mental。

压力测试各种指标?

见性能测试篇。

jmeter接口测试笔记的更多相关文章

  1. JMeter接口测试系列:Jmeter+jenkins+ant 的自动化构建

    在JMeter接口测试不断深入的过程中,发现可以和jenkins和ant一起搭配进行自动化的构建.下面是jmeter自动化构建的整理笔记. 准备环境 需要本机上确定安装了jmeter.ant和jenk ...

  2. http接口测试——Jmeter接口测试实例讲解

    摘要: 最近做的项目需要测试很多接口,上网查一查,发现完整讲述接口测试的资料太少,所以最近自己做完这个项目,把测试的东西整理一下和大家分享一下,希望对看到的人有所帮助     一.测试需求描述 1. ...

  3. jmeter接口测试教程

    一.Jmeter接口测试步骤: 1.添加线程组

  4. jmeter使用笔记

    接口测试 http协议 接口分成两类,一类是查询功能的接口,一类是保存数据功能的接口. 保存逻辑:数据传入进来,验证通过.保存到数据表中 使用jmeter接口测试的步骤 1.首先添加线程组. 2.配置 ...

  5. 通过Jenkins跑Jmeter接口测试脚本,我想当有接口跑失败时Jenkins发送邮件通知,这个如何弄呢

    通过Jenkins跑Jmeter接口测试脚本,我想当有接口跑失败时Jenkins发送邮件通知,这个如何弄呢

  6. jenkins+ANT+jmeter 接口测试环境搭建

    目的 jmeter很早就接触了,最近又在接触项目的时候整了一下.写这篇博客主要有两个目的 1,为了给自己搭建jmeter做一个总结. 2,在部署过程中遇到过一些坑,在这分享出来,也希望能给需要的人一个 ...

  7. Jmeter接口测试-断言

    JMeter接口测试-断言  对应qq群号:616961231 一个http请求发出,怎么判断执行的是否正确呢? 通过检查服务器响应数据,是否符合预期的数据, 如果是,任务成功,  如果否, 任务失败 ...

  8. jmeter接口测试实战-创建用户

    jmeter接口测试实战-创建用户 相信大多数看到标题的同学都会有疑问, 创建用户不是很简单吗, 调用一下创建用户接口, 传入指定入参, 用户即可创建成功, 今天我们的实战来讲讲创建场景.通过接口创建 ...

  9. JMeter接口测试实战-动态数据验证

    JMeter接口测试实战-动态数据验证 说到验证就不得不说断言, 先来看下JMeter官方给出断言(Assertion)的定义, 用于检查测试中得到的响应数据等是否符合预期,用以保证测试过程中的数据交 ...

随机推荐

  1. ERP出入库进阶操作与子流程--开源软件诞生28

    赤龙ERP出入库进阶讲解--第28篇 用日志记录"开源软件"的诞生 [进入地址 点亮星星]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redr ...

  2. 【鸿蒙开发板试用报告】用OLED板实现FlappyBird小游戏(上)

    总是做各种Demo,是时候做个什么小应用来练练手了.踌躇了很久,果然还是搞个小游戏才有意思.想到几年前风靡全球的FlappyBird,一个屏幕一个按钮就足够了,正好适合.OLED屏幕.按键的驱动已经有 ...

  3. 5G时代,URL Rewrite 还吃香吗

    URL Rewrite是网站建设中经常用到的一项技巧,通过 rewrite 我们能够屏蔽服务器运行态的信息,包括服务的程序.参数等等,给用户呈现美化后的URL,同时对搜索引擎更加友好,方便我们网站的推 ...

  4. 【appium】appium自动化入门之环境搭建(上)

     第 1 章 环境搭建 1.1 android-sdk 环境 前言 appium可以说是做app 适用最广泛的一个自动化框架,它的主要优势是支持android和ios ,另外脚本语言也是支持 java ...

  5. unctf2020 部分简单题题解

    unctf2020 水一波简单题..菜狗前来报道..大佬轻喷..如果有时间做题就好了呜呜呜 misc 1.baba_is_you 题目告诉我们,了解png文件格式. 下载得到一张png格式的图片. 用 ...

  6. Camtasia Studio,一款好用到爆炸的视频录制软件

    目前网络中有很多视频录制软件,各有特色,经过亲测今天小编为大家推荐一款比较好的视频录制软件就是Camtasia Studio软件,Camtasia支持视频的高清录制以及视频的导入导出,而且最支持导出的 ...

  7. guitar pro系列教程(五):Guitar Pro音轨属性之小节的功能

    又到了guitar pro系列教程新的一章,本章节小编将采用图文相结合的方式与大家一起来讨论下关于Guitar Pro小节的功能,感兴趣的小伙伴都可以进来看看哦,如下图所示: 我们看到小节这选项栏中分 ...

  8. iOS 索引列 使用详解

    做苹果开发的朋友在地区列表可能会遇到在页面的右侧有一列类似与导航的索引列,这次有机会遇到了,细细研究了一下,原来没有想象中的高达上,只需要简单的几步就能做出自己的索引列.,关注我的博客的朋友可能会对这 ...

  9. 蓝桥杯-RP大冒险-未解决

    RP大冒险 问题描述 请尽情使用各种各样的函数来测试你的RP吧~~~ 输入格式 一个数N表示测点编号. 输出格式 一个0~9的数. 样例输入 0 样例输出 X {当且仅当输出仅有一个数X且X为0~9的 ...

  10. LeetCode 045 Jump Game II

    题目要求:Jump Game II Given an array of non-negative integers, you are initially positioned at the first ...