翻譯|其它|編輯:郝浩|2008-01-18 10:50:11.000|閱讀 1204 次
概述:
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
測試Web Services的有效性、性能、可伸縮性、可靠性以及安全性時所面臨的主要挑戰是 Web Services的分布性。
為了使完整的Web Services能夠實現預期的功能,就要求客戶端和服務都要滿足一系列的要求。接口必須在其WSDL文檔中正確描述出來,消息必須遵守傳輸協議規范(如HTTP1.1)和消息協議(如SOAP 1.1)。同時消息必須遵守描述該服務的WSDL文檔中的契約,要求同時考慮到消息的內容和傳輸層的綁定。加上綜合的安全條款、互操作性問題、UDDI注冊要求以及一定負載下的性能需求,就很容易發現為什么網絡測試不是無足輕重的事情。
Web Services組件可由多個利益相關者來共同構建和部署。因此,測試這些組件過程中會發現確定代碼質量、可用性等都有很大的難度。Web Services的標準是簡單的,數據驅動的,并且共享一個公共的基于XML的基礎。傳統的測試工具可能不足以有效地測試這些標準。而且GUI自動化工具也不足以有效地測試Web Services的接口點和消息格式。
功能測試
該測試的目標相當直觀易懂:確保服務器能夠對給定的請求發送正確的響應。然而,由于Web Services的復雜性,該任務原非想象的那么簡單。對于大多數的Web Services而言,它不可能精確預見客戶端會發來什么類型的請求。枚舉所有可能的請求并不切實可行,因為可能輸入的空間要么是沒有邊界,要么就是無窮大。因此,驗證服務器是否能處理大范圍的請求類型和參數是極其重要的。
public boolean execute(String action, String symbol, int quantity)
throws javax.xml.soap.SOAPException{
Detail detail = null;
detail = SOAPFactory.newInstance().createDetail();
detail.addChildElement( "Stock Trade" ).addTextNode( "failed" );
System.out.println("execute() in webservices.stock.trade webservice has been invoked
with following arguments:: action:" + action +
" symbol:" + symbol + " quantity:" + quantity);
if(action == null) {
throw new SOAPFaultException(new QName( "//StockTrade/execute", "ServerFailed" ),
"action parameter is null.",
null,
detail);
}
if(symbol == null) {
throw new SOAPFaultException(new QName( "//StockTrade/execute", "ServerFailed" ),
"symbol parameter is null.",
null,
detail);
}
if(action.equalsIgnoreCase("BUY"))
System.out.println("BUYING quantity: "+ quantity + " of symbol:" + symbol);
// Invoke method to execute trade here.
else if(action.equalsIgnoreCase("SELL"))
System.out.println("SELLING quantity: "+ quantity + " of symbol:" + symbol);
// Invoke method to execute trade here.
else
{
System.out.println("INVALID action: "+ action);
throw new SOAPFaultException(new QName( "//StockTrade/execute", "ServerFailed" ),
"Invalid Action:" + action,
null,
detail);
}
return true;
}
代碼摘錄:Stock Trade Web Services
該段摘錄的代碼是Stock Trade Web Services的“execute()”方法的實現代碼。該方法首先驗證輸入參數的有效性,驗證成功才執行功能。舉例說明,如果參數action是空值,它就會拋出一個SoapFaultException異常,用faultstring參數(第二個參數)說明造成異常的原因。為了舉例說明,在對參數 symbol進行相似的驗證之后,Web Services給出了處理機。在實際的情況下,商業邏輯應該在此位置中實現:
try{
// Setup the global JAXM message factory
System.setProperty("javax.xml.soap.MessageFactory",
"weblogic.webservice.core.soap.MessageFactoryImpl");
// Setup the global JAX-RPC service factory
System.setProperty( "javax.xml.rpc.ServiceFactory",
"weblogic.webservice.core.rpc.ServiceFactoryImpl");
StockTrade_Impl ws = new StockTrade_Impl();
StockTradePort port = ws.getStockTradePort();
boolean returnVal = port.execute(action, symbol, quantity);
System.out.println("The webservice got back the following result:" + returnVal);
}catch(Exception e) {
}
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客園