webservices压力测试总结板栗.docx
《webservices压力测试总结板栗.docx》由会员分享,可在线阅读,更多相关《webservices压力测试总结板栗.docx(18页珍藏版)》请在冰豆网上搜索。
webservices压力测试总结板栗
webservices压力测试总结
一、项目简介
1、测试环境:
WebServices+SSL(ssl证书链),采用SOAP协议
2、开发工具:
c#.net
3、数据库:
sybase
4、压力测试工具:
LoadRunner8.0(LR7.8的license)
二、录制脚本
5、下载WSDL文件
在IE里输入地址:
http:
//192.168.0.127/webservices/taxwebservice.asmx?
wsdl
打开WSDL文件后,点击“另存”按钮,保存文件为.wsdl格式
6、选择WebServices协议
7、ScanWSDLFile
8、SpecifyWSDLforscanning
9、选择方法
10、Specifyargumentvalues
11、StartRecord
点击“StartRecord”按钮
12、Specifyapplicationtorecord
13、调用程序开始录制
三、SSL配置
14、RecordingOptions(Ctrl+F7)
15、PortMapping
16、点击“NewEntry”
补充:
定义端口映射
VuGen使用“端口映射”设置,通过特定的服务器:
端口组合将流量定向到需要的通信协议。
网络级服务器地址映射:
指定每个协议的映射。
例如,要仅显示FTP映射,则选择FTP。
新建项:
打开“服务器项”对话框,可以添加新映射。
请参阅第49页的“添加新的服务器项”。
编辑项:
打开“服务器项”对话框,可以编辑选定的项。
删除项:
删除选定的项。
选项W打开“高级设置”对话框,启用通信协议和SSL级别的自动检测。
请参阅第51页的“设置自动检测选项”。
如果未指定全部端口和服务器名,VuGen在将数据分配给服务时将使用以下优先顺序:
优先级高的映射项不会被优先级较低的项覆盖。
例如,如果指定将服务器twilight端口25上的流量作为SMTP处理,然后指定将所有服务器的端口25上的流量作为HTTP处理,则数据将被作为SMTP处理。
此外,还适用下列规则:
➤端口0:
端口号0指明任意端口。
➤强制映射:
如果您为某个端口号、服务器名或服务器:
端口组合指定映射,VuGen将强制网络流量使用该服务。
例如,如果您要指定<任何>服务器的端口80使用FTP,则VuGen将使用FTP协议录制该通信,即使实际通信可能为HTTP。
在上例中,Vuser脚本可能为空。
定义端口映射后,该映射将显示在“端口映射”列表中。
您可以通过清除任意项旁边的复选框来暂时禁用该项。
禁用某一项后,VuGen将忽略所有流向该服务器:
端口组合的流量。
数据无关或者协议不受支持时,应禁用端口项。
详细说明,请参阅第52页的“设置端口映射录制选项”。
翻译为下图:
解释:
套接字服务
目标服务器:
该项适用的目标服务器的IP地址或主机名。
默认值为所有服务器。
端口:
该项适用的目标服务器的端口。
端口0表示所有端口。
服务ID:
录制器用于标识连接类型的协议或服务名。
(即HTTP、FTP等)。
您还可以指定一个新名称。
该名称不能超过8个字符。
服务类型:
服务的类型,当前设置为TCP。
连接类型:
连接的安全级别:
“普通”(不安全)、“SSL”或“自动”。
如果选择“自动”,录制器将检查前4个字节寻找SSL签名。
如果检测到SSL签名,将假定该SSL正在使用。
SSL配置
如果选择“SSL”或“自动”作为连接类型,请配置本部分中的相关SSL设置。
这些设置仅适用于新项。
您应该仅当明确了解应用程序的SSL编码时,才指定它们。
否则,将接受默认值。
SSL版本:
与客户端应用程序和服务器通信时使用的首选SSL版本。
默认情况下使用SSL2/3。
但是,某些服务要求仅使用SSL3.0或SSL2.0。
某些新的无线应用程序要求使用TLS1.0-一种不同的安全算法。
SSL密码:
与远程安全服务器连接时使用的首选SSL密码。
使用指定的客户端证书:
连接远程服务器时使用的默认客户端证书。
指定或浏览txt、crt或pem格式的证书文件,并提供一个密码。
使用指定的代理服务器证书:
提供给请求服务器证书的客户端应用程序的默认服务器证书。
指定或浏览txt、crt或pem格式的证书文件,并提供一个密码。
单击“测试SSL”针对服务器检查身份验证信息。
流量转发
允许从本地端口转发到目标服务器:
此选项将来自特定端口的所有流量转发到另一个服务器。
在VuGen无法在客户端(例如唯一的UNIX计算机)上正常运行,或者无法通过VuGen启动应用程序服务器的情况下,此选项特别有用。
我们将VuGen配置为侦听来自有问题的客户端计算机的流量,并将其传递到服务器。
这样,VuGen便可以处理数据并为操作生成代码。
例如,如果您在名为host1的UNIX客户端上工作,该客户端与服务器server1通过端口8080通信,您可以为server1、端口8080创建一个“端口映射”项。
在“服务器项”对话框的“流量转发”部分中,通过选中“允许从本地端口转发到目标服务器”复选框启用流量转发。
在本例中,将想要从其转发流量的端口指定为8080。
然后,将客户端host1连接到运行VuGen的计算机,而不是连接到server1。
VuGen从客户机接收通信,并通过本地端口8080将其转发到服务器。
由于流量流经VuGen,因此VuGen可以分析流量并生成相应的代码。
设置自动检测选项
默认情况下没有定义任何映射,并且VuGen采用“自动检测”。
VuGen的自动检测功能可以分析发送给服务器的数据。
VuGen检查数据寻找签名。
签名是数据内容中的一种模式,用于标识协议。
为了检测签名,将组合返回第一个接收缓冲区之前的所有发送缓冲区。
所有在接收缓冲区返回之前发送的发送缓冲区都被视为单次数据转换。
在某些协议中,VuGen通过一次转换便可确定类型(例如HTTP)。
其他网络协议则需要数次转换才能确定类型。
出于此目的,VuGen为每个服务器-端口组合创建一个临时缓冲区。
如果VuGen无法通过读取第一个转换缓冲区来确定协议类型,将把数据存储在临时缓冲区中。
然后,它将继续读取传入的缓冲区,直到检测到特定协议的签名。
默认情况下,VuGen允许进行4次转换,并使用一个大小为2048字节的临时缓冲区检测协议签名。
如果VuGen在到达最大转换次数或者到达最大缓冲区大小后仍未确定类型,将把数据分配给WinSock协议。
如果您未指示VuGen录制WinSock协议(在多协议选择中),VuGen将丢弃数据。
您可以更改希望VuGen为检测到协议类型而读取的最大缓冲区数量。
还可以指定临时缓冲区的大小。
如果第一个发送缓冲区中的数据量大于临时缓冲区的大小,VuGen将无法自动检测协议类型。
在这种情况下,您应该增加临时缓冲区的大小。
允许自动检测SSL:
自动检测SSL通信。
指定您希望检测的版本和默认密码。
注意,此功能仅适用于在“连接类型”框中定义为“自动”或者根本未定义的端口映射。
如果服务器、端口或服务器:
端口组合被定义为“普通”或“SSL”,则无法使用自动SSL检测。
允许自动检测基于套接字通信的类型:
自动检测通信类型。
如果需要,请增加最
大转换次数,每次增加1,直到VuGen成功地检测到协议。
您还可以逐渐增加最大缓冲区大小(每次增加1024字节,即1KB),直到VuGen成功地检测到协议。
这样可使VuGen查看更大数量的数据以便找到签名。
更新:
接受自动检测选项并关闭对话框。
使用上述网络级别协议时,建议您允许VuGen使用自动检测来确定协议类型。
在大多数情况下,VuGen的录制器能够识别这些协议的签名。
然后,VuGen可以根据协议规范自动处理它们。
但是,在某些情况下,VuGen可能无法识别协议。
例如:
➤协议签名与某个现有协议几乎相同,使得处理结果出现误差。
➤协议没有唯一的签名。
➤协议使用SSL加密,因此无法在WinSock级别进行识别。
在上述所有情况中,您可以提供信息唯一地标识承载协议的服务器和端口。
详细说明,请参阅第52页的“设置端口映射录制选项”。
17、点击“TestSSL”
四、问题总结
a)在录制登陆程序的脚本时候,出错,如下图:
b)SSL安全问题
在开始录制脚本打开页面的时候就发出警告:
1)该安全证书由您没有选定信任的公司颁发;2)安全证书上的名称无效,或者与站点名称不匹配。
然而在录制登陆脚本的时候弹出出错提示信息:
异常“system.security.securityException”在“IEExec.exe”中发生。
但是,没有注册能够调试此异常的调试器。
无法进行JIT调试。
奇怪的是只有在录制脚本的情况下报如上所述的错误,如果单机在正常情况下登陆系统无误,难道LR不认可我导入的SSL证书链!
c)录制综合申报脚本回放之后,数据库没有记录登陆日志的原因是:
综合申报模块被锁定,即同一个用户不可以重复登陆系统,第一次登陆的用户会被冲掉权限。
d)在成功录制缴纳脚本后,修改脚本中的“lr_think_time”时间后保存脚本,当再次打开脚本时,脚本格式却被破坏了(无法运行)。
运行脚本时,提示出错语句如下:
Action.c(25):
syntaxerror;found`Ly93d3cudzMub3JnLzIwMDEvWE1'expecting`)'
Action.c(25):
syntaxerror;found`Ly93d3cudzMub3JnLzIwMDEvWE1'expecting`;'
Action.c(25):
missing"
Action.c(25):
missing"
Action.c(25):
undeclaredidentifier`Ly93d3cudzMub3JnLzIwMDEvWE1'
Action.c(25):
syntaxerror;found"MU2NoZW1hIiB4bWxucz...expecting`;'
Action.c(27):
syntaxerror;found`LzIwMD'expecting`;'
Action.c(27):
missing"
Action.c(27):
missing"
Action.c(27):
missing"
Action.c(27):
toomanyerrors
e)