jmeter接口测试笔记
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接口测试笔记的更多相关文章
- JMeter接口测试系列:Jmeter+jenkins+ant 的自动化构建
在JMeter接口测试不断深入的过程中,发现可以和jenkins和ant一起搭配进行自动化的构建.下面是jmeter自动化构建的整理笔记. 准备环境 需要本机上确定安装了jmeter.ant和jenk ...
- http接口测试——Jmeter接口测试实例讲解
摘要: 最近做的项目需要测试很多接口,上网查一查,发现完整讲述接口测试的资料太少,所以最近自己做完这个项目,把测试的东西整理一下和大家分享一下,希望对看到的人有所帮助 一.测试需求描述 1. ...
- jmeter接口测试教程
一.Jmeter接口测试步骤: 1.添加线程组
- jmeter使用笔记
接口测试 http协议 接口分成两类,一类是查询功能的接口,一类是保存数据功能的接口. 保存逻辑:数据传入进来,验证通过.保存到数据表中 使用jmeter接口测试的步骤 1.首先添加线程组. 2.配置 ...
- 通过Jenkins跑Jmeter接口测试脚本,我想当有接口跑失败时Jenkins发送邮件通知,这个如何弄呢
通过Jenkins跑Jmeter接口测试脚本,我想当有接口跑失败时Jenkins发送邮件通知,这个如何弄呢
- jenkins+ANT+jmeter 接口测试环境搭建
目的 jmeter很早就接触了,最近又在接触项目的时候整了一下.写这篇博客主要有两个目的 1,为了给自己搭建jmeter做一个总结. 2,在部署过程中遇到过一些坑,在这分享出来,也希望能给需要的人一个 ...
- Jmeter接口测试-断言
JMeter接口测试-断言 对应qq群号:616961231 一个http请求发出,怎么判断执行的是否正确呢? 通过检查服务器响应数据,是否符合预期的数据, 如果是,任务成功, 如果否, 任务失败 ...
- jmeter接口测试实战-创建用户
jmeter接口测试实战-创建用户 相信大多数看到标题的同学都会有疑问, 创建用户不是很简单吗, 调用一下创建用户接口, 传入指定入参, 用户即可创建成功, 今天我们的实战来讲讲创建场景.通过接口创建 ...
- JMeter接口测试实战-动态数据验证
JMeter接口测试实战-动态数据验证 说到验证就不得不说断言, 先来看下JMeter官方给出断言(Assertion)的定义, 用于检查测试中得到的响应数据等是否符合预期,用以保证测试过程中的数据交 ...
随机推荐
- ServiceStack.Redis 的 ASP.NET Core 扩展库
给大家安利一款 ServiceStack.Redis 的 ASP.NET Core 扩展库,它是基于 ServiceStack.Redis.Core 开发的. 简单易用,开源免费,使用ASP.NET ...
- C#设计模式——代理模式(Proxy Pattern)
引言 在我们的生活中,经常会遇到需要什么东西,但是自己又不是很方便或者对方不是很方便,则就需要中间的一个代理人去解决.例如代购.在软件开发中,也会遇到这样的问题.有些对象有时候会由于网络或其他的障碍, ...
- Apache Flink Dashboard未授权访问导致任意Jar包上传漏洞
漏洞危害 攻击者无需Flink Dashboard认证,通过上传恶意jar包 csdn-[漏洞复现]Apache Flink任意Jar包上传导致远程代码执行 freebuf-Apache Flink ...
- python-网络安全编程第六天(threading多线程模块&Queue模块&subprocess模块)
前言 昨天晚上9点多就睡了 2点起来没睡意... 那就学习吧emmmm ,拿起闲置几天的python课程学习.学习到现在5.58了 总结下 继续开始学习新的内容 多多线程? 线程(英语:thread) ...
- Maven一定要会的这几个知识!
一.Maven概念 Maven是一个项目管理和整合工具.Maven为开发者提供了一套完整的构建生命周期框架.开发团队几乎不用花多少时间就能够自动完成工程的基础构建配置,因为Maven使用了一个标准的目 ...
- 标准库之time,random,sys,os
# import time # print(time.time()) # 时间戳 # print(time.mktime(time.localtime())) # 结构化时间转换为时间戳 # prin ...
- Appium上下文和H5测试(一)
坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.混合应用-H5 1.混合应用是什么? 2.怎么样分辨一个 App 页面究竟是原生的还是 We ...
- LeetCode周赛#213
5554. 能否连接形成数组 题目链接 题意 给定整数数组 arr ,其中每个整数互不相同 .另有一个由整数数组构成的数组 pieces,其中的整数也互不相同 .请以 任意顺序 连接 pieces 中 ...
- LaTeX中的表格
表格插入代码及注释: 显示效果: 更多命令可以看相关文档,通过在命令行终端输入 texdoc booktab 等命令打开文档.
- PyQt(Python+Qt)学习随笔:Qt Designer中部件的mouseTracking和tabletTracking属性
在Qt Designer中的部件属性设置中,有mouseTracking和tabletTracking两个属性,这两个属性是跟踪鼠标或平板触控笔的移动轨迹的. 一.mouseTracking mous ...