以前常用SoapUI来做接口的性能测试,这次用的Jmeter,对需由客户端根据时间戳等登录参数生成随机token值和印签值来发请求的系统,非它莫属了。下面就这次测试的难点和操作注意问题展开总结。

**航空订票APP性能测试以接口压测为主,采用JMETER压测工具,结合NMON监控服务器资源。采用两台测试机,分布式并发压测,在500个并发,800个并发压力下,记录服务器资源的使用情况,并作分析。

1.脚本准备:

测试中,发送的请求体以JSON代码为主,且每个接口要求有token值和印签值(根据请求的body参数生成),因此采取在请求前添加前置处理器BeanShellPreProcessor,来处理token和印签值,下面以“常客登录”为例进行说明。

1)JMETER库添加生成印签的JAR包(目录地址:/lib/ext/),JAR包在Eclipse下生成;

2)线程组下添加配置元件“HTTP信息头管理器”,并设置信息头:名称Content-Type,值为application/json。

3)JMETER请求前添加前置处理器BeanShellPreProcessor,脚本如下:

import com.air.keygen.*;//引用JAR包中写入的方法

String body ="{\n" +

" \"common\": {\n" +

" \"abuild\": \"593\",\n" +

" \"akey\": \"B502CA25CB7944758F349C8187D6456D\",\n" +

"\"aname\": \"com.rytong.hnair.preview\",\n" +

" \"atarget\": \"preview\",\n" +

" \"aver\": \"6.3.0\",\n" +

"\"did\":\"4d0063f74e1c21cd\",\n" +

" \"schannel\": \"AD\",\n" +

" \"slang\": \"zh_CN\",\n" +

"\"sname\": \"samsung/k3gxx/k3g:4.4.2/KOT49H/G900HXXU1ANCI:user/release-keys\",\n" +

" \"stime\": \"1480535569991\",\n" +

" \"sver\": \"4.4.4\",\n" +

" \"szone\": \"+0800\"\n" +

" },\n" +

" \"data\": {\n" +

"\"number\": \"7044002896\",\n" +

"\"pin\": \"123456\",\n" +

"\"toSave\": true\n" +

"  }\n" +

"}";

String airSign = Generator.getKey(body);

vars.put("airSign",airSign);  //输出参数hnairSign

vars.put("body",body);  //输出参数body

3)请求体调用BeanShellPreProcessor脚本生成的参数airSign和body。

如常客登录的请求url为:https://..../login?hnairSign=${airSign},请求体Body Data为:${body}。

2. 其它设置项

1). 本次测试用的https协议,先准备本系统的证书文件(.crt文件),然后导入认证文件至JMETER(菜单-选项-SSL管理器,选择要导入的证书文件),在JMETER的sampler中,协议选择https即可。

2). 参数化处理。本次测试过程中,为了保证数据的完整性和真实性,采用csv文件保存数据文本,然后在请求下添加配置元件CSV Data Set Config,将保存的csv文件路径写入配置文件。请求脚本中需要调用参数的地方,做参数化即可,如:${__CSVRead(D:\HN-APP\预订-查询单程机票.csv,3)}。

3). 随机数据生成。由于一个请求脚本中会多次用到同一个参数,因此,添加一个前置处理器:用户参数,设置名称和值,值调用随机函数随机生成。如:名称idNo,值${_Random(10000000,9999999,idNo},名称mobile,值${_Random(10000000,9999999,mobile)} ,对应的引用脚本修改为:"idNo\": \"TESTA${idNo}\","mobile\": \"189${mobile}\"。

4). 集合点设置。在线程下添加定时器Synchronizing Timer,设置并发用户数即可。

3.分布式压测

1)测试环境准备。本次采用两台测试机分布式压测,两台机在同一网段,先准备好两台机的Jmeter版本及JDK版本一致,避免不必要的错误,将测试脚本和参数化文件,分别放到相同的目录下。

2)参数设置。环境准备好后,先准备一台机做主机,一台做从机,在主机端的jmeter的bin文件中,用记事本打开jmeter.properies文件,找到remote_hosts并设置值为从机的IP,如:remote_hosts=192.198.0.26,默认端口号为1099,

3)分布式运行。保存好设置后,先运行从机的jmeter-sever.bat,再运行主机的的jmeter.bat,在菜单运行下方的远程启动下,可以查看到从机和主机的IP,此时可以根据并发情况,分别选择一台机或两台机同时进行测试。

接口性能测试(Jmeter)操作总结的更多相关文章

  1. 接口性能测试--JMeter

    1.JMeter Java Sampler介绍 setupTest做些初始化的工作,每个线程只执行一次 teardownTest做些清理工作,每个线程只执行一次 1.JMeter Java Sampl ...

  2. 【原创】相对完整的一套以Jmeter作为工具的性能测试教程(接口性能测试,数据库性能测试以及服务器端性能监测)

    准备工作 jmeter3.1,为什么是3.1,因为它是要配合使用的serveragent所支持的最高版本,下载链接 https://pan.baidu.com/s/1dWu5Ym JMeterPlug ...

  3. Jmeter Http接口性能测试

    Jmeter Http接口性能测试 1.      启动Jmeter Jmeter下载解压即可使用,Jmeter启动,点击D:\ProgramFiles\jmeter\apache-jmeter-2. ...

  4. jmeter接口性能测试【CSV文件读取+接口关联+设置集合点】

    一.前言 周计划上安排了个接口性能测试的任务,便开始了职业生涯的第一个接口性能测试... 接口进行压测之前,首先需要调通脚本.有两种方式,一种是通过抓包工具(如fiddler)抓取业务接口:另一种是通 ...

  5. JMeter之Http协议接口性能测试

    一.不同角色眼中的接口 1.1,开发人员眼中的接口    1.2,测试人员眼中的接口 二.Http协议基本介绍 2.1,常见的接口协议 1.:2. :3. :4.:5.: 6. 2.2,Http协议栈 ...

  6. jmeter简单的接口性能测试

    原文转自:https://blog.csdn.net/lovesoo/article/details/78579547 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件 ...

  7. JMeter之Http协议接口性能测试--基础

    一.不同角色眼中的接口 1.1,开发人员眼中的接口    1.2,测试人员眼中的接口 二.Http协议基本介绍 2.1,常见的接口协议 1.:2. :3. :4.:5.: 6. 2.2,Http协议栈 ...

  8. java、python及jmeter操作redis(接口自动化必备)

    redis是nosql数据库之一,其存储结构简单,提供高性能服务,所以在架构中是很常用的. 在做接口自动化测试过程中,有时也会涉及到redis,比如:发送短信验证码,我们做接口自动化测试,如何模拟发送 ...

  9. 【技术博客】 利用Postman和Jmeter进行接口性能测试

    利用Postman和Jmeter进行接口性能测试 作者:ZBW 版本:v1.1 在Phylab的开发过程中,对于生成报告接口的性能考量十分重要.原有的Latex接口虽然生成的报告美观,但编译Latex ...

  10. jmeter实现服务器端后台接口性能测试

    实现目的 在进行服务器端后台接口性能测试时,需要连接到Linux服务器端,然后通过命令调用socket接口,这个过程就需要用到jmeter的SSH Command取样器实现了. 脚本实现 设置CSV ...

随机推荐

  1. new Date().getTime()和System.currentTimeMillis()对比

    我在工作中,看项目组的代码时,在代码中会发现一个有趣的现象,有使用new Date().getTime()来获取时间戳的, 也有使用System.currentTimeMillis()来获取时间戳的, ...

  2. 【Jest】笔记一:环境配置

    一.开发环境 Mac node.js:v9.9.0  下载链接:http://nodejs.cn/download/ VScode 下载链接:https://code.visualstudio.com ...

  3. js原型链的深度理解!

    一. 普通对象与函数对象 JavaScript 中,万物皆对象!但对象也是有区别的.分为普通对象和函数对象,Object .Function 是 JS 自带的函数对象.下面举例说明 var o1 = ...

  4. 单线拨号上网时RouterOS内网端口映射的配置

    很多时候routeros 是通过单线拨号上网,假设PPP接口名为pppoe-out1 若需要添加内网ip=18.16.1.92主机的3389端口映射 ,可以在命令行键入: ip firewall na ...

  5. 请用java解析下xml

    Java   XML简介 XML(EXtensible Markup Language)  可扩展标记语言 可以说是一个文本文件 作用数交互  配置应用程序 Xml解析技术 三种方式 Dom 文档数据 ...

  6. C#利用首尾時間計算中間時間差

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. Java高级特性 第14节 解析XML文档(2) - SAX 技术

    一.SAX解析XML文档 SAX的全称是Simple APIs for XML,也即XML简单应用程序接口.与DOM不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式.当使用S ...

  8. 用 EPWA 写一个 图片播放器 PicturePlayer

    用 EPWA 写一个 图片播放器  PicturePlayer  . 有关 EPWA,见 <我发起并创立了一个 EPWA 的 开源项目>   https://www.cnblogs.com ...

  9. js获取时间戳的三种方法

    1.Date.Now() 2.new Date().getTime() 3.Date.parse(new Date()) 其中1和2是相同含义 chrome控制台键入:Date.now() ===ne ...

  10. MySQL常用命令(数据库,表相关的命令)

    数据库相关命令 显示数据库列表 mysql> SHOW  DATABASES; 创建数据库 mysql> CREATE  DATABASE  库名; 如下,创建一个名为crashcours ...