[本文出自天外归云的博客园]

基于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接口性能测试总结的更多相关文章

  1. 基于Python + requests 的web接口自动化测试框架

    之前采用JMeter进行接口测试,每次给带新人进行培训比较麻烦,干脆用python实现,将代码和用例分离,易于维护. 项目背景 公司的软件采用B/S架构,进行数据存储.分析.管理 工具选择 pytho ...

  2. 一.Jmeter+Ant+Jenkins搭建持续集成接口性能自动化测试

    微创新作品信息 1)微创新作品描述 A.为什么诞生: 1. 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换, ...

  3. go gin框架和springboot框架WEB接口性能对比

    1 简要概述 最近看起go lang,真的被go的goroutine(协程)惊艳到了,一句 go function(){#todo},即可完成一个并发的工作. 看到gin这个web框架时,突然就特别想 ...

  4. 利用python httplib模块 发送Post请求测试web服务是否正常起来!

    最近在学习python,恰好老大最近让我搞个基于post请求测试web服务是否正常启用的小监控,上网查了下资料,发现强大的Python恰好能够用上,所以自己现学现卖,顺便锻炼下自己. 由于本人也刚接触 ...

  5. 基于jmeter和shell的接口性能自动化

    基于jmeter和shell的接口性能自动化 1. 总体需求 由于性能测试中涉及的查询接口多,版本迭代频繁,版本更新后自动跑一轮查询业务的性能,可以及时发现一些开发修复bug触发的非预期的bug,利用 ...

  6. Jmeter实时监控+SpringBoot接口性能实战

    性能测试 Jmeter实时监控+SpringBoot接口性能实战 自动化 SpringBoot Java Jmeter实时监控+SpringBoot接口性能实战 一.实验目的及实验环境 1.1.实验目 ...

  7. 实战jmeter入门压测接口性能

    什么是Jmeter? 是Apache组织开发的基于Java的压力测试工具. 准备工作: 一.安装配置好环境及压测工具 Jmeter下载地址:http://mirrors.tuna.tsinghua.e ...

  8. 性能测试培训:WebSocket协议的接口性能之Jmeter

    性能测试培训:WebSocket协议的接口性能之Jmeter poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest测试开 ...

  9. WEB接口测试之Jmeter接口测试自动化 (一)

    软件测试自动化从不同的测试阶段分类,可从下层到上层依次分为单元测试-->接口测试-->界面自动化测试. 单元测试一般有开发人员自行完成,而界面自动化测试合适的测试条件又很难达到,测试人员在 ...

随机推荐

  1. iis access denied, you do not have permission.

    this kind of problems are usually caused by some IIS configuration issues, like application pool set ...

  2. CentOS 7 安装Dukto(局域网通信工具)

    rmp包 http://download.opensuse.org/repositories/home:/colomboem/CentOS_7/x86_64/dukto-6.0-13.1.x86_64 ...

  3. fzuoj Problem 2177 ytaaa

    http://acm.fzu.edu.cn/problem.php?pid=2177 Problem 2177 ytaaa Accept: 113    Submit: 265Time Limit: ...

  4. 。。。Hibernate注解配置的注意事项。。。

    今天本来打算录视频的,突然遇到一个拦路虎,Hibernate注解配置,有一个注意点:要么都在属性上面注解配置,要么都在getXX()方法上面用注解配置,要不然就会报错: Caused by: org. ...

  5. CCF真题之最大矩形

    201312-3 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi.这n个矩形构成了一个直方图.例如,下图中六个矩形的高度就分别是3, 1, 6 ...

  6. android复习第二天------布局

    1,在4,0版本前一共有五种布局,且都是ViewGroup的子类分别是 RelativeLayout(相对),AbsoluteLayout(绝对),LinearLayout(线性),FrameLayo ...

  7. paper 51:图像复原

     图像退化: 图像在形成.记录.处理和传输过程中,由于成像系统.记录设备.传输介质和处理方法的不完善,导致图像质量的下降,这种现象叫做图像退化. 图像复原: 就是对退化的图像进行处理,尽可能恢复出原始 ...

  8. paper 21 :Libsvm的安装和使用

    看了很多资料(包括我们实验室群里师兄上传的资料),算是掌握了libsvm的正确安装和使用,把结果告诉大家以方便以后使用. 1. 参考网站: libsvm库下载:http://www.csie.ntu. ...

  9. [Ubuntu] ubuntu13.04 从php5.4降级到php5.3

    ubuntu12.10以后,默认的deb安装库上面的php版本已经是5.4了,公司的项目使用5.4的时候,还是会出现很多问题,所以不得不降级安装5.3 顺便说一句,我原来的环境是nginx + php ...

  10. emulator-arm.exe 已停止工作、 emulator-x86 已停止工作

    问题描述: emulator-arm.exe 已停止工作. emulator-x86 已停止工作.AVD模拟器启动一直黑屏.AVD模拟器启动一直显示andorid界面 解决方法: 1.   sdk的安 ...