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. kali 安装redis

    wget http://download.redis.io/releases/redis-2.8.3.tar.gz    下载 tar xzf redis-2.8.3.tar.gz          ...

  2. Mac下载工具folx如何下载常用的软件

    最近,多档综艺节目都开展得如火如荼,比如<中国新说唱>.<这就是街舞>等深受年轻人喜欢的综艺节目.虽然手机端也可观看,但可以的话,当然是使用电脑屏幕观看节目比较过瘾. 接下来, ...

  3. 吉他入门:攻克solo第七课(Randy Rhoads风格)

    本期文章,主要和大家分享一下Randy Rhoads的solo句子.相信很多精研电吉他的朋友都会听过这个一手把Ozzy Osbourne从离开黑色安息日乐队的深渊中捞出来的天才吉他手.如果你暂时不了解 ...

  4. FL Studio中如何制作和混音Dutch Lead(上)

    Dutch Lead是电子音乐类型Dutch House以及Bigroom House中常用的Lead音色,这一篇文章中我将从制作和混音两方面来讲解Dutch Lead. (一).Dutch Lead ...

  5. 在FL Studio编曲软件中查找采样的音高

    相信玩音乐的小伙伴们都遇到过这种情况,在用FL Studio编曲时,想添加一段音频采样,由于采样的调式与我们正在编曲的调式不同,音频之间的衔接就是一个非常头疼的问题,要解决采样的调式,我们就得先确认这 ...

  6. WebsitePanel密码解密

    WebsitePanel是一套Windows系统中的虚拟主机管理系统,可以同时管理多台服务器. 通过反编译该系统的dll发现该系统的密码加密方式可逆. 解密流程 1,获取密钥 密钥保存在  Enter ...

  7. 一看就懂的:MySQL数据页以及页分裂机制

    文章公号 首发!连载中~ 欢迎各位大佬关注, 回复:"抽奖" 还可参加抽活动 文末有二维码 一.知识回顾 回顾一下之前和大家分享的知识点 看了前面的文章,想必你肯定了解了什么是Bu ...

  8. 【Azure微服务 Service Fabric 】Service Fabric中应用开启外部访问端口及微服务之间通过反向代理端口访问问题

    问题描述 1) 当成功的在Service Fabric集群中部署了应用后,如何来访问呢?如果是一个Web服务,它的URL又是什么呢? 2) 当Service Fabric集群中,服务之间如需要相互访问 ...

  9. windowsAPI函数操作注册表实现软件开机自启

    注册表的结构 注册表是一个数据库,它的结构同逻辑磁盘类似.注册表包含键(Key),它类似磁盘中的目录,注册表还包含键值(Value),它类似磁盘中的文件.一个键可以包含多个子健和键值,其中键值用于存储 ...

  10. 蒲公英 · JELLY技术周刊 Vol.32: 前端的自我进化之路

    蒲公英 · JELLY技术周刊 Vol.32 前端开发不过是切图仔在那儿瞎鼓捣,没啥门槛,不需要懂计算机原理,不需要懂算法,微服务.高并发这些都不需要懂,拖组件写个页面就好了,数据.逻辑.测试都可以交 ...