JMeter基于http请求的web接口性能测试总结
[本文出自天外归云的博客园]
基于http请求的web接口性能测试总结
压测的目的:对于Web接口压测的目的最终是要在对数据库造成压力的情况下观察压测服务器的cpu是否达到预警值、memory是否发生激变甚至泄露、响应结果的error率以及数据库服务器读写方面的情况是否正常等等情况。
测试环境的准备
我们要准备压测服务器和压力机,并建立二者之间的联系。
压测服务器
用来提供服务的,也就是我们的测试服务器,上面发布的是压测分支,我们首先要基于压测基准分支拉一个压测分支并push到远端,然后把开发的代码合到压测分支上再push到远端,发布到压测服务器。一般来说,我们的压测服务器是单节点的tomcat,而线上环境往往是多台服务器组成的负载均衡集群。
压力机
压力机是用来提供压力的,我们通过jmeter来做并发。实际测试中,压力机可以选择本机,也可以选择压测服务器。
不同点是:本机有jmeter界面,测试结果很直观,而压测服务器上是没有ui的;
优缺点是:选择本机的优点就是压测结果展示方便,Windows图形化压测结果展示,但是缺点是本机到压测服务器之间的网络情况会影响压测结果的准确性。而在压测服务器上进行就不存在这个问题。
建立联系
在压力机上把hosts切换到压测环境上,这样就可以对压测环境进行加压。
测试数据的准备
对于数据库方面施加压力,我们是通过分析http请求,找出能够对数据库产生压力的参数(这个参数往往会被用于与数据库进行交互,比如进行增删改查),然后对参数进行mock,做出足够数据量和满足复杂度的参数,通过并发http请求的方式来间接对数据库施加压力。这是针对与参数来做数据,以便模拟足够多样的http请求。再就是我们会在数据库表中插入一定量的数据,以满足数据库方面的数据量要求,模拟现实情况下数据库表中的数据量。前者是针对用户行为做数据,后者是针对数据库现状进行模拟,二者共同为压测提供模拟数据支持。
压测脚本的准备
我们通过jmeter来制定压测计划,在jmeter中创建压测计划,添加线程组,然后在线程组中添加http请求、聚合报告、查看结果树、图形结果等。调试没问题,脚本可以跑通了,就可以对线程组设置线程属性(设置并发量),在调度器配置中设置好持续并发时间进行压力测试了。我们可以把本机做压力机,在本机切换hosts到压测环境进行压测。也可以把配置好的jmeter脚本连通jmeter文件夹一起打包zip文件发到压测linux服务器上,然后在自己的目录下“unzip jmeter.zip”,“cd”到解压后的目录下,“chmod 777 jmeter.sh”添加执行权限,然后“./jmeter.sh -n -t 你的压测.jmx -l result.jtl”来执行压测,压测结果会保存到result.jtl文件中,在当前目录下。我们可以在服务器执行压测过程中观察测试结果,也可以在测试结束后在linux服务器上查看与分析result.jtl文件(也可以通过“sz result.jtl”命令将文件下载到本机,具体的下载存放路径在SecureCRT的Options->Session Options->X/Y/Zmodem中设置)。实际的压测过程中,我们会不断修改线程数,更改并发量。随着并发线程数的增加,当平均响应时间开始显著增加而每秒的吞吐量近乎不变的时候,这个并发量所对应的每秒吞吐量就是瓶颈点所在。
压测过程中会遇到的问题
在压测过程中,可能会遇到“NoHttpResponseException (the target server failed to respond)”。这是由于jmeter自身设置的问题导致的,修改jmeter.properties中的httpclient4.retrycount和httpclient4.idletimeout值就可以了,然后修改jmeter中设置http请求继承自HttpClient4。
在压测过程中,可能会遇到“java.net.URISyntaxException: Illegal character in query at index xxx”,这可能是由于你对于http请求参数没有勾选编码造成的,解决办法如下:
JMeter基于http请求的web接口性能测试总结的更多相关文章
- 基于Python + requests 的web接口自动化测试框架
之前采用JMeter进行接口测试,每次给带新人进行培训比较麻烦,干脆用python实现,将代码和用例分离,易于维护. 项目背景 公司的软件采用B/S架构,进行数据存储.分析.管理 工具选择 pytho ...
- 一.Jmeter+Ant+Jenkins搭建持续集成接口性能自动化测试
微创新作品信息 1)微创新作品描述 A.为什么诞生: 1. 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换, ...
- go gin框架和springboot框架WEB接口性能对比
1 简要概述 最近看起go lang,真的被go的goroutine(协程)惊艳到了,一句 go function(){#todo},即可完成一个并发的工作. 看到gin这个web框架时,突然就特别想 ...
- 利用python httplib模块 发送Post请求测试web服务是否正常起来!
最近在学习python,恰好老大最近让我搞个基于post请求测试web服务是否正常启用的小监控,上网查了下资料,发现强大的Python恰好能够用上,所以自己现学现卖,顺便锻炼下自己. 由于本人也刚接触 ...
- 基于jmeter和shell的接口性能自动化
基于jmeter和shell的接口性能自动化 1. 总体需求 由于性能测试中涉及的查询接口多,版本迭代频繁,版本更新后自动跑一轮查询业务的性能,可以及时发现一些开发修复bug触发的非预期的bug,利用 ...
- Jmeter实时监控+SpringBoot接口性能实战
性能测试 Jmeter实时监控+SpringBoot接口性能实战 自动化 SpringBoot Java Jmeter实时监控+SpringBoot接口性能实战 一.实验目的及实验环境 1.1.实验目 ...
- 实战jmeter入门压测接口性能
什么是Jmeter? 是Apache组织开发的基于Java的压力测试工具. 准备工作: 一.安装配置好环境及压测工具 Jmeter下载地址:http://mirrors.tuna.tsinghua.e ...
- 性能测试培训:WebSocket协议的接口性能之Jmeter
性能测试培训:WebSocket协议的接口性能之Jmeter poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest测试开 ...
- WEB接口测试之Jmeter接口测试自动化 (一)
软件测试自动化从不同的测试阶段分类,可从下层到上层依次分为单元测试-->接口测试-->界面自动化测试. 单元测试一般有开发人员自行完成,而界面自动化测试合适的测试条件又很难达到,测试人员在 ...
随机推荐
- window.cookie
本地测试cookie用火狐来测试 首先cookie是document上的一个属性. 先弹出一个cookie alert(document.cookie); //弹出是空的 设置cookie,格式是有一 ...
- .NET: WPF Data Binding
WPF是分离UI和Logic的最佳工具,不同于Window Form的事件驱动原理,WPF采用的是数据驱动,让UI成为了Logic的附属,达到分离的效果. 本篇主要讲讲wpf的精华:data bind ...
- bzoj4238 电压
首先先直接对图进行二染色,dfs染完色后,有的边为搜索树边,有的为非树边,当非树边连接的两头的点为异色的时候,那么很明显这条非树边和树边构成的环上的边必然不可能成为答案:如果非树边的两端的点同色,那么 ...
- JSon_零基础_001_将布尔类型数组转换为JSon格式字符串,返回给界面
将布尔类型数组转换为JSon格式字符串,返回给界面 需要导入包: 编写bean: package com.west.webcourse.po; /** * 第01步:编写bean类, * 下一步com ...
- eclipse key
让我们按照使用频率来看看我最爱用的一些热键组合.(注:以下内容在Eclipse3.02及一上版本通过测试) . Control-Shift-T: 打开类型(Open type).如果你不是有意磨洋工, ...
- MSSQL 判断实例中是否存在某种表
执行语句 SELECT 'SELECT * FROM '+Name+'..SysObjects Where XType=''U'' and name=''tab_scartrim'' ORDER BY ...
- paper 87:行人检测资源(下)代码数据【转载,以后使用】
这是行人检测相关资源的第二部分:源码和数据集.考虑到实际应用的实时性要求,源码主要是C/C++的.源码和数据集的网址,经过测试都可访问,并注明了这些网址最后更新的日期,供学习和研究进行参考.(欢迎补充 ...
- Immediate assertion
Imemdiate assertion可以放在任何procedural statement中, assertion被执行判断,当这个procedural code被执行的时候.其他时间是不会被执行的. ...
- 1. 星际争霸之php面向对象(一)
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- [php] 使用IDE的正则搜索代码
([^a-zA-Z_=$0-9/\[\>])('|"|,)?(\s*)store_banner(\s*)('|"|,)?([^a-zA-Z_=$0-9\/\(\]:]) 用在 ...