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

2021-07-31 15:16:23 字數 2388 閱讀 9458

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

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

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

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

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

而jmeter和hyperpacer對於webservice的測試資料相對較少,而且也沒有便捷的方式能自動生成相應方法,所以導致很多新人在使用這兩個工具進行webservice測試的時候感覺無從下手。這裡以hyperpacer為例,講解一下用hyperpacer編寫指令碼呼叫webservice進行效能測試。

這是乙個wsdl文件的片段截圖,在乙個wsdl文件中

乙個wsdl文件由以下幾部分部分組成:

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

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

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

transport指明傳輸協議,

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

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

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

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

下面我們來用hyperpacer來實現這個webservice的呼叫,首先新增乙個工程,inte***ce_demo和乙個叫介面測試的併發場景,在場景內增加乙個webservice取樣器,取樣器的介面如下:

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

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

在envelope的根節點下分別是header元素和body元素。

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

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

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

58367thecityname>

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

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

《方法名》

《引數名》引數value

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

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

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

如何更高效的進行回歸測試?

1 回歸測試基本策略及其評價 基於以上基本原則的闡述,回歸測試的基本策略目前有如下幾種,現一一進行闡述。1.1 回歸測試方式 gtrt 全面用例回歸測試選擇基線測試用例庫中的全部測試用例組成回歸測試包,這是一種比較安全的方法,再測試全部用例具有最低的遺漏回歸錯誤的風險,但測試成本最高。全部再測試幾乎...

如何進行高效迅速的CodeReview

背景 第一次參加 codereview 不知道該如何去做,也不知道為什麼去做,後來參加多了,慢慢了解了 codereview 的意義,也同時發現 codereview 的效率問題 寫這篇文章,希望本文中的一些建議能夠緩解上述問題,能使新人更快的了解 codereview 的意義和方法,有經驗的人能夠...

如何才能高效進行DDoS防禦?

最近看了幾個新聞,發現ddos攻擊已經是目前最大的網路安全威脅之一了。所以在這跟各位 一下,怎樣才能高效進行ddos防禦呢?聽說f5在ddos防禦上做得挺不錯的,下面我為大家介紹一下。ddos防禦是企業應用安全的重點 關於如何做好ddos防禦,我可以給大家提供幾點建議 需要意識到網路攻防和合規是兩回...