Jmeter接口测试步骤
- 格式:docx
- 大小:575.93 KB
- 文档页数:6
JMeter循环读取CSV⽂件实现接⼝批量测试⾸先要理解为什么要进⾏批量测试,当我们在⼯作中进⾏接⼝测试时,项⽬的接⼝肯定不⽌⼀个,⽽是很多很多,⽽且每个接⼝都需要进⾏正确参数,错误参数,参数为空,特殊字符等⽅式来测试接⼝是否能够正确返回所需的响应值。
在编写脚本之前可以先汉化JMeter,找到JMeter解压/安装路径下的JMeter.properties,⽤编辑器打开(右键⽤记事本打开也可以):找到 #language=en ,在下⾯添加:language=zh_CN 并重启JMeter那么我们该如何通过JMeter来完成批量测试呢?我们先建⽴⼀个较为简单的⽅式进⾏测试脚本观察⼀下。
以去获取创建订单时的【省/市/区信息】接⼝:/api/XXXX/XXXX/getAddress 请求⽅法:post 请求参数:type,code为例1、添加线程组测试计划右键选择添加——线程⽤户——线程组。
Setup线程组:⽤于执⾏预测试操作tearDown:⽤于执⾏测试后操作线程组:⼀般测试接⼝时添加的线程,可以把它看做⼀个虚拟的⽤户组,线程组中的每⼀个线程都可以理解为⼀个虚拟⽤户2、添加HTTP信息头管理器。
线程组右键选择添加——配置元件——HTTP信息头管理器如果接⼝信息头定义了值的话,需要放到信息头管理器⾥⾯,例如:⽤户token,公共参数等。
3、添加HTTP请求线程组右键添加——取样器——HTTP请求协议:默认HTTP协议,可不填写,若为HTTPS协议需要填写HTTPS。
服务器名称或IP:填写接⼝域名端⼝号:默认HTTPS请求的80,若为HTTPS请求需要填写443⽅法:直接选择接⼝的请求⽅法:GET,POST,PUT,DELETE即可。
路径:填写接⼝的具体路径参数:点击下⽅导航栏添加按钮,在已经添加的数据栏填写参数名,参数值。
4、添加察看结果树线程组右键添加——监听器——察看结果树左边:展⽰请求名,绿⾊请求结果表⽰请求成功,红⾊请求结果表⽰请求失败。
在Mac上利⽤压测⼯具Jmeter-Suite进⾏⼀次压测实践的保姆级详细步骤(参考腾讯云⽂章)参考的⽂章写此⽂的⽬的由于我是刚开始接触kubernetes和jmeter,所以在学习过程中遇到了很多很多问题,同时我很烦恼为什么⽹上没有⽂章是从真正零基础地记录部署的过程,⽐如安装brew和helm3之类的步骤都被省略了,像我这种菜菜就很抓瞎。
所以在我终于摸到了kubernetes世界的⼤门、碰到了压测的边边后,我决定写⼀篇⽂章回馈菜菜们。
需要的背景知识阅读《kubernetes权威指南》第⼀章(了解kubernetes的基本概念)阅读(了解jmeter的作⽤)我的系统详细步骤省略购买压测机器部分的内容,直接跳到压测⼯具安装部分开始。
1 安装brewbrew是⼀个mac上⾯很好⽤的软件管理系统,可以简化mac上的安装过程。
我⽤了⼀个知乎专栏上的⾃动化脚本,链接是,真诚表⽩作者,原本下载速度很慢的,现在下载速度飞升 T^Tps安装期间我遇到了各种问题,因为我原本的mac系统很低,安装了低版本的brew,不知道啥原因死活装不上新版本,我⼲脆重新装了个机,重新安装,就⾮常顺利2 安装wgetLinux系统上⼀个下载⽂件的⼯具。
其实我感觉它的功能和brew挺像的,但由于我参考的⽂章⾥⽤了wget那我就⽤吧()⽤brew install wget命令,我在这⼀步很顺利,省略之。
3 安装helmHelm 是Deis 开发的⼀个⽤于Kubernetes 应⽤的包管理⼯具,主要⽤来管理Charts。
chart 是描述相关的⼀组Kubernetes资源的⽂件集合。
单个chart可能⽤于部署简单的东西,⽐如memcached pod,或者⼀些复杂的东西,⽐如完整的具有HTTP 服务,数据库,缓存等的Web 应⽤程序堆栈。
chart通过创建为特定⽬录树的⽂件,将它们打包到版本化的压缩包,然后进⾏部署。
按照⽂档上的操作,我在运⾏完wget https://get.helm.sh/helm-v3.2.1-linux-amd64.tar.gztar -zxvf helm-v3.2.1-linux-amd64.tar.gzcp linux-amd64/helm /usr/local/bin/后,出现了zsh: exec format error: helm 的报错,简单搜索了⼀下,似乎是⽆法解析⽂件?于是我⼜重新进⾏安装helm的操作,也就是运⾏brew install kubernetes-helm,⼜出现了错误。
开发测试DEVELOPMENT基于Jmeter开展接口自动化测试方法探索与实践中国农业银行研发中心 冯瑶 秦洪岩 刘跃光在自动化功能测试领域,按照业界普遍认同的单元级、接口级和UI界面级的7-2-1占比原则,接口级功能测试能够屏蔽案例对某些特殊环境依赖、适用范围广,可实现复杂案例设计,收益率适中(占比20%),可提前开展。
然而,接口级自动化测试一般需要依据系统接口特点和报文格式进行适应性开发,工具研发周期较长,因此,选择一款无需自行开发即可满足接口级的自动化测试工具非常有意义。
一、Jmeter简介Jmeter因支持对服务器进行大规模的高强度负载测试,用以检测不同并发数量下系统的整体性能情况,并可以通过内置的Jmeter控件,以文本表格或图形展示的形式生成吞吐量、响应时间等指标的统计分析,被广泛应用于性能测试。
该工具具有可移植性并支持多线程工作,允许通过多个线程并发取消,同时可以通过单独的线程组对多个不同的功能同时取样。
操作者可通过GUI 操作界面进行方便友好的操作。
此外,该工具具有高扩展性,其远程发压机可支持无限制的测试能力。
它不仅具有多种配置元件、处理器和监听器可供选择,还支持脚本编程、动态输入及自定义插件等,用户可根据自身需要进行功能扩展。
因此,针对Jmeter的高扩展性以及支持GUI界面等特性,本文结合使用Jmeter工具开展接口自动化功能测试实践进行了有益的探索并加以总结。
二、测试方法及步骤基于Jmeter进行接口功能测试主要分为报文准备、数据准备、断言设置、测试执行和结果统计等五个步骤,这种方法不仅适用于单交易场景,也适用于混合交易场景。
1.报文准备报文准备共有三种方法:直接复制粘贴报文、浏览器录制协议报文和手动添加参数。
(1)直接复制粘贴报文这种方法适用于开发人员已完成单元测试,此时开发人员可提供给测试人员能够直接使用的测试报文。
以HTTP请求为例,先在Jmeter工具里新建一个HTTP 请求,然后在Body Data中复制粘贴请求报文。
Jmeter接⼝测试(⼆)正则表达式
在做接⼝测试时,经常会遇到⼀个接⼝的⼊参是另⼀个接⼝响应报⽂⾥的某个字段,这种情况下就需要⽤正则表达式提取器把两个接⼝串联起来。
⼀般正则表达式配合debug sampler进⾏调试,debug sampler 数据显⽰在响应数据中。
⼀、⽤正则表达式提取器串联接⼝
1)添加正则表达式提取器
2)把要提取的内容以变量的形式存放在变量池⾥
备注:
3)变量引⽤。
对于⽤正则表达式提取器提取的token,⼀般⽤http信息头部管理器,以变量的形式来提取,供线程组⾥需要的http请求使⽤
⼆、正则表达式提取简介
1)正则表达式后没有结束符,只要后⾯没有空格,换⾏,都会被提取出来2)正则表达式后⾯的结束符不唯⼀时,会把所有匹配结束符的内容提取出来3)?表⽰0或者1个
4)正则表达式有?⾮贪婪模式的,后⾯没有结束符的,⼀般会默认没有5)正则表达式提取段落结尾的内容时,直接⽤(.*)
6)正则表达式提取有换⾏、空格的内容,表达式不唯⼀。
总结:
a、正则表达式⼀般有结束符;
b、没有的时候看要引⽤的位置,直接引⽤后⾯的内容作为结束符;
c、如果有多个相同的符号时就需要⽤⾮贪婪符号-----问号?(英⽂状态下输写)。
jmeter测试接⼝--form表单提交请求(解决请求传参为空的问题)
Form表单提交:直接使⽤表单⽅式提交即可,此⽅式采取页⾯直接跳转的形式。
⽤jmeter请求的时候,⽇志打印传的参数是空的。
考虑到form提交和http的提交请求头可能是不⼀样的,所以优化了请求头:
http的请求头如下:
content-type application/json
图⽚如下:
form表单如果也⽤上⾯的请求头信息,参数会传不过去,显⽰的传的参数是空的,如下是form表单的请求:
Content-Type application/x-www-form-urlencoded
如下图:
如果参数是json格式的提交后,还是传的是空的,就⽤如下图所⽰,把参数放到Parameters中来,这样请求,不会传空的参数了:。
jmeter调用接口常用方法全文共四篇示例,供读者参考第一篇示例:JMeter是一个广泛使用的压力测试工具,可以用来测试Web应用程序的性能以及对接口进行测试。
在实际工作中,调用接口是JMeter的一个重要功能之一,接口测试可以帮助我们验证接口的正确性、稳定性和性能。
在JMeter中,调用接口的方法有很多种,本文将详细介绍JMeter调用接口常用方法。
1. HTTP Request在JMeter中,使用HTTP Request可以向服务器发送HTTP请求,常用于模拟用户访问Web页面或调用后端接口。
使用HTTP Request 需要配置请求的URL、请求方式(GET、POST等)、请求头、请求参数等信息。
在JMeter的工作台中,选择添加“Thread Group”后右键点击Thread Group,选择Add -> Sampler -> HTTP Request,然后按照提示填入相关信息即可。
2. JSR223 SamplerJSR223 Sampler是JMeter提供的一个自定义脚本执行器,可以使用多种脚本语言编写脚本,并在JMeter中执行。
在调用接口时,我们可以通过编写脚本实现更加灵活的定制化操作。
可以在脚本中添加逻辑判断、循环操作、动态参数等。
在JMeter的工作台中,选择添加“Thread Group”后右键点击Thread Group,选择Add -> Sampler -> JSR223 Sampler,然后选择脚本语言,并编写自定义脚本即可。
BeanShell Sampler是JMeter提供的另一个自定义脚本执行器,支持BeanShell脚本语言。
与JSR223 Sampler类似,BeanShell Sampler也可以用于执行自定义脚本。
需要注意的是,在JMeter 3.1及之后的版本中,BeanShell Sampler已经被标记为“不推荐使用”,建议使用JSR223 Sampler代替。
Jmeter⼊门使⽤JMeter的简单使⽤1.JMeter简介Apache JMeter是Apache组织开发的基于Java的压⼒测试⼯具。
⽤于对软件做压⼒测试,它最初被设计⽤于Web应⽤测试,但后来扩展到其他测试领域。
它可以⽤于测试静态和动态资源,例如静态⽂件、Java ⼩服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器,等等。
JMeter 可以⽤于对服务器、⽹络或对象模拟巨⼤的负载,来⾃不同压⼒类别下测试它们的强度和分析整体性能。
另外,JMeter能够对应⽤程序做功能/回归测试,通过创建带有断⾔的脚本来验证你的程序返回了你期望的结果。
为了最⼤限度的灵活性,JMeter允许使⽤正则表达式创建断⾔。
2.安装与配置2.1. ⼯具/原料●JDK 1.7●Apache JMeter 3.02.2. 环境JMeter可以在Windows/Linux/Mac平台上运⾏,这⾥介绍在Windows 上的安装配置。
2.3. 安装步骤●安装JDK,⽹上下载⼀个JDK,配置好环境变量即可使⽤。
在dos界⾯输⼊java -version,能显⽰版本号,则证明JDK安装OK,可以使⽤。
●安装Jmeter:Jmeter不需要安装,解压之后即可使⽤;双击Jmeter的bin⽬录下的jmeter.bat,出现下⾯界⾯,则Jmeter启动成功,Jmeter就绪。
3.HTTP接⼝测试3.1. 测试实例以⼀个简单的接⼝为例:/doc/983e39af541810a6f524ccbff121dd36a32dc427.html /get?key2=value2&key1=value1在浏览器中打开的效果如下:在这⾥,成功的⽤浏览器访问了这个接⼝,并得到了成功的返回报⽂。
下⾯我们⽤Jmeter 来访问这个接⼝。
3.2. 使⽤Jmeter进程HTTP测试3.2.1.添加线程组右键“测试计划”->“添加”->“Threads(Users)”->“线程组”3.2.2.添加“HTTP请求”●右键“线程组”->“添加”->“Sampler”->“HTTP请求”●打开之后,填⼊访问该接⼝所需要的参数,效果如下图Tips:1.服务器名或IP:这⾥填写服务IP地址(不带端⼝),有域名的直接填写域名2.端⼝号:这⾥填写端⼝号,有域名的这⾥为空就好。
SOA Testing 工具介绍目录SOA Testing 工具介绍 (1)目录 (2)一、SOAP UI (3)1. 介绍 (3)2. 安装、运行SOAP UI (3)3. 使用指南 (4)1.3.1创建、导入工程 (4)1.3.2执行web service操作请求 (7)1.3.3功能测试(Functional Testing) (9)1.3.4压力测试(Load Testing) (13)1.3.5 Web Service Mocking (19)二、Apache JMeter (19)1. 介绍 (19)JMeter简介 (19)JMeter主要特性 (19)2. 安装、运行Apache JMeter (20)3. 使用指南 (20)3.3.1在JMeter中测试Web Service (20)3.3.2在JMeter中测试JMS (28)三、PushToTest TestMaker (33)1. 介绍 (33)2. 安装、运行PushToTest_TestMaker (34)3. 使用指南 (36)2.3.1基于SOAP的Web Service的测试和监控 (37)一、S OAP UI1.介绍Soap ui提供一个工具通过soap/http来检查,调用,实现web service和web service的功能/负载/符合性测试。
该工具既可作为一个桌面应用软件使用,也可利用插件集成到Eclipse,maven2.X,netbeans和intellij中使用。
利用该工具可以方便快速的验证、测试WebService;同时可以作为WebService性能测试工具。
官方网址:/下载地址:/projects/soapui2.安装、运行SOAP UI根据下面的步骤来安装、运行soapUI:●从站点t /,通过Java WebStart可以在线安装最新的版本:●从站点sourceforge(/projects/soapui),下载安装soapUI的Windows版本,该版本包括了需要的Java运行环境(JRE1.5)。
JMeter接⼝⾃动化测试实例—JMeter引⽤javaScript Jmeter提供了JSR223 PreProcessor前置处理器,通过该⼯具融合了Java 8 Nashorn 脚本引擎,可以执⾏js脚本以便对脚本进⾏前置处理。
其中⽐较典型的应⽤就是通过执⾏js脚本对前端数据进⾏rsa加密,如登录密码加密。
但在这⾥我就简单的应⽤javaScript⽣成当前时间来做为例⼦,看如何在JMeter中使⽤JavaScript脚本的。
整个实例就是为了演⽰在JSR223 PreProcessor中⽣成HTTP请求的⼀个⼊参,然后得到响应后,可以通过JSON Extractor取出指定想到的信息,再通过BeanShell Assertion进⾏简单的校验断⾔,如果⼀直没有问题,再发起⼀个HTTP请求,其中的⼀个参数就是上⼀个HTTP请求响应解析⼊来的值。
先来看JSR223 PreProcessor,内容如下: 其实就是通过JavaScript代码获得当前系统时间,转换成指定格式,设置到变量⾥。
然后在接下来的HTTP请求中应⽤这个变量。
然后是JSON Extractor从响应体中提取信息(特别说明:响应体是JSON格式的) 接下来就是断⾔,在这⾥⽤BeanShell Assertion来做,如下所⽰: 接下来的HTTP请求,有⽤来前⾯设置的变量和响应解析出来的变量。
运⾏结果如下: 第⼀个请求的时间是当前时间,第⼆个请求的时间也是第⼀个请求前设置的时间,且radomCode就是第⼀个请求响应体通过JSON Extractor解析提取出来的变量值,且对第⼀个请求的BeanShell Assertion是通过的(不通过会结果树会显⽰红⾊且显⽰出错信息)。
Jmeter从入门到进阶目录1、基础介绍简单介绍jmeter的元件组成,作用等基础知识;2、录制脚本简述了jmeter录制脚本的2种方式;3、元件的作用域及执行顺序jmeter各元件的作用域及执行的顺序;4、Sampler之SOAP/XML-RPC Request取样器中关于SOAP/XML-RPC Request的用法;5、Sampler之HTTP请求取样器中关于HTTP请求的用法;6、http请求之content-type取样器中关于HTTP请求的补充说明;7、Sample之JDBC Request取样器中关于JDBC请求的用法;8、JDBC Request之Query Type取样器中关于JDBC请求的补充说明;9、目录结构jmeter目录结构等简单介绍;10、参数化jmeter参数化的4种方式;11、关联之正则表达式提取器jmeter关联之正则表达式提取器的用法;12、关联之XPath Extractorjmeter关联之XPath Extractor的用法;13、配置元件之计数器jmeter配置元件中关于计数器的用法;14、配置元件之HTTP属性管理器jmeter配置元件中关于http属性管理器的用法;15、函数助手jmeter内置函数助手的简单介绍;16、定时器jmeter八大元件之定时器的介绍;17、断言jemter八大元件之断言的介绍;18、逻辑控制器jmeter八大元件之逻辑控制器的介绍;19、常见问题及解决方法jmeter使用过程中常见问题及解决方案的说明;20、阶梯式加压测试jmeter扩展插件Stepping Thread Group的简单介绍;21、jmeter常用插件介绍jmeter插件Transactions per Second、Response Times Over Time、PerfMon Metrics Collector的下载安装及使用;22、内存溢出原因及解决方法关于jmeter做压力负载测试时候遇到内存溢出的原因和解决方法;23、jmeter分布式测试关于高并发情况下分布式测试的一些技术点和注意事项;24、dubbo接口测试利用jmeter的dubbo插件进行dubbo接口测试和性能测试;25、linux环境运行jmeter并生成报告linux环境,非GUI模式运行jmeter脚本进行性能测试,并生成测试报告的介绍;jmeter(一)基础介绍jmeter是一款优秀的开源性能测试工具,目前最新版本3.0版本一、优点1、开源工具,可扩展性非常好2、高可扩展性,用户可自定义调试相关模块代码3、精心简单的GUI设计,小巧灵活4、完全的可移植性和100%纯java5、完全swing和轻量组件支持(预编译的HAR使用javax.swing.*)包6、完全多线程框架,允许通过多个线程并发取样以及单独的线程对不同的功能同时取样7、支持脚本取样器二、安装及下载jmeter本身不需要安装,只需要配置好JDK环境,然后在在jmeter文件中的bin文件中打开jmeter.bat文件即可最新版本,建议配置的JDK最好用1.7及以上版本三、基础构成1、组成部分1)负载发生器:产生负载,多进程或多线程模拟用户行为2)用户运行器:脚本运行引擎,用户运行器附加在进程或线程上,根据脚本模拟指定的用户行为3)资源生成器:生成测试过程中服务器、负载机的资源数据4)报表生成器:根据测试中获得的数据生成报表,提供可视化的数据显示方式·2、主要概念2.1测试计划(test plan)描述一个性能测试,包含本次测试所有相关功能2.2.threads(users)线程Setup thread group:一种特殊类型的线程,可用于执行预测试操作。
单个接口测试,我们使用谷歌的插件posman
多个接口测试,我们使用Jmeter进行测试
一、使用工具测试
1、使用Jmeter对接口测试
首先我们说一下为什么用Posman测试后我们还要用Jmeter做接口测试,在
用posman测试时候会发现的是一个接口一个接口的测试,我们每次测试成功
后的数据,在工具中是无法保存的,再次测试的时候我们还要重新输入测试的
数据,当我们测试一个接口的时候可能感觉不明显,但是当你测试几十个接口
的时候,你就会发现使用Jmeter的好处。
二、使用Jmeter接口测试
1、首先邮件添加一个线程组,然后我们重命名接口测试
2、在线程组上添加一个Http默认请求,并配置服务器的IP地址端口等信息
3、在线程组中添加一个HTTP请求,这里我们重命名“增加信用卡账户信息
接口”
4、配置接口请求信息,这配置示例如下,HTTP请求名称可以按需求命名:
注:由于Jmeter请求线程组内的请求时从第一个开始执行,所以我们将需要
最先执行的请求放在前面
5、在线程组上添加监听器,察看结果树和聚合报告
7、点击启动,运行结束后查看,结果树和聚合报告
8、去数据库中核对数据