五六年前我測(cè)試了自己的第一個(gè)web服務(wù)。該服務(wù)是一個(gè)更大的系統(tǒng)重寫(xiě)的一部分。在這一階段,我們用web服務(wù)集成了一個(gè)遺留主機(jī)應(yīng)用和一個(gè)新的web平臺(tái)。我們?cè)跍y(cè)試辦公方面的web服務(wù)有若干工具: SoapScope ,一個(gè)國(guó)產(chǎn)的基于瀏覽器的測(cè)試工具,我們當(dāng)中還有一些人直接編寫(xiě)Java或Ruby代碼進(jìn)行測(cè)試。我還記得,那時(shí)候就在想,應(yīng)該有更容易的測(cè)試方式才對(duì)。
那時(shí)候項(xiàng)目開(kāi)展有兩個(gè)星期了,當(dāng)時(shí)我正在設(shè)法獲取幾個(gè)可以測(cè)試服務(wù)的Ruby庫(kù),項(xiàng)目組里面有人向我推薦了 soapUI ,那時(shí)候soapUI還很年輕——只有基本功能和性能測(cè)試能力,且還沒(méi)有專業(yè)版。從我第一次使用soapUI開(kāi)始,它就成為了我測(cè)試服務(wù)的缺省選擇。
現(xiàn)在,soapUI除了開(kāi)源版本以外還有商業(yè)的專用版。它們提供了對(duì)WS、REST及以HTTP為基礎(chǔ)的服務(wù)的支持,還有最近宣布的對(duì)JMS、AMF及 JDBC的支持。在本文中,我們來(lái)看一個(gè)對(duì)WSDL服務(wù)進(jìn)行功能和性能測(cè)試的例子。在將來(lái)的文章中我們還將討論負(fù)載測(cè)試、web服務(wù)模擬以及與 JUnit 的集成。對(duì)于這些文章中所涉及的例子應(yīng)用,我們都會(huì)考慮Atlassian JIRAsoap web服務(wù)。這是一個(gè)很好的、非凡的界面,也有一個(gè)公開(kāi)的例子。
創(chuàng)建第一個(gè)項(xiàng)目
第一次打開(kāi)soapUI時(shí),不會(huì)有工程加載進(jìn)來(lái)。要想創(chuàng)建新工程的話,右鍵單擊Project圖標(biāo)然后選擇New soapUI Project,如下圖1所示:
圖1:在soapUI中創(chuàng)建一個(gè)新項(xiàng)目。
第一步:在soapUI中創(chuàng)建一個(gè)新項(xiàng)目
這會(huì)彈出New soapUI Project的對(duì)話框,如下圖2所示。輸入項(xiàng)目的名字及所建項(xiàng)目的初始WSDL地址。如果WSDL變了,你可以在后面導(dǎo)入更新—不要以為拿到最后版本才 能開(kāi)始。在本例中,我會(huì)使用自己的JIRAweb服務(wù)實(shí)現(xiàn)以便可以執(zhí)行測(cè)試。如果你要跟著做的話,可以將你的項(xiàng)目指向Atlassian的例子,該例子可 在此處找到。
圖2: 命名項(xiàng)目并導(dǎo)入初始WSDL。
第二步:命名項(xiàng)目并導(dǎo)入初始WSDL
你會(huì)看到幾個(gè)復(fù)選框,讓你選擇在項(xiàng)目創(chuàng)建過(guò)程中由soapUI自動(dòng)執(zhí)行的任務(wù)。若是想全部都選上,歡迎,不過(guò)通常我只會(huì)選“為所有的操作創(chuàng)建樣例請(qǐng)求 嗎?(Create sample requests for all operations?)”這個(gè)復(fù)選框。一旦完成新項(xiàng)目信息的輸入,點(diǎn)擊OK按鈕。
圖3:顯示在項(xiàng)目下面的各種JIRA請(qǐng)求,有一個(gè)請(qǐng)求窗口在soapUI主工作區(qū)打開(kāi)。
項(xiàng)目加載完成后,你應(yīng)該看一看所有不同的請(qǐng)求的細(xì)節(jié),這些細(xì)節(jié)均在圖3中項(xiàng)目底下的WSDL定義中顯示。要想觀看這些請(qǐng)求細(xì)節(jié),你可以展開(kāi)請(qǐng)求并雙擊圖中所示的“Request 1”按鈕。應(yīng)該就能打開(kāi)soapUI主工作區(qū)的一個(gè)窗口。
第三步:顯示在項(xiàng)目下面的各種JIRA請(qǐng)求,在soapUI主工作區(qū)打開(kāi)一個(gè)請(qǐng)求窗口
圖4:用綠色箭頭提交一項(xiàng)服務(wù)請(qǐng)求。
要想手工提交請(qǐng)求給web服務(wù),只需點(diǎn)擊請(qǐng)求窗口中的綠色箭頭—如圖4所示。
第四步:用綠色箭頭將請(qǐng)求提交給服務(wù)。
如果你對(duì)這個(gè)請(qǐng)求—addVersion請(qǐng)求執(zhí)行上述動(dòng)作,在沒(méi)有做出任何改變的情況下,你會(huì)得到如下表1所示的包含有例外的響應(yīng):
表 1:例外:未傳遞合法參數(shù)數(shù)據(jù)。
以下是引用片段:
… <faultcode>soapenv:Server.userException</faultcode> ?????????<faultstring>java.lang.NumberFormatException:?Invalid?boolean</faultstring> … |
這一例外會(huì)得到返回,有幾個(gè)原因。首先,我們還沒(méi)有登錄進(jìn)去。如果你向下滾動(dòng)我們項(xiàng)目已有的請(qǐng)求,就會(huì)看到有一個(gè)登錄請(qǐng)求。其次,請(qǐng)求中所有的數(shù)據(jù)值上面都有問(wèn)號(hào),正如下面的列表2所示。在提交任何請(qǐng)求之前,你應(yīng)該想要輸入測(cè)試值到看到出現(xiàn)有問(wèn)號(hào)的那些字域中去。
列表2:缺省情況下,請(qǐng)求的值不會(huì)彈出。
以下是引用片段:
… <in0?xsi:type="xsd:string">?</in0> ?????????<in1?xsi:type="xsd:string">?</in1> ?????????<in2?xsi:type="bean:RemoteVersion"?xmlns:bean="http://beans.soap.rpc.jira.atlassian.com"> ????????????<id?xsi:type="xsd:string">?</id> ????????????<name?xsi:type="xsd:string">?</name> ????????????<archived?xsi:type="xsd:boolean">?</archived> ????????????<releaseDate?xsi:type="xsd:dateTime">?</releaseDate> ????????????<released?xsi:type="xsd:boolean">?</released> ????????????<sequence?xsi:type="xsd:long">?</sequence> ?????????</in2> … |
這時(shí)候,你可以瀏覽任何的請(qǐng)求;查看不同的請(qǐng)求參數(shù);改變請(qǐng)求并人工運(yùn)行來(lái)看那些響應(yīng)。總而言之,你應(yīng)該可以瀏覽web服務(wù)并與之交互。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
