【LoadRunner】如何对GIS服务器进行性能测试
1、需求了解
首先确定对gis服务器压测的测试范围,形成具体的测试用例,gis平台都是通过网页端的javascript api调用的gis集群服务接口,通过LR录制上一步中的业务操作,找到javascript向gis服务器请求的地址做参数化后形成压测脚本,实现对GIS服务器的压力测试。
2、测试范围
ARCGIS性能测试主要范围有三个:ARCGIS生成基础地图服务、空间查询服务、为地图提供数据的服务接口的性能,本文主要对ARCGIS生成基础地图服务性能测试进行介绍。
3、测试工具
LoadRunner 11
4、测试步骤
4.1脚本准备
利用loadrunner对地图查询业务进行录制,录制脚本如下:
Action()
{
lr_start_transaction("查询"); web_custom_request("0_4",
"URL=http://xxx.xx.x.xxx:xxxx/arcgis/rest/services/xxx/{服务名称}/MapServer/0?f=json",
"Method=GET",
"Resource=0",
"Referer=http://xxx.xx.x.xxx:xxxx/xxxgis/aigis/map.html?module=%E4%B8%9A%E5%8A%A1%E5%88%86%E5%B8%83",
"Mode=HTML",
"EncType=application/x-www-form-urlencoded",
EXTRARES,
"Url=0?f=json", "Referer=http://xxx.xx.x.xxx:xxxx/xxxgis/aigis/map.html?module=%E4%B8%9A%E5%8A%A1%E5%88%86%E5%B8%83", ENDITEM,
LAST); web_custom_request("query_15",
"URL=http://xxx.xx.x.xxx:xxxx/arcgis/rest/services/xxx/{服务名称}/MapServer/0/query?f=json&where={行政代码}&returnGeometry=true&spatialRel=esriSpatialRelIntersects&maxAllowableOffset=9783&geometry=%7B%22xmin%22%3A5009377.08569099%2C%22ymin%22%3A5009377.085700966%2C%22xmax%22%3A10018754.171386972%2C%22ymax%22%3A10018754.171396947%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%7D%7D&geometryType=esriGeometryEnvelope&inSR=102100&outFields=CODE%2CNAME%2CFID&"
"outSR=102100",
"Method=GET",
"Resource=0",
"Referer=http://xxx.xx.x.xxx:xxxx/xxxgis/aigis/map.html?module=%E4%B8%9A%E5%8A%A1%E5%88%86%E5%B8%83",
"Mode=HTML",
"EncType=application/x-www-form-urlencoded",
LAST); web_custom_request("query_16",
"URL=http://xxx.xx.x.xxx:xxxx/arcgis/rest/services/xxx/{服务名称}/MapServer/0/query?f=json&where={行政代码}&returnGeometry=true&spatialRel=esriSpatialRelIntersects&maxAllowableOffset=9783&geometry=%7B%22xmin%22%3A10018754.171386972%2C%22ymin%22%3A5009377.085700966%2C%22xmax%22%3A15028131.257082947%2C%22ymax%22%3A10018754.171396947%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%7D%7D&geometryType=esriGeometryEnvelope&inSR=102100&outFields="
"CODE%2CNAME%2CFID&outSR=102100",
"Method=GET",
"Resource=0",
"Referer=http://xxx.xx.x.xxx:xxxx/xxxgis/aigis/map.html?module=%E4%B8%9A%E5%8A%A1%E5%88%86%E5%B8%83",
"Mode=HTML",
"EncType=application/x-www-form-urlencoded",
LAST); web_custom_request("query_17",
"URL=http://xxx.xx.x.xxx:xxxx/arcgis/rest/services/xxx/{服务名称}/MapServer/0/query?f=json&where={行政代码}&returnGeometry=true&spatialRel=esriSpatialRelIntersects&maxAllowableOffset=9783&geometry=%7B%22xmin%22%3A15028131.257082947%2C%22ymin%22%3A5009377.085700966%2C%22xmax%22%3A20037508.34277893%2C%22ymax%22%3A10018754.171396947%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%7D%7D&geometryType=esriGeometryEnvelope&inSR=102100&outFields=CODE%2CNAME%2CFID"
"&outSR=102100",
"Method=GET",
"Resource=0",
"Referer=http://xxx.xx.x.xxx:xxxx/xxxgis/aigis/map.html?module=%E4%B8%9A%E5%8A%A1%E5%88%86%E5%B8%83",
"Mode=HTML",
"EncType=application/x-www-form-urlencoded",
LAST); web_custom_request("query_18",
"URL=http://xxx.xx.x.xxx:xxxx/arcgis/rest/services/xxx/{服务名称}/MapServer/0/query?f=json&where={行政代码}&returnGeometry=true&spatialRel=esriSpatialRelIntersects&maxAllowableOffset=9783&geometry=%7B%22xmin%22%3A5009377.08569099%2C%22ymin%22%3A0.000004988163709640503%2C%22xmax%22%3A10018754.171386972%2C%22ymax%22%3A5009377.085700966%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%7D%7D&geometryType=esriGeometryEnvelope&inSR=102100&outFields="
"CODE%2CNAME%2CFID&outSR=102100",
"Method=GET",
"Resource=0",
"Referer=http://xxx.xx.x.xxx:xxxx/xxxgis/aigis/map.html?module=%E4%B8%9A%E5%8A%A1%E5%88%86%E5%B8%83",
"Mode=HTML",
"EncType=application/x-www-form-urlencoded",
LAST); web_custom_request("query_19",
"URL=http://xxx.xx.x.xxx:xxxx/arcgis/rest/services/xxx/{服务名称}/MapServer/0/query?f=json&where={行政代码}&returnGeometry=true&spatialRel=esriSpatialRelIntersects&maxAllowableOffset=9783&geometry=%7B%22xmin%22%3A10018754.171386972%2C%22ymin%22%3A0.000004988163709640503%2C%22xmax%22%3A15028131.257082947%2C%22ymax%22%3A5009377.085700966%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%7D%7D&geometryType=esriGeometryEnvelope&inSR=102100&outFields="
"CODE%2CNAME%2CFID&outSR=102100",
"Method=GET",
"Resource=0",
"Referer=http://xxx.xx.x.xxx:xxxx/xxxgis/aigis/map.html?module=%E4%B8%9A%E5%8A%A1%E5%88%86%E5%B8%83",
"Mode=HTML",
"EncType=application/x-www-form-urlencoded",
LAST); web_reg_save_param("StatusCode","LB=\"alias\":\"","RB=\",\"length\"",LAST);
web_custom_request("query_20",
"URL=http://xxx.xx.x.xxx:xxxx/arcgis/rest/services/xxx/{服务名称}/MapServer/0/query?f=json&where={行政代码}&returnGeometry=true&spatialRel=esriSpatialRelIntersects&outFields=CODE%2CNAME%2CFID&outSR=102100",
"Method=GET",
"Resource=0",
"Referer=http://xxx.xx.x.xxx:xxxx/xxxgis/aigis/map.html?module=%E4%B8%9A%E5%8A%A1%E5%88%86%E5%B8%83",
"Mode=HTML",
"EncType=application/x-www-form-urlencoded",
LAST); web_custom_request("query_21",
"URL=http://xxx.xx.x.xxx:xxxx/arcgis/rest/services/xxx/{服务名称}/MapServer/0/query?f=json&where={行政代码}&returnGeometry=true&spatialRel=esriSpatialRelIntersects&maxAllowableOffset=9783&geometry=%7B%22xmin%22%3A15028131.257082947%2C%22ymin%22%3A0.000004988163709640503%2C%22xmax%22%3A20037508.34277893%2C%22ymax%22%3A5009377.085700966%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%7D%7D&geometryType=esriGeometryEnvelope&inSR=102100&outFields="
"CODE%2CNAME%2CFID&outSR=102100",
"Method=GET",
"Resource=0",
"Referer=http://xxx.xx.x.xxx:xxxx/xxxgis/aigis/map.html?module=%E4%B8%9A%E5%8A%A1%E5%88%86%E5%B8%83",
"Mode=HTML",
"EncType=application/x-www-form-urlencoded",
LAST); // lr_end_transaction("查询",LR_AUTO);
if (strstr(lr_eval_string("{StatusCode}"),"CODE")!=NULL) {
lr_end_transaction("查询",LR_PASS);
}
else{
lr_end_transaction("查询",LR_FAIL);
lr_error_message("行政区划名称与代码:%s",lr_eval_string("{服务名称}""__""{行政代码}"));
}
return 0;
}
其中主要参数为服务名称、行政代码和geometry,服务名称为系统中的行政区划服务,包括AdminProvince(省级)、AdminDistrict(市级)与AdminCounty(县级)等;where=CODE+like+%{查询地区行政区划码}%25%27(根据具体项目决定);geometry代表空间查询使用的几何要素。
4.2请求范例
请求地址: |
http://xxx.xx.x.xxx:xxxx/arcgis/rest/services/xxx/InsuranceCompany/MapServer/0/query |
请求参数: |
f: 返回内容格式(html/json) where: 查询条件语句 returnGeometry: 是否返回几何要素 spatialRel: 空间查询关系 maxAllowableOffset: 简化返回的几何要素时,允许的最大偏移量 geometry: 空间查询使用的几何要素 geometryType: 空间查询使用的几何要素类型 inSR: 输入几何要素的坐标系 outFields: 需要返回的字段 outSR: 返回数据的坐标系 |
请求示例: |
http://xxx.xx.x.xxx:xxxx/arcgis/rest/services/xxx/InsuranceCompany/MapServer/0/query?f=json&where=&returnGeometry=true&spatialRel=esriSpatialRelIntersects&geometry=%7B%22xmin%22%3A11778047.838733034%2C%22ymin%22%3A4605433.760798998%2C%22xmax%22%3A12815145.43850603%2C%22ymax%22%3A5446852.568161995%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%7D%7D&geometryType=esriGeometryEnvelope&inSR=102100&outFields=*&outSR=102100 |
返回内容: |
Json数据 |
4.3脚本完善
对地图查询脚本进行参数化、数据准备以及添加判断等。
以上为,GIS项目测试经验总结。
【LoadRunner】如何对GIS服务器进行性能测试的更多相关文章
- loadrunner测试TCP协议服务器性能
loadrunner测试TCP协议服务器性能 . 性能loadrunner测试c 最近对服务器的性能感兴趣,于是开始研究了一阵子loadrunner如何做采用TCP协议交互的服务器的性能测试,对loa ...
- GIS服务器需求分析
一. 需求概要 1 边界 核心职责 接收并存储外部各方系统GPS数据 GPS数据实时分发, 轨迹检索 2 流程 GIS客户端向GIS服务器订购 GIS客户端向GIS服务器订购号码(仅有号码这一项业 ...
- 在局域网中搭建自己的gis服务器
在局域网中搭建自己的gis服务器 需求 在客户的B/S应用系统中使用电子地图.该系统只可运行于内部网中. 分析 由于系统中的电子地图只能运行于局域网中所以不能采用googl ...
- 【JMeter4.0学习(二)】之搭建openLDAP在windows8.1上的安装配置以及JMeter对LDAP服务器的性能测试脚本开发
目录: 概述 安装测试环境 安装过程 配置启动 配置搭建OpenLDAP 给数据库添加数据 测试查询刚刚插入的数据 客户端介绍 JMeter建立一个扩展LDAP服务器的性能测试脚本开发 附:LDAP学 ...
- loadrunner实战篇 - 客户关系管理系统性能测试
系统介绍 图1(客户关系管理系统模块关系图) 需求分析 一.性能指标 性能指标分 ...
- LoadRunner 学习笔记(1)性能测试常见术语
并发用户数据:与服务器进行交互的在线用户数量 请求响应时间:从Client端发出请求到得到响应的整个时间 一般包括网络响应时间 + server的响应时间 事务请求响应时间:完成这个事务所用的时间 这 ...
- Loadrunner Http接口Get/Post方法性能测试脚本解析
最近使用LoadRunner 11进行了一次完整的Http WEB接口性能测试,下面介绍下Http接口Get/Post方法性能测试脚本通用编写方法. 1. Http接口性能测试基本流程 首先定义了一个 ...
- sysbench——服务器cpu性能测试
一.前言 最近在工作中需要测试cpu占用率.内存占用率,我想要寻找一种合适的能提高cpu占用率的工具及方法.先尝试了使用 echo "scale=5000; 4*a(1)" | b ...
- GIS服务器开发资源文档
JAVA开发gis后台服务可以参照此文学习,持续跟新... 几何基础类库 代表: JTS(Java), GEOS(C++), Shapely(Python) JTS封装了点.线等等对象 数据源实现 ...
随机推荐
- uLua学习之调用Lua函数(五)
前言 在我开始这个系列的第一篇文章中,我就提到了Lua脚本用来实现宿主脚本的配置性和扩展性.上节说到的调用外部Lua脚本就对应了它的两大特性之一的配置性,那么另一大特性如何来体现呢?这就要说我们今天的 ...
- System Center Configuration Manager 2016 域准备篇(Part3)
步骤2.将CM16加入域 注意:在ConfigMgr服务器(CM16 )上以本地管理员身份执行以下操作 手动加入域,请登录CM16.启动Windows文件资源管理器 右键单击This-PC,然后选择 ...
- linux服务器免密钥登录
方法一:通过下载服务器私钥方式 服务器端执行: ssh-keygen -t rsa -b 4096 cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys ...
- java Vamei快速教程20 GUI
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! GUI(Graphical User Interface)提供了图形化的界面,允许 ...
- 使用JDBC操作SAP云平台上的HANA数据库
本文假设您对JDBC(Java Database Connectivity)有最基本的了解.您也可以将其同ADBC(ABAP Database Connectivity)做对比,细节请参考我的博客AD ...
- iptables 防火墙详解
一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防 ...
- 第五章 javascript编程可养成的好习惯
用户点击某个链接时弹出一个新窗口javascript使用window对象的open()方法来创建新的浏览器窗口,这个方法有三个参数:window.open(url,name,features)url: ...
- Microsoft .Net framework 4.0出现 安装不成功,错误代码0x80240037 的解决方法
,安装Microsoft .Net framework 时出现 解决方法:用QQ管家 之后 以上就解决了
- 【Django】使用list对单个或者多个字段求values值
使用list对values进行求值: 单个字段的输出结果: price_info=list(Book.objects.filter(auth_id='Yu').values('book_price') ...
- linux配置邮箱服务
配置邮箱服务Linux常见的邮箱客户端是mail或mutt:服务端有sendmail服务(centos 5).postfix服务(centos 6).这里我们不使用本地的邮件服务,而是使用本地的邮件客 ...