TestMaker可以在命令行執(zhí)行,因此,你的測(cè)試代理(test agent)可以被自動(dòng)化系統(tǒng)執(zhí)行。另外,TestMaker還綁定了Apache Axis TCPMonitor工具,它讓你可以監(jiān)視某個(gè)端口的HTTP信息交換。這對(duì)于檢查內(nèi)部請(qǐng)求/響應(yīng)對(duì)來決定如何編寫Jython測(cè)試代碼時(shí)會(huì)很有用!
商業(yè)的TestMaker版本添加了XSTest,提供性能測(cè)試和容量測(cè)試(Scalabillity testing),一個(gè)監(jiān)視面板提供實(shí)時(shí)的結(jié)果,報(bào)告能力,還有TestNetWork – 能遠(yuǎn)程執(zhí)行測(cè)試代理(test agent),因此,允許你搭建測(cè)試代理服務(wù)器來同時(shí)測(cè)試目標(biāo)Web應(yīng)用程序!
TestMaker的文檔很好,工具的感覺像專業(yè)的應(yīng)用。但是,很難掌握和精通。需要留出大量時(shí)間來閱讀指南和分析那些例子的源代碼! ebInject WebInject是一個(gè)極其輕量級(jí)的測(cè)試工具,能自動(dòng)化測(cè)試Web services和Web應(yīng)用程序。事實(shí)上,WebInject能測(cè)試XML/SOAP Web Service好像是近增加的功能,早期版本不能很好地處理SOAP協(xié)議!
WebInject首先是一個(gè)用Perl寫的命令行工具,雖然它的作者提供了一個(gè)簡(jiǎn)單的Perl/Tk用戶界面,至少簡(jiǎn)化了測(cè)試的執(zhí)行(對(duì)于某些人來說不愿意花太多的時(shí)間在命令行)。如果你不熟悉Perl,不要害怕。WebInject的使用可以不用任何Perl代碼!
WebInject其實(shí)是一個(gè)執(zhí)行和報(bào)告引擎。不像其他工具,它沒有IDE類型的用戶界面,因此測(cè)試的編輯必須在WebInject界面之外完成。這讓人感覺WebInject沒有那么專業(yè),但是這不妨礙這個(gè)工具的使用,我可以想象WebInject的用戶都有一個(gè)目錄存儲(chǔ)了各種測(cè)試“模板”。新建一個(gè)測(cè)試的時(shí)候,這些用戶只需要打開他們喜歡的編輯器,拷貝粘貼一些代碼,調(diào)整一下完成了一個(gè)新的測(cè)試用例。 當(dāng)你運(yùn)行WebInject時(shí),它讀入一個(gè)包含測(cè)試用例描述信息的XML文件。每個(gè)測(cè)試用例使用XML標(biāo)簽來描述。因此,一個(gè)簡(jiǎn)單的驗(yàn)證某個(gè)Web方法返回一個(gè)書名列表是否包含My Antnia的測(cè)試用例可能會(huì)像下面的代碼所示:
id=”5” description1 = “Verify My Antonia in list” method=”post” url=”Http://localhost:8080/axis/bkService.jsw” postbody=”file=>soapListTest.xml” posttype=”text/xml” addheader=”SOAPaction: urn:getBookList” verifypositive=”My Antonia” />
“id”屬性不僅提供了測(cè)試用例的名稱,還標(biāo)識(shí)了測(cè)試用例的執(zhí)行順序。其他的屬性都是很直觀易懂的(只要你細(xì)讀它的文檔)。賦給“postbody”屬性的值告訴WebInject取當(dāng)前目錄名為“soapListTest.xml”的XML文件,并用它來組成SOAP請(qǐng)求的內(nèi)容!
如果結(jié)果包含“My Antonia”字符串,則測(cè)試通過。WebInject提供了三個(gè)額外的“verifypositive”屬性,每個(gè)的值都被作為正則表達(dá)式處理。這意味著你可以創(chuàng)建很復(fù)雜的驗(yàn)證說明 – 更確切地說,你可以構(gòu)建一個(gè)測(cè)試步驟,只有通過4個(gè)正則表達(dá)式的過濾條件才算通過測(cè)試,每一個(gè)正則表達(dá)式對(duì)應(yīng)一個(gè)“verifypositive”屬性”。一個(gè)測(cè)試用例元素還可以包括4個(gè)“verifynegative”屬性,功能與“verifypositive”屬性”相反,如果任何一個(gè)正則表達(dá)式不匹配,則測(cè)試用例失敗!
本質(zhì)上,一個(gè)WebInject“項(xiàng)目”只是一連串的組成的XML文件。WebInject的簡(jiǎn)單結(jié)構(gòu)讓你可以非?焖俚貥(gòu)建測(cè)試。但是你必須適當(dāng)了解SOAP協(xié)議的機(jī)制,還需要一個(gè)工具幫助你捕獲和產(chǎn)生HTTP/SOAP請(qǐng)求和響應(yīng)。你需要那些請(qǐng)求信息來構(gòu)建POST的正文,需要那些響應(yīng)信息來創(chuàng)建合適的“verifypositive”和“verifynegative”的正則表達(dá)式來檢查測(cè)試是否成功。我使用Eclipse的Web Service工具包來為WebInject獲取請(qǐng)求和響應(yīng)信息,一旦我掌握其中的訣竅,我覺得創(chuàng)建測(cè)試用例是很簡(jiǎn)單的事情!
對(duì)于每個(gè)測(cè)試用例的執(zhí)行,WebInject的UI都會(huì)顯示狀態(tài)(通過或者失敗)。你可以配置WebInject以提供完整的HTTP請(qǐng)求和響應(yīng)信息,這是一個(gè)非常有用的功能,如果你想在測(cè)試用例失敗時(shí)調(diào)試的話!
除此之外,UI還能產(chǎn)生實(shí)時(shí)的圖表,為每一對(duì)請(qǐng)求和響應(yīng)產(chǎn)生往返時(shí)間的統(tǒng)計(jì)圖表,因此你可以使用WebInject構(gòu)建和監(jiān)視性能測(cè)試。而且WebInject還為MRTG(Multi Routing Triffic Grapher)提供插件,MRTG是一個(gè)網(wǎng)絡(luò)監(jiān)視和數(shù)據(jù)收集工具,允許你執(zhí)行和捕獲測(cè)試用例運(yùn)行一段時(shí)間的結(jié)果,還能分析數(shù)據(jù)的模式和趨勢(shì)!
WebInject的大特點(diǎn)是它的簡(jiǎn)單性。一旦你掌握了WebInject的XML命令的訣竅,你可以快速地構(gòu)建、修改和擴(kuò)展測(cè)試用例。整個(gè)文檔包含一個(gè)Web頁面,這些信息可以在同一個(gè)地方讀取到。但是,這個(gè)頁面的文檔有時(shí)候也會(huì)讓你感覺不知道如何進(jìn)一步測(cè)試。此外,你需要適當(dāng)了解SOAP協(xié)議,還有額外的一個(gè)工具來提取Web Service響應(yīng)信息的POST正文,以便創(chuàng)建測(cè)試用例!
為你效勞 這三款工具從快速和易用到復(fù)雜和強(qiáng)大的都有。如果你需要快速編碼來測(cè)試你的Web service的話,WebInject是個(gè)符合邏輯的選擇;你將在一個(gè)下午的時(shí)間里測(cè)試你的Web service。如果你需要高端的工具,讓你可以創(chuàng)建強(qiáng)大的測(cè)試,可能擴(kuò)展到其他的系統(tǒng)資源 – 文件系統(tǒng)、數(shù)據(jù)庫、e-mail等的話,那么TestMaker是佳選擇。但是首先要看看Jython,準(zhǔn)備好艱難的學(xué)習(xí)過程。
我喜歡中間的soapUI。由soapUI的向?qū)?chuàng)建的基本測(cè)試結(jié)構(gòu)比起TestMaker創(chuàng)建的要容易讓其豐滿起來。而且如果我需要更復(fù)雜的測(cè)試,我還可以使用soapUI的Groovy。
如果說把這些產(chǎn)品與商業(yè)的Web service測(cè)試工具比較的話,我會(huì)說它們是大雜燴。它們雖然是免費(fèi)的,并且對(duì)于簡(jiǎn)單到中等復(fù)雜程度的工作而言工作得不錯(cuò);但是另一方面,它們比商業(yè)工具在易用性方面要弱些,你需要做一些復(fù)雜的工作,必須自己構(gòu)建。TestMaker看起來比較接近商業(yè)工具,但是需要學(xué)習(xí)Jython意味著需要更長(zhǎng)的時(shí)間來構(gòu)建測(cè)試。soapUI看起來沒有那么專業(yè),但是可以讓你不需要編程能創(chuàng)建可用的測(cè)試。WebInject則是徹頭徹尾的開發(fā)人員的工具。你需要懂得SOAP,才能很好地使用它,并且能力也不會(huì)有soapUI或TestMaker那么強(qiáng)大,因?yàn)樗臏y(cè)試用例依賴模板驅(qū)動(dòng)。