以前常用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. ubuntu16.04 安装java

    1.从官网下载 jdk-8u191-linux-x64.tar.gz(https://www.oracle.com/technetwork/java/javase/downloads/jdk8-dow ...

  2. mysql的基础用法,水一下

    #和上一篇是一起的,上一篇就是为这个做insert <blockquote>/*思考题*/ create database spj; use spj;create table s( sno ...

  3. 游戏编程模式 Game Programming Patterns (Robert Nystrom 著)

    第1篇 概述 第1章 架构,性能和游戏 (已看) 第2篇 再探设计模式 第2章 命令模式 (已看) 第3章 享元模式 (已看) 第4章 观察者模式 (已看) 第5章 原型模式 (已看) 第6章 单例模 ...

  4. intval — 获取变量的整数值

    echo intval ( '-42' ); // -42

  5. MySQL报错ERROR 1558 (HY000): Column count of mysql.user is wrong.

    MySQL报错ERROR 1558 (HY000): Column count of mysql.user is wrong. 1.今天在使用MySQL创建数据库时出现如下报错: mysql> ...

  6. CentOS7.5 安装MySQL8 tar

    1.查看是否安装mariadb 执行命令: [root@mysql ~]# rpm -qa | grep mariadb 显示: mariadb-libs-5.5.56-2.el7.x86_64 2. ...

  7. 调整Eclipse中代码字体字号

    Window-->preferences-->general-->appearence-->Colors and fonts中的Basic节点选text font,Edit一下

  8. CentOS7.4下部署hadoop3.1.1

    CentOS7.4下部署hadoop3.1.1 契机 由于工作原因要部署hadoop的集群,习惯使用最新的稳定版本2018年的时候由于时间紧破部署了2.7.2版本,最新由于又要部署有研究了一下3.x的 ...

  9. apache 2.2 和 2.4 访问控制区别 (require 替代 deny)

    apache 2.4权限配置 Order命令已从Apache 2.4中删除 注意:使用require指令时,需要在指令外添加<RequireAll></RequireAll>标 ...

  10. vim替换的两种方式

    最近操作一个超过30MB的一个文本文件,常用的编辑器打开就死.最后使用Vim,一路非常顺畅.不愧是久经历史考验的编辑器. 如何在Vim中将空格更换为\t 这个使用\s功能.具体命令为:\s\ \/t/ ...