LoadRunner WebService
上一篇 / 下一篇 2011-05-05 12:30:43 / 個人分類:轉帖
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=\"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"<SPAN style="FONT