服务器端口测试
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XML-RPC
XML-RPC 的全称是 XML Remote Procedure Call,即 XML 远程方法调用。它是一套允许运行在不同操 作系统、不同环境的程序实现基于 Internet 过程调用的规范和一系列的实现。这种远程过程调用使用 http 作 为传输协议,XML 作为传送信息的编码格式。Xml-Rpc 的定义尽可能的保持了简单,但同时能够传送、处 理、返回复杂的数据结构。
JMeter 的作用
1. 能够对 HTTP 和 FTP 服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过 JDBC)。
2. 完全的可移植性和 100% 纯 java。 3. 完全 Swing 和轻量组件支持(预编译的 JAR 使用 javax.swing.*)包。 4. 完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。 5. 精心的 GUI 设计允许快速操作和更精确的计时。 6. 缓存和离线分析/回放测试结果。
相比其他 HTTP 测试工具,JMeter 最主要的特点在于扩展性强。JMeter 能够自动扫描其 lib/ext 子目录 下.jar 文件中的插件,并且将其装载到内存,让用户通过不同的菜单调用。
JMeter 主要组件介绍
1. 测试计划(Test Plan)是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。 2. 线程组(Thread Group)代表一定数量的并发用户,它可以用来模拟并发用户发送请求。 3. 取样器(sampler)定义实际的请求内容,被线程组包含,我们主要用 HTTP 请求。 4. 监听器(Listener) 5. 逻辑控制器(Logic Controller) 6. 断言(Assertions) 7. 配置元件(Config Element) 8. 前置处理器(Pre Processors)和后置处理器(Post Processors) 9. 定时器(Timer)
服务器端口测试
实现思路
压力测试原理有两种,一种是连接测试,一种是负载测试 1. 连接测试,就是多线程,不停的请求直到服务器死机或达到预期效果即可; 2. 负载测试,就是一个线程的多步操作,每个线程占用服务器 cpu 内存是否符合节能高效的标准,
如果不是,那就优化吧。 所有测试以额定用户(最大用户)为基础 这里我选用第一种连接测试。
</soapenv:Header> <soapenv:Body>
<req:echo xmlns:req="http://localhost:8080/axis2/services/MyService/"> <req:category>classifieds</req:category>
</req:echo> </soapenv:Body> </soapenv:Envelope>
相关知识
SOAP
简单对象访问协议(SOAP,全写为 Simple Object Access Protocol)是交换数据的一种协议规范,使用 在计算机网络 Web 服务(web service)中,交换带结构信息。SOAP 为了简化网页服务器(Web Server)从 XML 数据库中提取数据时,节省去格式化页面时间,以及不同应用程序之间按照 HTTP 通信协议,遵从 XML 格式执行资料互换,使其抽象于语言实现、平台和硬件。
这里之所以说是简单,是因为它是基于已经广泛使用的两个协议:HTTP 和 XML,所以业界把这种技 术称为“它是第一个没有发明任何新技术的技术”,之所以说是对象,是因为把访问的 Web 服务称为对象, 既然服务是对象,那么服务肯定有相关的属性和调用行为,这些属性和行为是通过 WSDL 来描述的。如果 按“简单的对象访问协议”来理解,相比“简单对象访问协议”要容易些。
Apache JMeter 可以用于对静态的和动态的资源(文件,Servlet,Perl 脚本,java 对象,数据库和查询, FTP 服务器等等)的性能进行测试。它可以用于对服务器,网络 或对象模拟繁重的负载来测试它们的强度 或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/ 对象。
SOAP 包括四个部分:
SOAP 封装:它定义了一个框架 , 该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还 是必须的。
SOAP 编码规则:它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。 SOAP RPC 表示:它定义了用于表示远程过程调用和应答的协定。 SOAP 绑定:定义了一种使用底层传输协议来完成在节点间交换 SOAP 封装的约定。 SOAP 消息基本上是从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求 / 应答的模 式。所有的 SOAP 消息都使用 XML 编码。一条 SOAP 消息就是一个包含有一个必须的 SOAP 的封装包, 一个可选的 SOAP 标头和一个必须的 SOAP 体块的 XML 文档。
XML-RPC 是工作在 Internet 上的远程过程调用协议。一个 XML-RPC 消息就是一个请求体为 xml 的 http-post 请求,被调用的方法在服务器端执行并将执行结果以 xml 格式编码后返回。
区别
web 服务有两个主要的专用术语即 soap 和 xml-rpc。虽然它们都是可以执行 rpc,但是 SOAP 是面向对 象和有状态的,而 xml-rpc 则是面向过程和无状态的。也就是说,soap web 服务可以由几个对象组成,每个 对象都处理该用户的 rpc 调用,允许对象在请求服务之间存储用户的信息。另一方面,xml-rpc 服务处理所 有独立的请求,而且在两次请求之间不存储信息。xml-rpc 应用程序的示例之一就是专用数据库的只读 web 服务接口。由于该应用程序中不需要事务处理,xml-rpc 的局限是互不相关。
SOAP 消息
一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:
1. 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息 2. 可选的 Header 元素,包含头部信息 可选的 SOAP Header 元素可包含有关 SOAP 消息的应用程序专用信息(比如认证、支付等)。如果 Header 元素被提供,则它必须是 Envelope 元素的第一个子元素。 3. 必需的 Body 元素,包含所有的调用和响应信息 必需的 SOAP Body 元素可包含打算传送到消息最终端点的实际 SOAP 消息。 4. 可选的 Fault 元素,提供有关在处理此消息所发生错误的信息 可选的 SOAP Fault 元素用于指示错误消息。 如果已提供了 Fault 元素,则它必须是 Body 元素的子元素。在一条 SOAP 消息中,Fault 元素只能 出现一次。 这里是一些重要的语法规则: 1. SOAP 消息必须用 XML 来编码 2. SOAP 消息必须使用 SOAP Envelope 命名空间 3. SOAP 消息必须使用 SOAP Encoding 命名空间 4. SOAP 消息不能包含 DTD 引用 5. SOAP 消息不能包含 XML 处理指令
测试工具
这里主要使用两种测试工具
1. JMeter 这里之所以选择使用 JMeter,是因为这个软件一个开源软件,提供丰富的 API。 2. soapUI soapUI 用于生成 JMeter 测试时所需的 Soap/XML-RPC Data
JMeter
什么是 JMeter
Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具。用于对软件做压力测试,它最初被设 计用于 Web 应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小 服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象 模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做 功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性, JMeter 允许使用正则表达式创建断言。
线程组
线程组是任何测试计划的起点,所有的逻辑控制器和采样器都必须放在线程组之下。其他的测试元件 (如监听器)可以被直接放在测试计划之下,这些测试元件对所有线程组都生效。线程组就像它的名字所 描述的那样,被用来管理执行性能测试所需的 JMeter 线程。用户通过线程组的控制面板可以:
设置线程数量。 设置线程启动周期。 设置执行测试脚本的循环次数。 每一个 JMeter 线程都会完整地执行测试计划,而且它们之间是完全独立运行的。这种多线程机制被用 来模拟服务器应用的并发连接。参数 Ramp-Up Period 告诉 JMeter 达到最大线程数需要多长时间。假定共 有 10 个线程,Ramp-Up Period 为 100 秒,那么 JMeter 就会在 100 秒内启动所有 10 个线程,并让它们运 转起来。每一个测试线程都会在上一个线程启动 10 秒之后才开始运行。假定共有 30 个线程,Ramp-Up Period 为 120 秒,那么线程启动的间隔就为 4 秒。 Ramp-Up 参数不能设定得太短,否则在测试的初始阶段会给予服务器过大的压力。Ramp-Up 参数也不 能设定得太长,否则就会发生第一个线程已经执行完毕,而最后一个线程还没有启动的情况(除非测试人 员期望这种特殊情况发生)。 如何找到一个合适的 Ramp-Up 参数值?作者建议初始值可以设定为 Ramp-Up=总线程数,后续再根据 实际情况适当增减。
<soapenv:Header> <wsa:ReplyTo> <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address> </wsa:ReplyTo> <wsa:From> <wsa:Address>http://localhost:8080/axis2/services/MyService</wsa:Address> </wsa:From> <wsa:MessageID>ECE5B3F187F29D28BC11433905662036</wsa:MessageID>
测试计划
测试计划(Test Plan)是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。 名称:你可以为你的测试计划取一个有意义的名字。 注释:对测试计划的注释。 用户定义的变量:用户可以自己定义变量,在用到此变量的时候直接用${变量名}引用即可。例:变量 名=url,值=http://www.baidu.com,在需要 http://www.baidu.com 时直接用${url}即可。 Add directory or jar to classpath:向类路径即%JMETER-HOME%\lib 中添加目录及 jar 包。
JMeter 的高可扩展性
1. 可链接的取样器允许无限制的测试能力。 2. 各种负载统计表和可链接的计时器可供选择。 3. 数据分析和可视化插件提供了很好的可扩展性以及个性化。 4. 具有提供动态输入到测试的功能(包括 Javascrīpt)。 5. 支持脚本变成的取样器(在 1.9.2 及以上版本支持 BeanShell)。 在设计阶段,JMeter 能够充当 HTTP PROXY(代理)来记录 IE/NETSCAPE 的 HTTP 请求,也可以记 录 apache 等 WebServer 的 log 文件来重现 HTTP 流量。当这些 HTTP 客户端请求被记录以后,测试运行时 可以方便的设置重复次数和并发度(线程数)来产生巨大的流量。JMeter 还提供可视化组件以及报表工具 把量服务器在不同压力下的性能展现出来。
<soap:Header> ... ...
</soap:He来自百度文库der>
<soap:Body> ... ... <soap:Fault> ... ... </soap:Fault>
</soap:Body>
</soap:Envelope>
回应
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
SOAP 消息实例
请求
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
XML-RPC 的全称是 XML Remote Procedure Call,即 XML 远程方法调用。它是一套允许运行在不同操 作系统、不同环境的程序实现基于 Internet 过程调用的规范和一系列的实现。这种远程过程调用使用 http 作 为传输协议,XML 作为传送信息的编码格式。Xml-Rpc 的定义尽可能的保持了简单,但同时能够传送、处 理、返回复杂的数据结构。
JMeter 的作用
1. 能够对 HTTP 和 FTP 服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过 JDBC)。
2. 完全的可移植性和 100% 纯 java。 3. 完全 Swing 和轻量组件支持(预编译的 JAR 使用 javax.swing.*)包。 4. 完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。 5. 精心的 GUI 设计允许快速操作和更精确的计时。 6. 缓存和离线分析/回放测试结果。
相比其他 HTTP 测试工具,JMeter 最主要的特点在于扩展性强。JMeter 能够自动扫描其 lib/ext 子目录 下.jar 文件中的插件,并且将其装载到内存,让用户通过不同的菜单调用。
JMeter 主要组件介绍
1. 测试计划(Test Plan)是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。 2. 线程组(Thread Group)代表一定数量的并发用户,它可以用来模拟并发用户发送请求。 3. 取样器(sampler)定义实际的请求内容,被线程组包含,我们主要用 HTTP 请求。 4. 监听器(Listener) 5. 逻辑控制器(Logic Controller) 6. 断言(Assertions) 7. 配置元件(Config Element) 8. 前置处理器(Pre Processors)和后置处理器(Post Processors) 9. 定时器(Timer)
服务器端口测试
实现思路
压力测试原理有两种,一种是连接测试,一种是负载测试 1. 连接测试,就是多线程,不停的请求直到服务器死机或达到预期效果即可; 2. 负载测试,就是一个线程的多步操作,每个线程占用服务器 cpu 内存是否符合节能高效的标准,
如果不是,那就优化吧。 所有测试以额定用户(最大用户)为基础 这里我选用第一种连接测试。
</soapenv:Header> <soapenv:Body>
<req:echo xmlns:req="http://localhost:8080/axis2/services/MyService/"> <req:category>classifieds</req:category>
</req:echo> </soapenv:Body> </soapenv:Envelope>
相关知识
SOAP
简单对象访问协议(SOAP,全写为 Simple Object Access Protocol)是交换数据的一种协议规范,使用 在计算机网络 Web 服务(web service)中,交换带结构信息。SOAP 为了简化网页服务器(Web Server)从 XML 数据库中提取数据时,节省去格式化页面时间,以及不同应用程序之间按照 HTTP 通信协议,遵从 XML 格式执行资料互换,使其抽象于语言实现、平台和硬件。
这里之所以说是简单,是因为它是基于已经广泛使用的两个协议:HTTP 和 XML,所以业界把这种技 术称为“它是第一个没有发明任何新技术的技术”,之所以说是对象,是因为把访问的 Web 服务称为对象, 既然服务是对象,那么服务肯定有相关的属性和调用行为,这些属性和行为是通过 WSDL 来描述的。如果 按“简单的对象访问协议”来理解,相比“简单对象访问协议”要容易些。
Apache JMeter 可以用于对静态的和动态的资源(文件,Servlet,Perl 脚本,java 对象,数据库和查询, FTP 服务器等等)的性能进行测试。它可以用于对服务器,网络 或对象模拟繁重的负载来测试它们的强度 或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/ 对象。
SOAP 包括四个部分:
SOAP 封装:它定义了一个框架 , 该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还 是必须的。
SOAP 编码规则:它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。 SOAP RPC 表示:它定义了用于表示远程过程调用和应答的协定。 SOAP 绑定:定义了一种使用底层传输协议来完成在节点间交换 SOAP 封装的约定。 SOAP 消息基本上是从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求 / 应答的模 式。所有的 SOAP 消息都使用 XML 编码。一条 SOAP 消息就是一个包含有一个必须的 SOAP 的封装包, 一个可选的 SOAP 标头和一个必须的 SOAP 体块的 XML 文档。
XML-RPC 是工作在 Internet 上的远程过程调用协议。一个 XML-RPC 消息就是一个请求体为 xml 的 http-post 请求,被调用的方法在服务器端执行并将执行结果以 xml 格式编码后返回。
区别
web 服务有两个主要的专用术语即 soap 和 xml-rpc。虽然它们都是可以执行 rpc,但是 SOAP 是面向对 象和有状态的,而 xml-rpc 则是面向过程和无状态的。也就是说,soap web 服务可以由几个对象组成,每个 对象都处理该用户的 rpc 调用,允许对象在请求服务之间存储用户的信息。另一方面,xml-rpc 服务处理所 有独立的请求,而且在两次请求之间不存储信息。xml-rpc 应用程序的示例之一就是专用数据库的只读 web 服务接口。由于该应用程序中不需要事务处理,xml-rpc 的局限是互不相关。
SOAP 消息
一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:
1. 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息 2. 可选的 Header 元素,包含头部信息 可选的 SOAP Header 元素可包含有关 SOAP 消息的应用程序专用信息(比如认证、支付等)。如果 Header 元素被提供,则它必须是 Envelope 元素的第一个子元素。 3. 必需的 Body 元素,包含所有的调用和响应信息 必需的 SOAP Body 元素可包含打算传送到消息最终端点的实际 SOAP 消息。 4. 可选的 Fault 元素,提供有关在处理此消息所发生错误的信息 可选的 SOAP Fault 元素用于指示错误消息。 如果已提供了 Fault 元素,则它必须是 Body 元素的子元素。在一条 SOAP 消息中,Fault 元素只能 出现一次。 这里是一些重要的语法规则: 1. SOAP 消息必须用 XML 来编码 2. SOAP 消息必须使用 SOAP Envelope 命名空间 3. SOAP 消息必须使用 SOAP Encoding 命名空间 4. SOAP 消息不能包含 DTD 引用 5. SOAP 消息不能包含 XML 处理指令
测试工具
这里主要使用两种测试工具
1. JMeter 这里之所以选择使用 JMeter,是因为这个软件一个开源软件,提供丰富的 API。 2. soapUI soapUI 用于生成 JMeter 测试时所需的 Soap/XML-RPC Data
JMeter
什么是 JMeter
Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具。用于对软件做压力测试,它最初被设 计用于 Web 应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小 服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象 模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做 功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性, JMeter 允许使用正则表达式创建断言。
线程组
线程组是任何测试计划的起点,所有的逻辑控制器和采样器都必须放在线程组之下。其他的测试元件 (如监听器)可以被直接放在测试计划之下,这些测试元件对所有线程组都生效。线程组就像它的名字所 描述的那样,被用来管理执行性能测试所需的 JMeter 线程。用户通过线程组的控制面板可以:
设置线程数量。 设置线程启动周期。 设置执行测试脚本的循环次数。 每一个 JMeter 线程都会完整地执行测试计划,而且它们之间是完全独立运行的。这种多线程机制被用 来模拟服务器应用的并发连接。参数 Ramp-Up Period 告诉 JMeter 达到最大线程数需要多长时间。假定共 有 10 个线程,Ramp-Up Period 为 100 秒,那么 JMeter 就会在 100 秒内启动所有 10 个线程,并让它们运 转起来。每一个测试线程都会在上一个线程启动 10 秒之后才开始运行。假定共有 30 个线程,Ramp-Up Period 为 120 秒,那么线程启动的间隔就为 4 秒。 Ramp-Up 参数不能设定得太短,否则在测试的初始阶段会给予服务器过大的压力。Ramp-Up 参数也不 能设定得太长,否则就会发生第一个线程已经执行完毕,而最后一个线程还没有启动的情况(除非测试人 员期望这种特殊情况发生)。 如何找到一个合适的 Ramp-Up 参数值?作者建议初始值可以设定为 Ramp-Up=总线程数,后续再根据 实际情况适当增减。
<soapenv:Header> <wsa:ReplyTo> <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address> </wsa:ReplyTo> <wsa:From> <wsa:Address>http://localhost:8080/axis2/services/MyService</wsa:Address> </wsa:From> <wsa:MessageID>ECE5B3F187F29D28BC11433905662036</wsa:MessageID>
测试计划
测试计划(Test Plan)是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。 名称:你可以为你的测试计划取一个有意义的名字。 注释:对测试计划的注释。 用户定义的变量:用户可以自己定义变量,在用到此变量的时候直接用${变量名}引用即可。例:变量 名=url,值=http://www.baidu.com,在需要 http://www.baidu.com 时直接用${url}即可。 Add directory or jar to classpath:向类路径即%JMETER-HOME%\lib 中添加目录及 jar 包。
JMeter 的高可扩展性
1. 可链接的取样器允许无限制的测试能力。 2. 各种负载统计表和可链接的计时器可供选择。 3. 数据分析和可视化插件提供了很好的可扩展性以及个性化。 4. 具有提供动态输入到测试的功能(包括 Javascrīpt)。 5. 支持脚本变成的取样器(在 1.9.2 及以上版本支持 BeanShell)。 在设计阶段,JMeter 能够充当 HTTP PROXY(代理)来记录 IE/NETSCAPE 的 HTTP 请求,也可以记 录 apache 等 WebServer 的 log 文件来重现 HTTP 流量。当这些 HTTP 客户端请求被记录以后,测试运行时 可以方便的设置重复次数和并发度(线程数)来产生巨大的流量。JMeter 还提供可视化组件以及报表工具 把量服务器在不同压力下的性能展现出来。
<soap:Header> ... ...
</soap:He来自百度文库der>
<soap:Body> ... ... <soap:Fault> ... ... </soap:Fault>
</soap:Body>
</soap:Envelope>
回应
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
SOAP 消息实例
请求
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">