1. 程式人生 > >(原創)如何高效的進行WebService介面效能測試

(原創)如何高效的進行WebService介面效能測試

關於介面測試的理解,主要有兩類,一類是模組與模組間的呼叫,此類介面測試應該歸屬於單元測試的範疇,主要測試模組與模組之間聯動呼叫與返回。此類測試大多關注於流程性與正確性,通過設定不同的輸入,得到相應的返回與對應輸入資料的預期輸出目標比較是否一致,來確認介面的正確性和流程性。

另一類是系統的呼叫,如登入呼叫認證系統的介面,如本系統呼叫第三方系統的介面等等,這類針對由web端發起的呼叫的測試也是一種介面測試,這類測試關注點更著重放在效率和健壯性上。

對於第一種,比較好的實踐是將輸入資料做成引數,在的資料池中進行維護,而介面呼叫則做成自動化進行。目前HyperPacer已經很好的能實現此類測試的需求。作為效能測試的專題,我們不在此展開贅述。我們重點來說第二種介面測試

在這類web介面測試中,最多的就是的測試。

關於WebService,soap,XML,rpc,wsdl等一系列概念,有不清楚的可以參考下面連結中給出的一些概念解釋:

雖然解釋的不夠詳細,但是基本的概念大概解釋清楚了。

對於WebService的測試,我們在網上比較容易查詢到的實踐資料,LoadRunner在這方面確實方便,基本不需要太多這方面的知識,直接圖形化介面就可以自動生成相應方法的呼叫和引數輸入。

而和HyperPacer對於WebService的測試資料相對較少,而且也沒有便捷的方式能自動生成相應方法,所以導致很多新人在使用這兩個工具進行WebService測試的時候感覺無從下手。這裡以HyperPacer

為例,講解一下用HyperPacer編寫指令碼呼叫WebService進行效能測試

首先我們,在網上找到一個公開的天氣預報的WebService介面,該介面的描述文件如下:


這是一個WSDL文件的片段截圖,在一個WSDL文件中

一個WSDL文件由以下幾部分部分組成:

  • types

指定了WebService用到的所有資料型別。

  • message

指明一個操作所用到的資料型別。

  • portType

指出了這個WebService所有支援的操作,就是說有哪些方法可供呼叫。

  • binding

transport指明傳輸協議,

operation 指明要暴露給外界呼叫的操作。

use屬性指定輸入輸出的編碼方式,這裡沒有指定編碼。

  • services

指定服務的一些資訊,主要是指定服務的訪問路徑。

在我們的片段截圖裡面我們可以看到提供了很多的方法,由於我們是舉例子,這裡我們只選擇其中的一個方法getWeatherbyCityName來進行演示,我們可以看到在這個方法裡只有一個引數theCityName,顧名思義,這個介面的這個方法是實現我們輸入一個城市名或者編號,就可以得到該城市的天氣情況。

下面我們來用HyperPacer來實現這個WebService的呼叫,首先新增一個工程,interface_demo和一個叫介面測試的併發場景,在場景內增加一個WebService取樣器,取樣器的介面如下:


可以看到在WebService傳送的請求體中主要資訊就是我們要呼叫的方法和方法的引數資料。

在過去接觸的很多新人中,大多都是在這個請求體的地方不知道該如何編寫。這裡給出模版如下:

首先請求體先是XML的宣告,然後是soap envelop物件。這個沒有為什麼,soap請求內容能夠必須以envelope作為根節點,以及envelope中的各個名稱空間內容也都是固定的,有興趣詳細瞭解的可以點選下面的連結進行檢視:就是我~~~,裡面有Envelope的schema的相關定義。

在envelope的根節點下分別是Header元素和Body元素。

Header這個是可選的,如果需要新增Header元素,那麼它必須是Envelope的第一個元素。Header的內容並沒有嚴格的限制,我們可以自己新增一些和應用程式相關的內容,但是客戶端一定要記得處理這些Header元素。

而Body就是請求的主體了,如請求呼叫的方法,方法包含哪些引數等資訊。在呼叫中沒有指定引數和返回型別,這裡不需要指定,因為提供服務的一方自己已經規定好了資料型別,在呼叫時指定資料型別沒有任何意義,可以回過頭檢視上面WSDL文件截圖中關於根據城市獲取天氣這個的方法。

而一般情況下,我們用標籤來表示我們呼叫的方法,然後用子標籤來表示它的引數。如上面我們呼叫的是getWeatherbyCityName這個方法,所以在Body元素中,我們這樣寫:

   <getWeatherbyCityName xmlns="http://WebXml.com.cn/">

       <theCityName>58367</theCityName>

   </getWeatherbyCityName>

在上面,我們用黑色粗體標識的標籤就是方法名,而用斜體標識的標籤就是該方法的引數。

所以拼起來請求體就是如下格式:

<XML宣告>

<soap:Envelope>

      <Header>

      </Header>

      <Body>

          <方法名>

              <引數名>引數value</引數名>

          </方法名>

      </Body>

</soap:Envelope>

按照上面的模版拼出來請求體以後,我們的WebService取樣器就編寫完成了,執行一下,結果如下:


我們可以看到執行完成後,已經可以獲取到上海的天氣情況了。

實際執行測試的時候,我們當然不會這麼簡單,只測試一個方法。很多時候是需要將多個方法聯動串聯起來進行測試。譬如,這裡我們用到的獲取天氣的介面,我們可以看到還有獲取支援的城市列表的方法。感興趣的小夥伴可以在看完本文件後,自己試著完成先呼叫獲取城市列表的方法取到支援的城市列表,然後每個使用者分別取到一個城市名,再根據取到的這個城市名在獲取該城市的天氣,並且根據取到的天氣資訊中,如果低於5攝氏度則將該城市名輸出到控制檯。

有小夥伴自己實現了該指令碼的話,可以加群將指令碼發給我們運營組的小夥子,他驗證通過後會給你發紅包哦,不用在意我們會不會給他報銷,因為我們絕對絕對不會給他報銷的,就醬,本文完工收攤了。

相關推薦

原創如何高效進行WebService介面效能測試

關於介面測試的理解,主要有兩類,一類是模組與模組間的呼叫,此類介面測試應該歸屬於單元測試的範疇,主要測試模組與模組之間聯動呼叫與返回。此類測試大多關注於流程性與正確性,通過設定不同的輸入,得到相應的返回與對應輸入資料的預期輸出目標比較是否一致,來確認介面的正確性和流程性

原創clang的python介面教程

clang的python介面(二) N久之前的一個坑了,今天來為大家填上。(果然需求是第一生產力) 常用類 Index: 這個類是clang的核心類。具有構建語法樹的主類。 常用方法: create() '''

【移動開發】關於一對一視訊聊天直播技術:直播雲 SDK 效能測試

本篇是《一對一視訊直播技術詳解》系列的最後一篇直播雲 SDK 效能測試模型,SDK 的效能對最終 App 的影響非常大。SDK 版本迭代快速,每次釋出前都要進行系統的測試,測試要有比較一致的行為,要有效能模型作為理論基礎,對 SDK 的效能做量化評估。本文就是來探討影響 SDK 效能的指標並建立相應的效能模型

使用Jmeter應該如何進行http介面效能測試

在進行網頁或應用程式後臺介面開發時,一般要及時測試開發的介面能否正確接收和返回資料,對於單次測試,Postman外掛是個不錯的Http請求模擬工具。  但是Postman只能模擬單客戶端的單次請求,而對於模擬多使用者併發等效能測試,就必須藉助其他的工具了,這裡推薦功能強大的JMe

原創Maven+Spring+CXF+Tomcat7 簡單例子實現webservice

produces per back targe xsd lean listener ans 控制 這個例子需要建三個Maven項目,其中一個為父項目,另外兩個為子項目 首先,建立父項目testParent,選擇quickstart: 輸入項目名稱和模塊名稱,然後創建:

jmeter介面效能測試2----效能測試全過程

依然使用上一篇文章的介面 在上一篇文章我們已經添加了http請求、斷言、檢視結果樹。在開始之前我們在新增聚合報告(執行緒組》新增》監聽器》聚合報告)。 除錯好介面後開始執行效能測試 1.設定執行緒組:根據實際需要設定 1. 執行緒數:虛擬使用者數。一個虛擬使用者佔用一個程序或執

jmeter介面效能測試1----簡單的介面測試入門

首先來看一下介面的資訊:host:http://api.jhled888.comuri: /cgi-bin/get.json 介面請求方式: GET 入參:appid: jhyjlhxa03q4f2qlmfappsecret:eb28066907b14310a9401c0586c840

jmeter介面效能測試5----自動生成測試報告

今天學習了在jmeter中自動生成HTML格式的文件 儲存好指令碼後,通過cmd.exe進入到jmeter的bin目錄下: 輸入以下命令:jmeter -n -t xxx.jmx(指令碼的路徑) -l result.jtl -e -o /tmp/Result(報告的路徑) 執

jmeter介面效能測試4----提取json中的資料並應用到斷言中

介面資訊如下: 執行介面後在檢視結果樹種檢視響應資料,檢視方式選擇:JSON Path Tester 我們要在json中提取如下的資料: 檢視json體的路徑關係,在JSON path Expression中輸入路徑,關注是否能得到想要的數值。如:我們想要獲取上圖中的n

jmeter介面效能測試3----引數化

1.新增使用者自定義變數 給http請求新增使用者自定義變數:執行緒組》配置元件》使用者自定義變數 定義一個名稱為s的變數 在http請求中呼叫該引數 2.CSV Data Set Config 執行緒組》配置元件》CSV Data Set Config

java集合學習之List隨機訪問RandomAccess介面和ArrayList和LinkedList遍歷效能問題

ArrayList這個類是實現了RandomAccess介面的,RandomAccess介面和Serializable介面一樣都是沒有方法或者欄位的,像是一個標誌,RandomAccess介面文件說明的是:Marker interface used by <tt>

soapui介面效能測試---- 驗證效能

背景:如何表現效能? 在SoapUI中,斷言效能和底層功能(通過步驟狀態斷言)的可能性很多。找到正確的組合並不容易,因為LoadTest結果非常依賴於外部因素(特別是在高負載時); 網路,磁碟活動,資料庫備份等。因此,我們建議您為LoadTest建立一個“safety

JProfiler入門教程3--JProfiler進行本地JVM的效能監控

監視本地的Tomcat, 看似是本地,其實JProfiler GUI在一個單獨的JVM裡啟動,他與被監視的目標jvm之間通過socket通訊,目的為了不干擾目標JVM。所以監視本地Tomcat與監視遠端的Tomcat的配置方法基本是一樣的。當你學會了如何監控本地

soapui介面效能測試---- 建立並執行一個性能測試

1. soapui使用效能測試 SoapUI中的LoadTest用於在您所需的持續時間內使用多執行緒(與“虛擬使用者”相同)時重複執行現有的功能TestCase來斷言您的目標服務。LoadTests在導航器中顯示為此TestCase的子項; (這裡可以看到“Test

原創如何在效能測試中自動生成並獲取Oracle AWR報告

由於日常使用最多的資料庫為Oracle,因此,最近又打起了Oracle的AWR報告的主意。 過去我們執行測試,都是執行開始和結束分別手動建立一個快照,然後需要這部分資料的時候再去獲取AWR報告檢視。 但是有的時候忙亂起來或者一個任務項交給別人來做就經常會有忘記建立快

ROS- moveit使用C++介面進行運動路徑規劃和避障.cpp

/********************************************************************* * Software License Agreement (BSD License) * * Copyright (c) 2013, SRI In

soapui介面效能測試---- 輸出報告和統計

好的,您已經運行了LoadTest,現在需要建立一些報告或匯出收集的資料以進行更詳細的分析。有幾個選項可供您使用,我們將按順序檢視: 匯出統計表的資料(僅限開源)。從統計圖匯出資料。在測試執行時連續匯出資料。建立可列印報告或將基礎報告資料匯出到XML或CSV檔案(Load

原創如何在效能測試指令碼中建立關聯

效能測試中的關聯,說簡單一點,就是把某些寫死(固定)的資料,通過引數化變成動態的資料;或者說把前面指令碼中的結果資料,提取出來作為後續指令碼的請求資料使用。 進一步理解關聯之前,我們簡單看一下請求-響應模型: 客戶端和伺服器的連線是基於一種請求-應答模式。在HTTP1.1協議中,客戶端和伺服器建

soapui介面效能測試---- 命令列執行

建立後,您可能希望從命令列執行LoadTests,也許作為持續整合構建的一部分,或用於監視服務的日常效能。SoapUI提供了一個命令列執行程式和maven外掛來執行此操作。 該執行程式在您的SoapUI \ bin資料夾中可用,並適當地命名為loadtestrunner.

原創虛幻3--控制臺命令參數--1

pan use 控制臺命令 span find space -1 -- pac SEEKFREELOADING:Only use cooked data.(只使用cooked數據,參數:" -seekfreeloading"); FOV [number] 改變視點角度; S