以前常用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. cordova本地浮动框提示插件使用:cordova-plugin-x-toast

    1. 添加插件:cordova plugin add cordova-plugin-x-toast 2. 调用方法(浮动提示插件,弹出本地浮动提示框): $cordovaToast.show(mess ...

  2. python中的time模块和datetime模块

    >>> import time>>> time.time()1511330865.656656>>> time.localtime(time.ti ...

  3. 第七节《Git协议与工作协同》

    Git提供了丰富的协议支持,包括:SSH.GIT.HTTPS.FTP.FTPS.RSYNC,这些协议可以分为两类:智能协议和哑协议. <1>智能协议 在会话时使用智能协议,会在会话的两个版 ...

  4. Django学习笔记之视图高级-错误处理

    错误处理 在一些网站开发中.经常会需要捕获一些错误,然后将这些错误返回比较优美的界面,或者是将这个错误的请求做一些日志保存.那么我们本节就来讲讲如何实现. 常见的错误码 404:服务器没有指定的url ...

  5. gitlab 添加 ssh

    git 客户端无法拉取gitlab仓库代码,登陆网页端,查看仓库主页有下面的提示 因此需要添加ssh公钥,才能上传下拉代码 windows平台: 首先需要安装git了. 在存放代码的目录中,右键选择 ...

  6. 关于让simulink中display组件显示二进制的方法

    关于让simulink中display组件显示二进制的方法 1.首先需要配置gateway out模块,勾选propagate data type to output 2.配置display模块 fo ...

  7. C#模拟Https请求时出现 基础连接已经关闭 未能为 SSLTLS 安全通道建立信任关系

    //解决方法: //引入命名空间: using System.Security.Cryptography.X509Certificates; using System.Net.Security; // ...

  8. ajax(读取json数据)

    ajax知识点: 语法:$.ajax(路由,请求方式,返回的数据类型,数据参数,回调函数) url: "路由", type:"",默认get请求(get或pos ...

  9. 【Jquery Mobile教程】【问题】- 在页面切换时会闪烁

    用jQuery mobile开发移动应用和web应用的时候,页面切换会闪烁. 感觉,造成这样的原因大概是jQuery mobile在移动浏览器下的性能不佳造成的.jQuery mobile页面切换可以 ...

  10. Java程序国际化学习代码一

    Java程序国际化初识 1.基本思路 Java程序的国际化的思路是将程序中的标签.提示等信息放在资源文件中,程序需要支持哪些国家.语言环境,就对应提供相应的资源文件.资源文件是key-value对,每 ...