- 浏览: 22059 次
- 性别:
- 来自: 南京
最新评论
今天简单的和开发沟通
报文分为xml和json
xml有我平时录制的时候已一个个参数去提交的a,也有以报文体整个去提交的b。
json以打括号去提交的c。
a.xml以参数提交
b.xml以报文体提交
开发提供报文
loadrunner脚本
c.以表单提交,使用用json格式
JSON简单说就是javascript中的对象和数组。
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它的规则非常简单并且是有趣的:
1) 并列的数据之间用逗号(“,”)分隔。
2) 映射用冒号(“:”)表示。
3) 并列数据的集合(数组)用方括号("[]")表示。
4) 映射的集合(对象)用大括号(“{}”)表示。
按照这个规则可以作以下理解:
1.数组用“[]”创建,对象用“{}”创建,并且使用Json基本都是用[]或者{}创建的数组或对象,否则一个普通的字符串是没有意义的;
2.无论是数组还是对象,之间的元素都用“,”隔开;
3.对象内部,(属性的)名称和值用“:”隔开,并且必须要用“:”隔开,不可单独存在属性名或者值;
4.对象和数组可以互相嵌套,即数组中的一个元素可以是一个对象也可以是一个数组,同理对象中的一个属性的值可以是一个对象也可以是一个数组。
举例
了解了json格式,下面来说表单提交:
表单提交需要放在ITEMDATA内
脚本如下:
下面在补充下:
开始将data放在url地址中一起提交,开发在日志中只能接收到data的第一个参数-encryptStr:{"authInfo":{"orderInfo":"account_no=0000000001114011378
所以需要放在itemdata中通过表单提交。
使用get发现也不ok,因为我们传的字段里面有特殊字符 如果用get需要url encode 不然就传不过来,但是用post 系统会自动编码,所以选择post。
if ("0000".equals(resMap.get("responseCode").toString())) {
if( response.toString().contains("<RspCode>000000</>") ){
报文分为xml和json
xml有我平时录制的时候已一个个参数去提交的a,也有以报文体整个去提交的b。
json以打括号去提交的c。
a.xml以参数提交
b.xml以报文体提交
开发提供报文
<MbfService> <input1> <MbfHeader> <ServiceCode>CloudProviderCardOrderMgmt</ServiceCode> <Operation>syncCPOrderSummaryInfo</Operation> <AppCode>OMS</AppCode> <UId>d24de41c71e744a085f682123f8972999638ddc0e74d4cc5</UId> <AuthId>OMS;NULL</AuthId> </MbfHeader> <MbfBody> <salesOrderItems> <salesOrderMain> <opType>A</opType> <orderId>123456000001</orderId> <omsCreateTime>20150509144225</omsCreateTime> <operatMum>13091704</operatMum> <orderItemId>12345600000101</orderItemId> <preOrderItemId/> <distChannel>10</distChannel> <saleOrg>1001</saleOrg> <storeCode>7610</storeCode> <cmmdtyCode>509990080</cmmdtyCode> <price>100.00</price> <saleQty>1.000</saleQty> <totalAmount>100.00</totalAmount> <customerName>测试用户</customerName> <memberCardNo>025051600001</memberCardNo> </salesOrderMain> <extendedInformation> <activeType></activeType> <arrearageType></arrearageType> <rebateType></rebateType> <documenNum></documenNum> <documenType></documenType> <soaNum/> <remark/> </extendedInformation> <salesOrderPayItem> <payCode>1001</payCode> <payAmount>100.00</payAmount> <payTime>20150509144225</payTime> </salesOrderPayItem> </salesOrderItems> </MbfBody> </input1> </MbfService>
loadrunner脚本
int respCode0; lr_start_transaction("OMS Order Information Synchronization"); web_reg_save_param("respCode", "LB=<respCode>", "RB=</respCode>", "NotFound=ERROR", "Search=All", LAST); web_custom_request("esbHttpService", "URL=http://*.*.*.*:3/ManagementFrontEndWeb/esbHttpService", "Method=POST", "Mode=HTTP", "EncType=text/xml; charset=GB2312", "Body=<?xml version=\"1.0\" encoding=\"utf-8\"?>" "<MbfService>" "<input1>" "<MbfHeader>" "<ServiceCode>CloudProviderCardOrderMgmt</ServiceCode>" "<Operation>syncCPOrderSummaryInfo</Operation>" "<AppCode>OMS</AppCode>" "<UId>d24de41c71e744a085f682123f8972999638ddc0e74d4cc5</UId>" "<AuthId>OMS;NULL</AuthId>" "</MbfHeader>" "<MbfBody>" "<salesOrderItems>" "<salesOrderMain>" "<opType>A</opType>" "<orderId>123456000001</orderId>" "<omsCreateTime>20150509144225</omsCreateTime>" "<operatMum>13091704</operatMum>" "<orderItemId>12345600000101</orderItemId>" "<preOrderItemId/>" "<distChannel>10</distChannel>" "<saleOrg>1001</saleOrg>" "<storeCode>7610</storeCode>" "<cmmdtyCode>509990080</cmmdtyCode>" "<price>100.00</price>" "<saleQty>1.000</saleQty>" "<totalAmount>100.00</totalAmount>" "<customerName>测试用户</customerName>" "<memberCardNo>025051600001</memberCardNo>" "</salesOrderMain>" "<extendedInformation>" "<activeType></activeType>" "<arrearageType></arrearageType>" "<rebateType></rebateType>" "<documenNum></documenNum>" "<documenType></documenType>" "<soaNum/>" "<remark/>" "</extendedInformation>" "<salesOrderPayItem>" "<payCode>1001</payCode>" "<payAmount>100.00</payAmount>" "<payTime>20150509144225</payTime>" [color=red]"[/color]</salesOrderPayItem>" [color=red]"[/color]</salesOrderItems>" [color=red]"[/color]</MbfBody>" [color=red]"[/color]</input1>" [color=red]"[/color]</MbfService>", LAST); respCode0=strcmp(lr_eval_string("respCode"),lr_eval_string("00")); if(respCode0==0) { lr_output_message("PASS-----respCode:%s",lr_eval_string("{respCode}")); lr_output_message("PASS-----respCode0:%s",lr_eval_string("respCode0")); lr_end_transaction("OMS Order Information Synchronization",LR_PASS); } else { lr_output_message("FAIL----respCode:%s",lr_eval_string("{respCode}")); lr_end_transaction("OMS Order Information Synchronization",LR_FAIL); }; return 0;
c.以表单提交,使用用json格式
JSON简单说就是javascript中的对象和数组。
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它的规则非常简单并且是有趣的:
1) 并列的数据之间用逗号(“,”)分隔。
2) 映射用冒号(“:”)表示。
3) 并列数据的集合(数组)用方括号("[]")表示。
4) 映射的集合(对象)用大括号(“{}”)表示。
按照这个规则可以作以下理解:
1.数组用“[]”创建,对象用“{}”创建,并且使用Json基本都是用[]或者{}创建的数组或对象,否则一个普通的字符串是没有意义的;
2.无论是数组还是对象,之间的元素都用“,”隔开;
3.对象内部,(属性的)名称和值用“:”隔开,并且必须要用“:”隔开,不可单独存在属性名或者值;
4.对象和数组可以互相嵌套,即数组中的一个元素可以是一个对象也可以是一个数组,同理对象中的一个属性的值可以是一个对象也可以是一个数组。
举例
data={"authInfo":{"orderInfo":"account_no=0000000001114011378&total_fee=100","orderType":"01"},"deviceInfo":{"deviceId":"865179020041956","deviceName":"TCLP728M","deviceSysVersion":"19","serialNumber":"SSOBFACQS4GUSSBE","wlanMacAddress":"d8:e5:6d:b6:97:a1"},"platformType":"02","platformInfo":{"appId":"120001","sdkVersion":"2"},"clientKey":"k78Rn23s"}"
了解了json格式,下面来说表单提交:
http://sdkspre.*.com/sdkservice/showCashier/showCashier.do?data={"authInfo":{"orderInfo":"account_no=0000000001114011378&total_fee=100","orderType":"01"},"deviceInfo":{"deviceId":"865179020041956","deviceName":"TCLP728M","deviceSysVersion":"19","serialNumber":"SSOBFACQS4GUSSBE","wlanMacAddress":"d8:e5:6d:b6:97:a1"},"platformType":"02","platformInfo":{"appId":"120001","sdkVersion":"2"},"clientKey":"k78Rn23s"}" [MsgId: MMSG-26548]
表单提交需要放在ITEMDATA内
脚本如下:
Action() { lr_start_transaction("show"); web_reg_find("Fail=NotFound", "Search=All", "Text=\"success\":true,", LAST); web_submit_data("showCashier.do", "Action=http://sdkspre.*.com/sdkservice/showCashier/showCashier.do", "Method=POST", "TargetFrame=", "RecContentType=text/html", "Referer=", "Snapshot=t3.inf", "Mode=HTML", ITEMDATA, "Name=data", "Value={\"authInfo\":{\"orderInfo\":\"account_no=0000000001114011378&total_fee=100\",\"orderType\":\"01\"},\"deviceInfo\":{\"deviceId\":\"865179020041956\",\"deviceName\":\"TCLP728M\",\"deviceSysVersion\":\"19\",\"serialNumber\":\"SSOBFACQS4GUSSBE\",\"wlanMacAddress\":\"d8:e5:6d:b6:97:a1\"},\"platformType\":\"02\",\"platformInfo\":{\"appId\":\"120001\",\"sdkVersion\":\"2\"},\"clientKey\":\"k78Rn23s\"}", ENDITEM, LAST); lr_end_transaction("show", LR_AUTO); return 0; }
下面在补充下:
开始将data放在url地址中一起提交,开发在日志中只能接收到data的第一个参数-encryptStr:{"authInfo":{"orderInfo":"account_no=0000000001114011378
所以需要放在itemdata中通过表单提交。
使用get发现也不ok,因为我们传的字段里面有特殊字符 如果用get需要url encode 不然就传不过来,但是用post 系统会自动编码,所以选择post。
if ("0000".equals(resMap.get("responseCode").toString())) {
if( response.toString().contains("<RspCode>000000</>") ){
发表评论
-
netstat当我们系统有问题的时候,我们不要急于去调查我们代码,这个毫无意义。我们首要需要看的是操作系统的报告。
2015-11-11 09:43 0http://blog.aliyun.com/896?spm= ... -
Code - 60990 Error: Two Way Communication Error: Function two_way_comm_post_mess
2015-09-14 10:28 693参考:http://www.blogjava.net/qile ... -
压力机疲劳
2015-09-10 16:31 6365个用户,使用一台压力机 5个用户,使用五台压力机 ... -
think_time
2015-09-09 15:56 0loadrunnerjava脚本,使用thinktime。 例 ... -
参数化
2015-09-07 18:40 476我这里写下参数类型为file的 Select Next R ... -
loadrunner 日志打印
2015-09-07 11:29 1011参考: http://bbs.51testing.com/th ... -
应用日志对压测的影响
2015-09-06 12:03 6091.AIX小机 压测CPU的sys请求过多 尝试调整日志级 ... -
利用loadrunner代理方式,录制手机客户端脚本
2015-09-02 15:57 2488需要保证手机终端和电脑在同一无线网络内,手机终端可以通过代理将 ... -
sql句柄用尽,在请求数据库全部报错
2015-08-21 14:10 0execute read lnsprdinfo error!s ... -
hessian接口公司逐渐用ssf去替代它了
2015-08-19 17:13 0hession接口脚本 import lrapi.lr; ... -
关联小结
2015-08-19 14:41 651关联:从响应消息中取出我们需要的字段值。 每一次执行时都会变动 ... -
403Forbidden 防火墙拦截
2015-08-18 14:35 11761.小压力跑场景不到1MIN,请求消息都返回失败。 报抓关 ... -
数据库分表性能测试
2015-08-17 17:11 772业务背景: 随着业务发展,单表的数据量已达实际应用推荐的极限, ... -
运行时报错:network buffer size带宽问题
2015-08-17 10:20 1022运行时报错: Action.c(8): Error -2660 ... -
杂待分类1
2015-08-10 18:11 01、进程与线程 进程是程序执行时的一个实例,即它是程序已经执行 ... -
同一action,响应时间不一致(回放>场景压测)
2015-08-07 14:24 952同一脚本,响应时间不一样(回放VS场景压测) 回放过程中事务 ... -
回放慢(仅web协议,java正常)
2015-08-06 11:39 532我用loadrunner11.0录制B/S模式的 ... -
响应时间(max & min)
2015-08-04 20:46 1050MAX Response time java脚本, ... -
压测分析1
2015-08-04 20:24 0增加用户无法增加TPS,响应时间较长,系统资源消耗较少。 增加 ... -
This Vuser already started a transaction with the same name, and has not yet
2015-08-04 19:06 1119压测执行报错:This Vuser already start ...
相关推荐
LoadRunner提供了多种检查点类型,如Web_reg_find()或Web_xml_check(),用于检查文本、XML或JSON响应。 4. **关联**:如果接口返回的数据会用作后续请求的输入,需要进行关联操作。LoadRunner提供了强大的关联机制...
- 如果服务端期望特定格式的数据,如JSON或XML,我们需要确保发送的数据符合该格式,并正确解析接收到的响应。 5. **性能测试考虑** - 当使用Socket进行性能测试时,要考虑并发用户数量对服务器的影响,以及网络...
web_custom_request允许创建自定义的HTTP请求,包括非标准的HTTP方法(如POST、PUT等)和自定义消息体,例如XML或JSON格式的数据。这在处理非标准的Web服务交互或API测试时非常有用。 除了以上提到的函数,...
- **请求报文格式**:定义请求的具体结构,如JSON或XML等。 - **应答报文的参数接口说明**:描述服务器返回的响应内容及其结构。 ##### 使用Loadrunner进行接口测试的方法 Loadrunner提供了多种API方法用于发送...
1. 测试用例:定义了测试的目标、预期结果和执行步骤,可能包含在XML、JSON或自定义格式的文件中。 2. 测试数据:用于验证软件功能的数据集,可能存储在CSV、Excel或数据库文件中。 3. 配置文件:定义了测试环境的...
REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,可以使用XML或者JSON格式传输数据。RESTful API设计的核心原则是资源导向,通过URI来标识资源,通过HTTP动词来操作...
2. **REST测试**:支持所有HTTP方法,包括GET、POST、PUT等,提供JSON和XML数据格式的支持。 3. **安全测试**:内置WS-Security测试,可以检测服务的安全漏洞,如XSS、SQL注入等。 4. **性能测试**:通过Load/...
- **支持多种协议和格式**:Axis2不仅支持SOAP,还支持RESTful风格的服务,同时能处理XML、JSON等多种数据格式。 - **代码生成工具**:Axis2提供WSDL2Java和Java2WSDL工具,方便开发者从WSDL生成Java代码或反之...
- **Web服务测试**:测试XML和JSON基础架构的SOAP和REST Web服务。 - **漏洞报告**:提供详细的漏洞报告和修复建议。 #### 九、结论 每种自动化测试工具都有其独特的特性和应用场景。例如,Selenium非常适合Web...
- REST(Representational State Transfer)是一种轻量级的Web服务架构风格,通常使用JSON或XML作为数据格式。测试RESTful服务时,关注URL、HTTP方法(GET、POST、PUT、DELETE等)和请求/响应体。 2. **WSDL(Web ...
这包括验证JSON或XML数据格式的正确性、API版本管理以及错误处理机制。 5. 响应时间分析:通过监控请求和响应的时间,找出性能瓶颈,优化代码或调整服务器配置以提高响应速度。 6. 回归测试:每当添加新功能或修改...
1. **Web服务协议**:理解SOAP和REST的区别,知道如何编写和解析XML或JSON格式的请求和响应。 2. **HTTP协议**:作为Web服务的基础,理解HTTP方法(GET、POST、PUT、DELETE等)和状态码的含义。 3. **测试工具**:...
- **LoadRunner**:业界标准的负载测试工具,提供强大的脚本编写功能和分析能力。 **测试方法:** - **脚本调试**:确保测试脚本能准确模拟用户行为。 - **数据参数化**: - 使用随机函数替换固定值。 - 从数据库...
- **JSON或XML文件**:可能包含彩票数据,如历史开奖记录、赔率信息等。 - **README或文档**:提供关于如何部署和运行测试站点的说明。 测试站点的构建和测试涉及以下知识点: 1. **Web开发框架**:如Spring Boot...
学习接口测试,你需要了解HTTP方法(GET、POST、PUT、DELETE等),理解JSON或XML数据格式,以及使用Postman、JMeter、SoapUI等工具进行测试用例设计和执行。此外,对于安全性测试,如SQL注入和跨站脚本攻击,也需要...
压缩包中的`content.json`、`metadata.json`和`manifest.json`可能是用来存储思维导图的结构和元数据的文件,而`content.xml`可能包含了思维导图的具体内容,`Thumbnails`目录则可能包含导图的预览图片。通过这些...
2. **配置文件**:用于设置应用的行为和环境,比如ini、xml或json文件,这些文件通常包含数据库连接信息、服务器地址等。 3. **库文件**:支持程序运行的动态链接库(dll)或静态库(lib),可能包括第三方库如...
4. **数据格式兼容性**:测试软件处理不同数据格式(如CSV、JSON、XML)的能力。 **兼容测试与配置测试的区别在于**,兼容测试倾向于在干净的操作系统(Clean OS)环境下进行,以排除其他软件或服务的干扰,而配置...
4. **数据格式兼容**:确保软件能够处理不同格式的数据输入和输出,如JSON、XML、CSV等。 **兼容测试的重点**:主要集中在分析软件可能运行的所有环境,并确保这些环境中的软件功能不受影响。这通常需要基于软件的...