亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

小心進行 J2EE Web Services 的測試

2019-11-18 12:29:39
字體:
來源:轉載
供稿:網友

  我們已經了解了很多關于Web Services開發方面的知識,而對于Web Services測試所面臨的挑戰卻知之甚少。本文將闡述對Web Services功能性和互用性的測試。本文同時也指出了與傳統測試模式相比Web Services測試所面臨的挑戰。本文的目標讀者是開發人員、測試人員以及那些對Web Services的技術知識或工作方式沒有深入了解的項目經理。同時本文假設讀者已經很熟悉Web Services的基本知識。
  
  下載作者提供的與本文相關的文件
  
  以下所述及的示例的環境由WebLogic Server 8.1和Microsoft Windows .Net構成,二者所用操作系統均為windows 2000。
  
  挑戰
  測試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.  
  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);
  
  }
  
  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( "http://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) {
  
  }
  
  代碼摘錄:Web Services的客戶端
  上面的一段代碼描述了測試客戶端如何激活前面討論的Stock Trade Web Services,該例子使用了JAX-RPC API(JAX遠程處理應用程序接口函數),并且假設在讀者的CLASSPATH中已經含有了必要的BEA提供的JAR文件。這是一個靜態實現,在這里可獲得一個stub實現的實例。獲得stub實現后,Web Services的“execute”方法就會被激活。
  
  互操作性測試
  SOAP和Web Services的承諾之一就是互操作性。就是兩個應用系統可以自動交互而不需要人為的介入。Web Services未來成功的要害就在于互操作性。
  
  Web Services互操作性測試套件的目標應針對于測試以下方面:
  
  •服務器分析客戶端的SOAP包的能力。
  
  •服務器對包中所含的已編碼參數進行反串行化的能力。
  
  •客戶端對由服務器作為響應發送而來的SOAP包進行分析的能力。
  
  •客戶端對從服務器發回的已編碼參數進行反串行化的能力。
  
  測試模式
  對于一個WLS客戶和.NET Web Services:
  
  • 用Microsoft Visual Studio在目錄/InetPub/wwwroot/DotNetServices/下創建一個.NET Web Services。
  
  • 在WLS端,在為DotNetService 提供了WSDL URL后,用WebLlogic clientgen ant task生成一個clientjar。
  
  •從testclient,對JAVA Stub進行一次調用。
  
  WebLogic Server
  
  .NET Server
  
  .NET Web Service
  
  WLS Client
  
  // STOCK TRADE WEB SERVICE
  
  // The Stock Trade web service executes a trade and returns result.
  
  [WebMethod]
  
  public bool execute(string action, string symbol, int quantity)
  
  {
  
  if(action == null) {
  
  Console.WriteLine("action null");
  
  return false;
  
  }
  
  if(symbol == null) {
  
  Console.WriteLine("symbol null");
  
  return false;
  
  }
  
  if(action.Equals("BUY"))
  
  Console.WriteLine("BUYING quantity: "+ quantity + " of symbol:" + symbol);
  
  else if(action.Equals("SELL"))
  
  Console.WriteLine("SELLING quantity: "+ quantity + " of symbol:" + symbol);
  
  else {
  
  Console.WriteLine("INVALID action: "+ action);
  
  return false;
  
  }
  
  return true;
  
  }
  
  
  代碼摘錄:.NET Web Services
  上面摘錄的一段代碼是Stock Trade Web Services,它是前面所設計的WLS Web Services的.NET版。它用與JAVA非常相似的C#語言編寫。文件名是“StockTrade.asmx.cs”。
  
  代碼編寫完成后,在WebLogic服務器上部署WLS客戶程序,在.NET框架上部署.NET Web Services,驗證客戶端是否能調用Web Services。
  
  .NET客戶端和WLS Web 服務器端
  • 創建一個WLS Web Services(EAR文件)
  
  • 使用WLS Web 服務WSDL并通過運行wsdl.exe生成一個.NetClient Stub。這一過程將生成一個.cs文件,該文件包含對應于WSDL提供的Web Services的方法定義。
  
  • 另外一步是在Stub中定義一個新的構造函數,并將WSL URL作為一個參數。這一步是必須的,因為wsdl.exe所生成的Stub在缺省情況下指向USDL URL中的本地主機。
  
  • 創建一個.NetClient 類(另外一個.cs文件),該類實際上以WSDL URL作為構造函數參數。該類是一個代理類,它含有與Stub中所定義的相同的方法

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线观看视频免费| 亚洲情综合五月天| 久久久久国产精品一区| 欧美亚洲日本网站| 欧美高清在线观看| 亚洲人成伊人成综合网久久久| 国外成人性视频| 亚洲性猛交xxxxwww| 久久精品小视频| 91高潮在线观看| 国产精品视频色| 在线观看成人黄色| 欧美日韩第一视频| 国产精品久久91| 欧美综合第一页| 日韩精品久久久久| 综合网日日天干夜夜久久| 国产一区二区日韩| 91国内揄拍国内精品对白| 欧美成人小视频| 精品偷拍各种wc美女嘘嘘| 久久久久久久久久久亚洲| 91av在线网站| 欧美极品少妇xxxxⅹ免费视频| 97视频在线观看视频免费视频| 国产精品一区二区性色av| 北条麻妃一区二区在线观看| 国产精品美女免费| 亚洲视频一区二区| 疯狂做受xxxx高潮欧美日本| 日韩国产精品亚洲а∨天堂免| 亚洲伊人一本大道中文字幕| 久久久精品国产网站| 国产欧亚日韩视频| 欧美激情亚洲综合一区| 热99久久精品| 精品国产美女在线| 九九久久久久久久久激情| 国产98色在线| 欧美猛交ⅹxxx乱大交视频| 国内精品免费午夜毛片| 全色精品综合影院| 美女精品久久久| 黄色精品在线看| 久久精品视频在线观看| 国产欧美日韩综合精品| 国产精品免费久久久| 色中色综合影院手机版在线观看| 欧美日韩综合视频网址| 97国产成人精品视频| 亚洲一区美女视频在线观看免费| 日韩精品久久久久久福利| 国产精品成av人在线视午夜片| 欧美猛少妇色xxxxx| 91精品国产成人| 久久高清视频免费| 国产精品日韩精品| 成人黄色片在线| 日韩av男人的天堂| 日韩在线免费视频观看| 日本高清不卡在线| 91精品国产91久久久久福利| 色综合视频网站| 日韩精品一区二区三区第95| 亚洲午夜未满十八勿入免费观看全集| 国产精品十八以下禁看| 日韩国产激情在线| 久久久久久高潮国产精品视| 精品国产欧美一区二区三区成人| 欧美一区二区大胆人体摄影专业网站| 91影院在线免费观看视频| 亚洲国产精久久久久久久| 日韩精品中文字| 欧美野外猛男的大粗鳮| 国内精品一区二区三区| 黑人巨大精品欧美一区二区免费| 在线性视频日韩欧美| 国产精品免费电影| 国产99久久久欧美黑人| 国产精品美女av| 欧美亚洲另类激情另类| 久久这里只有精品99| 欧美日韩国产精品专区| 伊人av综合网| 国产精品亚洲欧美导航| 欧美黄色成人网| 亚洲第一区在线观看| 亚洲国产日韩欧美在线99| 欧美xxxx做受欧美.88| 神马久久桃色视频| 国产国语刺激对白av不卡| 亚洲欧美精品suv| 精品国产福利在线| 欧美福利小视频| 精品国偷自产在线视频99| 日韩av在线精品| 午夜精品久久久久久久久久久久久| 97国产suv精品一区二区62| 日韩视频免费大全中文字幕| 亚洲人精选亚洲人成在线| 91网站免费观看| 欧美日韩亚洲一区二区| xvideos亚洲| 精品无人区太爽高潮在线播放| 日韩中文字幕在线播放| 欧美高清视频在线播放| 久久人人97超碰精品888| 国产精品99免视看9| 中文在线不卡视频| 欧美黑人国产人伦爽爽爽| 深夜福利国产精品| 欧美极品少妇xxxxx| 国产日本欧美一区| 亚州欧美日韩中文视频| 久久国产精品视频| 亚洲激情第一页| 亚洲精品456在线播放狼人| 国产99在线|中文| 日韩电影在线观看免费| 亚洲天堂av电影| 91欧美精品午夜性色福利在线| 欧美一区二区三区四区在线| 91高清免费在线观看| 亚洲欧美综合精品久久成人| 久久精品国产一区二区电影| 91免费观看网站| 欧美日韩国产页| 欧美亚洲免费电影| 国产激情综合五月久久| 国产精品美女无圣光视频| 国模精品视频一区二区| 2024亚洲男人天堂| 狠狠色狠狠色综合日日小说| 亚洲永久在线观看| 成人免费淫片aa视频免费| 91高清视频免费| 国产成人一区二区| 精品国产乱码久久久久酒店| 中文字幕在线日韩| 国产视频在线一区二区| 色综合久久久888| 中文字幕亚洲欧美日韩2019| 亚洲国产欧美一区二区三区同亚洲| 国产手机视频精品| 久久视频在线看| 日韩欧美一区二区在线| 国外日韩电影在线观看| 久久影院中文字幕| 久久精品99久久香蕉国产色戒| 精品国产一区av| 欧美乱妇高清无乱码| 欧美精品在线视频观看| 日本高清视频精品| 日韩的一区二区| 亚洲色图18p| 国产99久久精品一区二区永久免费| 国产欧美va欧美va香蕉在线| 性色av香蕉一区二区| 人人爽久久涩噜噜噜网站| 国产精品无av码在线观看| 国产成+人+综合+亚洲欧洲| 亚洲香蕉av在线一区二区三区| 久久人人爽人人爽人人片亚洲| 欧美亚洲在线播放|