使用LoadRunner对Web Services进行调用--Add Service Call
利用LoadRunner對Web Services進行測試時,通常有三種可供采用的方法:
- 在LoadRunner的Web Services虛擬用戶協議中,【Add Service Call】
- 在LoadRunner的Web Services虛擬用戶協議中,【Import SOAP】
- 在LoadRunner的Web(HTTP/HTML)虛擬用戶協議中, 利用web_custom_request函數構造WebService請求
本文將對第一種方法,即【Add Service Call】進行詳細講解。
Web Services是基于網絡的、分布式的模塊化組件,它執行特定的任務,遵守具體的技術規范,這些規范使得Web Services能與其他兼容的組件進行互操作。
而實現互操作的基礎,在于Web Services服務器對外提供了可供調用的函數接口API。使用者通過Web Services服務URL地址(確切地說是WSDL,Web services 描述語言)找到具體函數,然后就像調用本地函數一樣,根據函數的API傳入合法參數,經由Web Services服務器運算得到結果后返回給使用者。
在LoadRunner中,Web Services服務調用函數為web_service_call。下面將詳細講解該函數的使用步驟。
1. 導入Web Services的描述信息WSDL
要使LoadRunner能調用Web Services的接口函數,首先需要在LoadRunner中導入Web Services對應的WSDL文件。
WSDL 是基于 XML 的用于描述 Web Services 以及如何訪問 Web Services 的語言。該文檔對具體的 Web service 進行了描述,規定了服務的位置,以及此服務所提供的操作(或方法,或服務調用接口API)。
導入WSDL通常使用兩種方式:
- 通過WSDL的URL地址導入
- 直接導入本地WSDL文件
為了方便本文演示,特挑選了互聯網上常用的天氣服務Web Service作為案例。
通過WSDL的URL地址進行導入時,操作方式如下圖所示。
需要說明的是,填寫的URL地址末尾需包含“?WSDL”。換句話說,只有在以“?WSDL”結尾時才對應到WSDL文件的路徑。大家可以在瀏覽器中嘗試分別對兩個地址進行訪問,查看其中的區別。
而如果選擇直接導入本地WSDL文件的方式,則需要先將Web Services對應的WSDL文件下載至本地。下載時,只需將Web Services的地址末尾加上“?WSDL”后在IE瀏覽器中進行訪問,然后對網頁進行保存時將文件另存為".wsdl"的文件即可。如下圖所示。
獲取到WSDL文件以后,便可在LoadRunner中進行導入,操作方式如下圖所示。
兩種導入方式效果都是一樣的,采用任意一種方式都能將Web Service的描述信息導入至LoadRunner供其調用。
當然,兩種導入方式也存在一定的差異。
- 采用Import URL的方式可以方便本地獲取到最新的Web Service描述,當遠程服務器端的Web Service發生變動以后,本地端可直接對WSDL進行更新,而不需對WSDL進行重新導入。在LoadRunner中,甚至可以通過設置使LoadRunner每次打開腳本的時候自動更新WSDL,如下圖所示。
- 采用Import File方式的優點在于,可以對下載到本地的WSDL文件進行手工編輯后再使用;而缺點則是無法獲取到最新的Web Service的描述信息,若要更新則需重新下載WSDL文件并重新導入。
明白了兩種導入方式的特點之后,大家可以根據實際需求進行選擇。
2. 創建調用函數web_service_call
在LoadRunner中導入了Web Services的描述信息后,便可以對Web Service接口函數進行調用。
LoadRunner提供的調用函數為web_service_call。調用該函數時,可以根據其說明文檔直接在Editor里面進行編輯,不過更簡單且更不易出錯的方式還是通過【Add Service Call】進行可視化編輯。幫助文檔里對此也有進行說明。
This is a high-level function that lets you modify all the SOAP arguments intuitively. Because editing the arguments is likely to be error-prone, it is recommended that the function be modified in the tree view of Service Test rather than in the script editor.
點擊【Add Service Call】后進入Web Service Call的可視化編輯界面,如下圖所示。
在Web Service Call的可視化界面中,選擇所需調用的Service、Port Name和Operation即可。在上圖Operation列表中,可以看到存在5個可供調用的方法,對比下圖可知,這和網頁上展示的接口函數是一致的。
接下來,我們采用接口函數getWeatherbyCityName進行演示。
在Web Service Call的可視化界面中可以看出,接口函數getWeatherbyCityName只有一個輸入參數,即theCityName。而該接口函數則是通過城市名來獲取指定城市的天氣預報信息。
因此,使用getWeatherbyCityName函數接口時我們需對其傳入參數theCityName。具體操作時,選中Input Arguments中的參數名theCityName,勾選其右側的“Include argument in call”,在Value中輸入城市名稱即可,此處我們輸入的是“廣州”,如下圖所示。
若需要調用getWeatherbyCityName函數的返回結果,則需要事先將其返回結果保存至參數里面。具體操作時,選中Output Arguments中的參數名getWeatherbyCityNameResult[1],勾選其右側的“Save returned value in parameter”,在Parameter中輸入參數名即可。如下圖所示。
完成對Input Arguments和Output Arguments的設置后,點擊【OK】按鈕,便可看見腳本中新增了一個web_service_call函數,如下圖所示。
通過上圖可知,之前我們在可視化界面的所有設置均已轉換至web_service_call函數。
3. 回放腳本,查看結果
在“Run-time Settings”中打開日志“Extended log”,勾選“Parameter substitution”和“Data returned by server”。運行腳本后,查看“Replay Log”,如下圖所示。
詳細結果如下所示。
theWeatherInfo = <getWeatherbyCityNameResult XmlType="DynamicParameter"><string>廣東</string><string>廣州</string><string>59287</string><string>59287.jpg</string><string>2013-8-2 21:50:12</string><string>24℃/30℃</string><string>8月3日 大雨轉中雨</string><string>無持續風向微風</string><string>9.gif</string><string>8.gif</string><string>今日天氣實況:氣溫:26℃;風向/風力:東風 2級;濕度:96%;空氣質量:優;紫外線強度:弱</string><string>穿衣指數:熱,適合穿T恤、短薄外套等夏季服裝。\n過敏指數:極不易發,無需擔心過敏,可放心外出,享受生活。\n運動指數:較不宜,有較強降水,請在室內進行休閑運動。\n洗車指數:不宜,今天有雨,雨水和泥水會弄臟愛車。\n晾曬指數:不宜,有較強降水會淋濕衣物,不適宜晾曬。\n旅游指數:較不宜,有強降雨,建議您最好還是在室內活動。\n路況指數:濕滑,路面濕滑,車輛易打滑,減慢車速。\n舒適度指數:較不舒適,白天有雨,氣溫較高,悶熱。\n空氣污染指數:優,氣象條件非常有利于空氣污染物擴散。\n紫外線指數:弱,輻射較弱,涂擦SPF12-15、PA+護膚品。</string><string>25℃/32℃</string><string>8月4日 陣雨轉晴</string><string>無持續風向微風</string><string>3.gif</string><string>0.gif</string><string>25℃/34℃</string><string>8月5日 晴</string><string>無持續風向微風</string><string>0.gif</string><string>0.gif</string><string>廣州是廣東省的省會,是中國南方最大的海濱城市,廣州位于東經113。17`,北緯23。8`,地處中國大陸南部,廣東省南部,珠江三角洲北緣。廣州臨南海,鄰近香港特別行政區,是中國通往世界的南大門,廣州屬丘陵地帶。中國的第三大河----珠江從廣州市中心穿流而過。廣州是一座歷史文化名城。相傳在遠古時候,曾有五位仙人,身穿五色彩服、騎著嘴銜稻穗的五色仙羊降臨此地,把稻穗贈給百姓,祝愿這里永無饑荒。從此,廣州便有“羊城”、“穗城”的美稱,“五羊”也成為廣州的象征。廣州既是中國也是世界名城,又是一座古城,因歷史上有五羊仙子降臨獻稻穗的故事,廣州又稱為“羊城”和“穗城”,簡稱“穗”;廣州一年四季如春、繁花似錦,除夕迎春花市聞名海內外,故又有“花城”的美譽。廣州地處低緯,屬南亞熱帶季風氣候區。地表接受太陽輻射量較多,同時受季風的影響,夏季海洋暖氣流形成高溫、高濕、多雨的氣候;冬季北方大陸冷風形成低溫、干燥、少雨的氣候。年平均氣溫為21.4-21.9度,年降雨量平均為1623.6-1899.8mm,北部多于南部。1982年,廣州被國務院選定為全國首批歷史文化名城之一,是我國重點旅游城市。1999年1月,廣州被評為優秀旅游城市。景觀:白云山、蓮花山、南海神廟、佛山祖廟、廣州動物園等。</string></getWeatherbyCityNameResult>通過IE瀏覽器訪問該Web Service,查詢“廣州”時得到結果如下圖所示。
通過對比LoadRunner的Replay Log和瀏覽器的返回頁面可知,LoadRunner對Web Service進行了正確的調用。
4. 完善腳本
腳本雖已調試成功,可以得到正確的結果。但若要進行性能測試,我們還需對腳本進行參數化,如下圖所示。
或者,如果我們是只想利用返回報文的一小部分,而不是全部。在這種情況下,我們可以指定將某部分保存至參數,以便后續的使用。
例如,我們只想獲得某個城市當天的最低溫度和最高溫度。通過返回報文可知,該字段是輸出結果中的第6個字段。那么,我們便可以將該字段保存至一個參數,這里指定為Lowest_Highest_Temperature,如下圖所示。
運行結果如下圖所示。
當然,此處只是列舉了一個簡單的例子。通過對web_service_call函數的靈活應用,可以實現更多復雜、強大的功能。
轉載于:https://www.cnblogs.com/stleo/p/3315934.html
總結
以上是生活随笔為你收集整理的使用LoadRunner对Web Services进行调用--Add Service Call的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用ida python 实现复原函数调
- 下一篇: Hadoop+Spark 集群部署