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”才能成功。如:。总之,应该是以wsdl结尾才正常吧(3) Webservice导入LR成功后,我们可以创建两种请求中的任意一个,第一种是:“add service call”,第二种是.“ Import SOAP”, (4) 创建相关请求,生成代码,并参数化。(5) 打印响应信息功能,调试代码,直到成功。如:lr_message(lr_eval_string("Response XML is \n{response}"));如上参见: 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 querylr_xml_set_values() //Sets the values of XML elements found by a querylr_xml_extract() //Extracts XML string fragments from an XML stringlr_xml_delete() //Deletes fragments from an XML stringlr_xml_replace() //Replaces fragments of an XML stringlr_xml_insert() //Inserts a new XML fragment into an XML strinlr_xml_find() //Verifies that XML values are returned by a querylr_xml_transform() //Applies Extensible Stylesheet Language (XSL) Transformation to XML data参见: 实际上,使用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=\"" " <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;} 参见: 学习LR测试WebService时,如果没有现成的WebService,又懒得写或不会写,可以用Parasoft网站的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=\"" >" "<soap:Body soap:encodingStyle=\"">" "<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;}