SoapUI 測(cè)試WebService接口

WebService接口是走soap協(xié)議通過(guò)http傳輸,請(qǐng)求報(bào)文和返回報(bào)文都是xml格式的,測(cè)試過(guò)程中都需要通過(guò)工具才能進(jìn)行調(diào)用。

其實(shí)接口測(cè)試和普通的功能測(cè)試沒(méi)什么區(qū)別,區(qū)別就是功能測(cè)試是在頁(yè)面上手動(dòng)的點(diǎn)點(diǎn)點(diǎn),輸入值,提交數(shù)據(jù)看結(jié)果,而接口測(cè)試沒(méi)有頁(yè)面,通過(guò)接口規(guī)范文檔上的調(diào)用地址、請(qǐng)求參數(shù),拼接報(bào)文,然后發(fā)生請(qǐng)求,檢查返回結(jié)果。

關(guān)于WebService接口的測(cè)試方法也有很多
(1)瀏覽器直接訪問(wèn):測(cè)試地址 /WebService/XXXWebService.asmx?op=接口名稱
(2)Jmeter
(3)WcfTestClient客戶端
(4)SoapUI

本文以SoapUI 5.4版本為例,講述下如何測(cè)試WebService的接口

先來(lái)了解一下Soap協(xié)議(Simple Object Access Protocol ,即簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議),可以簡(jiǎn)單的理解為Soap協(xié)議是基于XML的一個(gè)簡(jiǎn)易協(xié)議,SOAP=HTTP+XML,協(xié)議中必須包含Envelope、Body等元素。

接口用例腳本設(shè)計(jì)步驟.png

1、新建一個(gè)SoapUI Project

File——>New SOAP Project
填寫項(xiàng)目名稱和 接口地址(Initial WSDL),格式為Web Service的URL+?WSDL
添加后左側(cè)出現(xiàn)接口內(nèi)容

新建項(xiàng)目.png

2、新建TestSuite

目的:為了方便后續(xù)的測(cè)試,以防某些參數(shù)刪除錯(cuò)了
展開(kāi)TestSuite可以發(fā)現(xiàn)里面的內(nèi)容跟原來(lái)的是一樣的,于是就可以在這邊輸入?yún)?shù)去測(cè)試執(zhí)行了

新建TestSuite

3、調(diào)用WS接口

(1)選擇被調(diào)用接口名稱,雙擊Request 1,打開(kāi)請(qǐng)求和響應(yīng)子窗口
(2)在請(qǐng)求窗口中,把?替換成對(duì)應(yīng)的參數(shù)值
SoapUI默認(rèn)生成的請(qǐng)求中,”?”表示需要被替換的內(nèi)容,根據(jù)需要,可以替換或者刪除掉這些值。本接口需要一個(gè)名為ExpressNO的入?yún)?,??"替換成物流單號(hào)
PS:如果有多個(gè)參數(shù),而參數(shù)又不是必填時(shí),直接刪除?
(3)點(diǎn)擊執(zhí)行(綠色三角形),將此請(qǐng)求連同參數(shù)發(fā)送出去
(4)查看右邊窗口的響應(yīng)內(nèi)容

image.png

根據(jù)上述返回的結(jié)果,看到接口已被正確的調(diào)用,需要和需求文檔的參數(shù)返回值做對(duì)比

PS:請(qǐng)求與返回的結(jié)果都為XML格式

4、運(yùn)行測(cè)試用例

(1)在創(chuàng)建好的Test Suite下的Test Case 處雙擊,打開(kāi)測(cè)試用例執(zhí)行對(duì)話框
(2)點(diǎn)擊運(yùn)行測(cè)試用例
(3)查看運(yùn)行結(jié)果,如果所有的斷言都是成功,則用例執(zhí)行成功

說(shuō)明:“Test Steps”中可創(chuàng)建多個(gè)測(cè)試用例,組成一個(gè)測(cè)試用例集,在運(yùn)行該Test Steps時(shí),會(huì)根據(jù)用例的順序從上到下將用例進(jìn)行一次測(cè)試,將上一用例的輸出作為下一用例的輸入再組織相應(yīng)的用例,此處待進(jìn)一步研究

此圖中我將狀態(tài)故意設(shè)置錯(cuò)了,所以返回失敗,可以查看Description,相當(dāng)于是日志

image.png

5、斷言(檢查點(diǎn))

為在測(cè)試中不用人為地進(jìn)行接口功能是否正確的判斷,因此加入斷言Assertions,由程序直接對(duì)返回結(jié)果(出參)進(jìn)行判斷
(1)雙擊TestCase下的接口方法名稱,打開(kāi)窗口(或者直接雙節(jié)TestStep中的接口)
(2)點(diǎn)擊下圖左上角的增加斷言按鈕,選擇自己需要的
通常情況下,如果判斷的是響應(yīng)的內(nèi)容,我們只需要選擇“Contains”斷言,如圖所示

添加斷言
image.png

6、循環(huán)執(zhí)行(單線程,多次循環(huán))

雙擊Test Case,在窗口勾選“Loop TestCase continuously”選項(xiàng)

設(shè)置多次循環(huán).png

7、負(fù)載測(cè)試

利用多線程方式,在TestCase下面,新增一個(gè)LoadTest,設(shè)置線程數(shù),暫停時(shí)間,運(yùn)行總時(shí)間等參數(shù)

  • Threads:線程數(shù),也就是并發(fā)數(shù)
  • Test Delay:從完成一次用例后,到下一次開(kāi)始前,休息多長(zhǎng)時(shí)間,也稱思考時(shí)間
  • Limit:運(yùn)行時(shí)間
  • Random:代表Test Delay的浮動(dòng)范圍,如果設(shè)置為0.5,則代表Test Delay在“Test Delay * (1-0.5)--Test Delay * (1+0.5)”秒之間,設(shè)置為0表示不進(jìn)行浮動(dòng)

場(chǎng)景為5個(gè)用戶并發(fā),持續(xù)運(yùn)行1分鐘沒(méi)有思考時(shí)間,可設(shè)置Threads=5,Test Delay=0,Limit=600,后面的下拉框選擇Seconds,表示600秒。
設(shè)置好后,點(diǎn)擊左上方的運(yùn)行(三角箭頭),程序開(kāi)始進(jìn)行負(fù)載測(cè)試

image.png

負(fù)載測(cè)試過(guò)程中,右上方會(huì)有一個(gè)進(jìn)度條用于顯示測(cè)試的進(jìn)度情況,簡(jiǎn)要列表跟Jmeter中的聚合報(bào)告類似,其中時(shí)間以毫秒為單位,如圖中最短運(yùn)行時(shí)間為229毫秒,最長(zhǎng)為3406毫秒

另外SoapUI 還提供了2個(gè)圖表,列出了測(cè)試過(guò)程中相關(guān)數(shù)據(jù)的監(jiān)控

監(jiān)控圖表.png

缺點(diǎn):
1、Statistics graph圖中只有曲線,沒(méi)有任何數(shù)據(jù)說(shuō)明,只能看到變化的情況,沒(méi)有對(duì)應(yīng)的刻度值,所以無(wú)法直觀地看出數(shù)據(jù)大小
2、Statistics History graph 僅能顯示線程數(shù)與總數(shù)的變化情況,一統(tǒng)計(jì)內(nèi)容的曲線變化情況


另外,SoapUI工具還可以測(cè)試wcf方式的接口,添加時(shí)同WebService接口的一樣
wcf方式的接口.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容