性能测试基础---jmeter webservice接口测试
·webservice接口测试实现。·SOA:面向服务的体系架构,主要为了应对大型系统的异构需求。典型的实现方式:webservice·微服务:为了对SOA这样的重服务架构进行解耦而存在的。一个or几个服务能够提供独立的功能,服务之间相互不影响,能够独立的发布和删除(管理)。典型的实现方式:RestFul
对于接口测试来说(功能),我们不需要关注接口的后台架构实现,只需要知道接口的通信协议即可。
·接口文档的要求:·接口的名称·接口的功能·协议及方法:·URI:通常不包含服务器地址和端口·入参:参数名称、值的类型·入参的示例。·返回:字段说明。·返回的示例。
·webservice接口实战:webservice接口:基于XML+SOAP+HTTP协议来实现的。服务的描述是通过XML格式的文档来实现。通信采用的数据报文格式是:SOAP(简单对象共享协议)HTTP:底层还是采用的http协议。实现方式有三种:webservice call:基于服务直接访问的。soap request:从soap层进行模拟。http request:直接从最底层进行模拟。·接口服务地址:http://192.168.2.212:8080/ws/services/HelloServices?wsdl一般来说,wsdl的地址,都需要借助相关的工具进行解析操作。常见的有SoapUI、Jmeter、LR等。
PS:在新版本的Jmeter中,对于webservice接口的支持只剩下了最后一种--http request。
http和soap request方式的实现,一定要有信息头:soapaction。
·Jmeter对于数据库的测试和使用。·哪些情况下需要在jmeter中去连接使用数据库?·查询校验。·查询做参数化·构造数据。·初始化数据·还原数据
·在Jmeter中,对于数据库的操作,都是基于JDBC方式来实现的。Jmeter提供了四个组件:·JDBC Connection Configuration:配置组件,必须,可以添加多个。·JDBC Request:JDBC请求组件,一般用于构造数据,执行性能测试等。·JDBC PreProcessor:JDBC前置组件,一般用于构造数据,初始化测试环境、参数化等。·JDBC PostProcessor:JDBC后置组件,一般用于检查点、还原数据。PS:JDBC请求、前置和后置处理器,这三个组件的配置项是一样的,区别只是在于执行的时机(作用域)。
·JDBC Connection Configuration配置:·Variable Name:连接变量的名称,即连接的别名,由用户自己指定,在后续的JDBC请求中需要用到,表示通过XX连接实现后续的SQL操作。
·Database URL:数据库的连接URL,不同的数据库的写法不一样。·JDBC Driver class:填写JDBC驱动类的package,JDBC的驱动需要到不同数据库自己的官网下载。下载之后要把jar包放在jmeter的lib目录。·username:数据库的用户名·password:数据库的密码。
·JDBC Request的配置:·Variable Name:该处填写的就是在JDBC Connection Configuration所定义的Variable Name,表示使用对应的JDBC连接配置去连接操作数据库。
·Query Type:请求类型,要求实际执行的SQL语句和请求类型匹配。·Select statement:对应select关键字·Update statement:对应insert、update、delete、create关键字。·Callable statement:对应存储过程的调用。
·Prepared Select statement:对应select关键字,支持批量SQL的写法,即允许SQL中出现问号。·Prepared Update statement:对应insert、update、delete、create关键字。支持批量SQL的写法,即允许SQL中出现问号。
·Parameter values:该属性是用于query Type是Prepared类型时,参数传值的。参数之间使用逗号分隔,参数是按照从左到右的顺序一一传值给SQL语句中的问号所在的位置的。在此种情况下,Jmeter自身的参数化就在该处完成。
·Parameter values:参数类型,和Parameter values对应,要求数量、顺序和·Parameter values保持一致。常用的类型必须大写:VARCHARNUMBERINTEGER等
·Variable names:该属性是用来指定存储查询结果的变量的名称。变量名称可以有多个,使用逗号分隔。变量将按照顺序一一对应结果中的列,即第一个变量接收第一列的数据,第N个变量接收第N列的数据。因此建议变量的数量和查询结果的列数保持一致。值的存储采取的是类似于数组的方式,下标1表示第一个值,下标N表示第N个值。
该属性一般是在前置和后置JDBC处理器中使用。用于前置处理器,则是用来实现参数化。用于后置处理器,则是用来实现检查点。
例如:
1)xml格式
IP:www.webxml.com.cn
端口:80
请求体
<?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://WebXml.com.cn/"> <soapenv:Header/> <soapenv:Body> <web:getSupportCity> <!--Optional:--> <web:byProvinceName>北京</web:byProvinceName> </web:getSupportCity> </soapenv:Body> </soapenv:Envelope>
2)json格式
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:core="http://core.webservice.lbxdrugs.com"> <soapenv:Header/> <soapenv:Body> <core:ws01> <data> { "body":{ "memberId":"1495788", "activityId" : "", "isExchange" : "", "exchangeType" : "" }, "head":{ "bname":"微信", "subname":"抽奖兑积分中奖查看", "btime":"2018-1-2 15:21:31", "bid":"75", "subid":"7502" } } </data> <type>3</type> </core:ws01> </soapenv:Body> </soapenv:Envelope>