您的位置:首页 > 其它

_webservice(SOAP)性能测试

2013-02-01 18:01 696 查看
WebService定义:

Webservice是一种新的使用基于XML标准和协议来交换信息的WEB应用程序。是基于SOAP(简单对象访问协议)消息的应该协议,只是为WEB页面或可执行程序提供编程接口。

个人理解:就是webservice服务与客户端的数据交流是通过XML来实现,XML文件就是接口,客户端发送XML文件的请求,XML文件中有要调要后台的方法和传送的数据等信息。服务器返回结果到客户端也是XML文件,

注:基于Webservice构建的应该系统称之为SOA(面向服务架构),系统性能取绝于服务组件的单独性能以及接口性能。

名司解释

在构建和使用Web Service时,主要用到以下几个关键的技术和规则:

  1.XML:描述数据的标准方法.

  2.SOAP:表示信息交换的协议.

  3.WSDL:Web服务描述语言.

4.UDDI(Universal Description, Discovery and Integration):通用描述、发现与集成,它是一种独立于平台的,基于XML语言的用于在互联网上描述商务的协议。

用Loadrunner测试webservice测试一般步聚是:

(1) 选择Loadrunner的webservice协议

(2) 导入WSDL。 个人认为是让LR同Webservice建立连接,如果导入成功后,在Operations栏中可以看到webservice接口提供的方法

特别注意:如果webservier是asp.net开发以“*.asmx”结尾的路径。要加上“?wsdl”才能成功。如:http://192.168.0.30/securityws/SecurityWebService/SecurityWS.asmx?wsdl

总之,应该是以wsdl结尾才正常吧

(3) Webservice导入LR成功后,我们可以创建两种请求中的任意一个,

第一种是:“add service call”,

第二种是.“ Import SOAP”,

(4) 创建相关请求,生成代码,并参数化。

(5) 打印响应信息功能,调试代码,直到成功。

如:lr_message(lr_eval_string("Response XML is \n{response}"));

如上参见:http://blog.testsautomation.com/2009/07/web-services-testing-in-loadrunner/

LR WEBSERVICE性能测试

LR在WebService虚拟用户协议中支持两种方式测试WebService,一种是通过“Add Service Call”的方式,一种是Import SOAP的方式。

Import SOAP的方式需要导入定义好的XML请求文件。

取到WebService返回的XML数据后,可以使用XPath的方式验证数据,LR提供了几个处理XML的函数:

lr_xml_get_values() //Retrieves values of XML elements found by a query

lr_xml_set_values() //Sets the values of XML elements found by a query

lr_xml_extract() //Extracts XML string fragments from an XML string

lr_xml_delete() //Deletes fragments from an XML string

lr_xml_replace() //Replaces fragments of an XML string

lr_xml_insert() //Inserts a new XML fragment into an XML strin

lr_xml_find() //Verifies that XML values are returned by a query

lr_xml_transform() //Applies Extensible Stylesheet Language (XSL) Transformation to XML data

参见:http://blog.testsautomation.com/2009/05/validating-web-service-response-with-xpath/

实际上,使用LR还有一种测试WebService的方式,就是采用HTTP协议,因为WebService是构建在HTTP协议之上的,因此可以WEB虚拟用户协议中的web_custom_request来构造WebService的请求。

Action()

{

web_reg_save_param("Response","LB=", "RB=", LAST);

web_add_header("SOAPAction", "SampleMethod");

lr_start_transaction("REQ");

web_custom_request("Sample_Request","Method=POST",

"Mode=HTML",

"RecContentType=text/xml",

"EncType=text/xml; charset=utf-8",

"URL=http://example.com:1234/sample/",

"Body=<Envelope xmlns=\"\n'<http://example.com/sample\">\n"

" <Header/>\n"

" <Body>\n"

" <price><id>001</id></price>\n"

" </Body>\n"

"</Envelope>",

"LAST");

lr_end_transaction("REQ", LR_AUTO);

lr_output_message("Response is : %s\n", lr_eval_string("{Response}"));

return 0;

}

参见:http://blog.testsautomation.com/2009/01/web-services-performance-using-loadrunner/

学习LR测试WebService时,如果没有现成的WebService,又懒得写或不会写,可以用Parasoft网站的WSDL来试验:

http://soatest.parasoft.com/store-01.wsdl



示例代码

1. <books>

2. <book>

3. <id>123</id>

4. <author>John Smith</author>

5. <title>Working with Legacy code</title>

6. <publisher>Microsoft</publisher>

7. </book>

8. </books>

Action()

{

web_add_header("SOAPAction", "\"CallMe\"");

lr_start_transaction("AUTHOR");

soap_request("StepName=Sample Soap Request",

"ExpectedResponse=ANY",

"URL=http://foo.com/api",

"SOAPEnvelope= "

"<?xml version=\"1.0\" encoding=\"utf-8\"?>"

"<soap:Envelope "

"xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"
>"

"<soap:Body soap:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">"

"<GetBookDetails>"

"<idValue>123</idValue>"

"</GetBookDetails>"

"</soap:Body>"

"</soap:Envelope>",

"Snapshot=t765765765.inf",

"ResponseParam=Response_Xml",LAST);

lr_xml_get_values("XML={Response_Xml}",

"ValueParam=Author_Name",

"Query=/books/book/author",

LAST);

lr_output_message(lr_eval_string("Author is = {Author_Name}"));

if(strcmp(lr_eval_string("{Author_Name}"),"John Smith") == 0)

{

lr_end_transaction("AUTHOR", LR_PASS);

}

else

{

lr_end_transaction("AUTHOR", LR_FAIL);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: