Web 服務的測試模型與代碼摘錄[1] 軟件測試
測試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( "http://StockTrade/execute", "ServerFailed" ),
"action parameter is null.",
null,
detail);
}
if(symbol == null) {
throw new SOAPFaultException(new QName( "http://StockTrade/execute", "ServerFailed" ),
"symbol parameter is null.",
null,
detail);
}
文章來源于領測軟件測試網 http://www.k11sc111.com/