<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>

            軟件測試中使用HttpUnit進(jìn)行集成測試

            發(fā)表于:2009-11-11來(lái)源:作者:點(diǎn)擊數: 標簽:軟件測試HttpUnithttpunit
            軟件測試 中使用HttpUnit進(jìn)行集成測試 [內容摘要] HttpUnit是一個(gè)集成 測試工具 ,主要關(guān)注Web應用的測試,提供的幫助類(lèi)讓測試者可以通過(guò) Java 類(lèi)和 服務(wù)器 進(jìn)行交互,并且將服務(wù)器端的響應當作文本或者DOM對象進(jìn)行處理。HttpUnit還提供了一個(gè)模擬Servlet容

            軟件測試中使用HttpUnit進(jìn)行集成測試

            [內容摘要] HttpUnit是一個(gè)集成測試工具,主要關(guān)注Web應用的測試,提供的幫助類(lèi)讓測試者可以通過(guò)Java類(lèi)和服務(wù)器進(jìn)行交互,并且將服務(wù)器端的響應當作文本或者DOM對象進(jìn)行處理。HttpUnit還提供了一個(gè)模擬Servlet容器,讓你可以不需要發(fā)布Servlet,就可以對Servlet的內部代碼進(jìn)行測試。本文中作者將詳細的介紹如何使用HttpUnit提供的類(lèi)完成集成測試。

            關(guān)鍵詞: httpunit 集成測試
             1 HttpUnit簡(jiǎn)介
             HttpUnit是SourceForge下面的一個(gè)開(kāi)源項目,它是基于JUnit的一個(gè)測試框架,主要關(guān)注于測試Web應用,解決使用JUnit框架無(wú)法對遠程Web內容進(jìn)行測試的弊端。當前的最新版本是1.5.4。為了讓HtpUnit正常運行,你應該安裝JDK1.3.1或者以上版本。

             1.1 工作原理
             HttpUnit通過(guò)模擬瀏覽器的行為,處理頁(yè)面框架(frames),cookies,頁(yè)面跳轉(redirects)等。通過(guò)HttpUnit提供的功能,你可以和服務(wù)器端進(jìn)行信息交互,將返回的網(wǎng)頁(yè)內容作為普通文本、XML Dom對象或者是作為鏈接、頁(yè)面框架、圖像、表單、表格等的集合進(jìn)行處理,然后使用JUnit框架進(jìn)行測試,還可以導向一個(gè)新的頁(yè)面,然后進(jìn)行新頁(yè)面的處理,這個(gè)功能使你可以處理一組在一個(gè)操作鏈中的頁(yè)面。

             1.2 和其他商業(yè)工具的對比
             商業(yè)工具一般使用記錄、回放的功能來(lái)實(shí)現測試,但是這里有個(gè)缺陷,就是當頁(yè)面設計被修改以后,這些被記錄的行為就不能重用了,需要重新錄制才能繼續測試。

             舉個(gè)例子:如果頁(yè)面上有個(gè)元素最先的設計是采用單選框,這個(gè)時(shí)候你開(kāi)始測試,那么這些工具記錄的就是你的單項選擇動(dòng)作,但是如果你的設計發(fā)生了變化,比如說(shuō)我改成了下拉選擇,或者使用文本框接受用戶(hù)輸入,這時(shí)候,你以前錄制的測試過(guò)程就無(wú)效了,必須要重新錄制。
            而HttpUnit因為關(guān)注點(diǎn)是這些控件的內容,所以不管你的外在表現形式如何變化,都不影響你已確定測試的可重用性。

            更多的關(guān)于httpunit的信息請訪(fǎng)問(wèn)httpunit的主頁(yè) http://httpunit.sourceforge.net/

             2 作者的演示環(huán)境
             系統平臺:Windows 2000 Sercver
             應用服務(wù)器:深圳金蝶的apusic3.0
             開(kāi)發(fā)工具: eclipse 2.1.2
             說(shuō)明: 所有的代碼請下載作者提供的code.jar文件。

             3 HttpUnit安裝、環(huán)境配置
             3.1 安裝
             1. 到HttpUnit的主頁(yè) http://httpunit.sourceforge.net 下載最新的包文件,當前的最新版本是1.5.4。/
             2. 將下載。Zip包解壓縮到c:/httpunit(后面將使用%httpunit_home%引用該目錄)
             
             3.2 環(huán)境配置
             作者的演示程序都是在eclipse中開(kāi)發(fā)、執行的,所以環(huán)境配置都是以eclipse為例,如果你使用其他的開(kāi)發(fā)工具,請根據這些步驟進(jìn)行環(huán)境配置。

             1. 啟動(dòng)eclipse,建立一個(gè)java工程
             2. 將%httpunit_home%/lib/*.jar; %httpunit_home%/jars/*.jar加入到該java工程的Java build Path變量中
             
             4 如何使用httpunit處理頁(yè)面的內容
             WebConversation類(lèi)是HttpUnit框架中最重要的類(lèi),它用于模擬瀏覽器的行為。其他幾個(gè)重要的類(lèi)是:
             WebRequest 模仿客戶(hù)請求,通過(guò)它可以向服務(wù)器發(fā)送信息
             WebResponse 模擬瀏覽器獲取服務(wù)器端的響應信息

             4.1 獲取指定頁(yè)面的內容

             4.1.1 直接獲取頁(yè)面內容

            clearcase/" target="_blank" >cccccc>System.out.println("直接獲取網(wǎng)頁(yè)內容:");
             // 建立一個(gè)WebConversation實(shí)例
             WebConversation wc = new WebConversation();
             // 向指定的URL發(fā)出請求,獲取響應
             WebResponse wr = wc.getResponse( " http://localhost:6888/HelloWorld.html " );
             // 用getText方法獲取相應的全部?jì)热?
             // 用System.out.println將獲取的內容打印在控制臺上
             System.out.println( wr.getText() );

            4.1.2 通過(guò)Get方法訪(fǎng)問(wèn)頁(yè)面并且加入參數
             System.out.println("向服務(wù)器發(fā)送數據,然后獲取網(wǎng)頁(yè)內容:");

            //建立一個(gè)WebConversation實(shí)例
             WebConversation wc = new WebConversation();
             //向指定的URL發(fā)出請求
             WebRequest req = new GetMethodWebRequest( " http://localhost:6888/HelloWorld.jsp " );
             //給請求加上參數
             req.setParameter("username","姓名");
             //獲取響應對象
             WebResponse resp = wc.getResponse( req );

            //用getText方法獲取相應的全部?jì)热?
             //用System.out.println將獲取的內容打印在控制臺上
             System.out.println( resp.getText() );

            4.1.3 通過(guò)Post方法訪(fǎng)問(wèn)頁(yè)面并且加入參數
             System.out.println("使用Post方式向服務(wù)器發(fā)送數據,然后獲取網(wǎng)頁(yè)內容:");

            //建立一個(gè)WebConversation實(shí)例
             WebConversation wc = new WebConversation();
             //向指定的URL發(fā)出請求
             WebRequest req = new PostMethodWebRequest( " http://localhost:6888/HelloWorld.jsp " );
             //給請求加上參數
             req.setParameter("username","姓名");
             //獲取響應對象
             WebResponse resp = wc.getResponse( req );

            //用getText方法獲取相應的全部?jì)热?
             //用System.out.println將獲取的內容打印在控制臺上
             System.out.println( resp.getText() );

            大家關(guān)注一下上面代碼中打了下劃線(xiàn)的兩處內容,應該可以看到,使用Get、Post方法訪(fǎng)問(wèn)頁(yè)面的區別就是使用的請求對象不同。

             4.2 處理頁(yè)面中的鏈接
             這里的演示是找到頁(yè)面中的某一個(gè)鏈接,然后模擬用戶(hù)的單機行為,獲得它指向文件的內容。比如在我的頁(yè)面HelloWorld.html中有一個(gè)鏈接,它顯示的內容是TestLink,它指向我另一個(gè)頁(yè)面TestLink.htm. TestLink.htm里面只顯示TestLink.html幾個(gè)字符。
             下面是處理代碼:


             System.out.println("獲取頁(yè)面中鏈接指向頁(yè)面的內容:");
             //建立一個(gè)WebConversation實(shí)例
             WebConversation wc = new WebConversation();
             //獲取響應對象
             WebResponse resp = wc.getResponse( " http://localhost:6888/HelloWorld.html " );
             //獲得頁(yè)面鏈接對象
             WebLink link = resp.getLinkWith( "TestLink" );
             //模擬用戶(hù)單擊事件
             link.click();
             //獲得當前的響應對象
             WebResponse nextLink = wc.getCurrentPage();

            //用getText方法獲取相應的全部?jì)热?
             //用System.out.println將獲取的內容打印在控制臺上
             System.out.println( nextLink.getText() );

            4.3 處理頁(yè)面中的表格
             表格是用來(lái)控制頁(yè)面顯示的常規對象,在HttpUnit中使用數組來(lái)處理頁(yè)面中的多個(gè)表格,你可以用resp.getTables()方法獲取頁(yè)面所有的表格對象。他們依照出現在頁(yè)面中的順序保存在一個(gè)數組里面。
             [注意] Java中數組下標是從0開(kāi)始的,所以取第一個(gè)表格應該是resp.getTables()[0],其他以此類(lèi)推。
            下面的例子演示如何從頁(yè)面中取出第一個(gè)表格的內容并且將他們循環(huán)顯示出來(lái):
             System.out.println("獲取頁(yè)面中表格的內容:");

            //建立一個(gè)WebConversation實(shí)例
             WebConversation wc = new WebConversation();
             //獲取響應對象
             WebResponse resp = wc.getResponse( " http://localhost:6888/HelloWorld.html " );
             //獲得對應的表格對象
             WebTable webTable = resp.getTables()[0];
             //將表格對象的內容傳遞給字符串數組
             String[][] datas = webTable.asText();
             //循環(huán)顯示表格內容
             int i = 0 ,j = 0;
             int m = datas[0].length;
             int n = datas.length;
             while (i<n){
             j=0;
             while(j<m){
             System.out.println("表格中第"+(i+1)+"行第"+(j+1)+"列的內容是:"+datas[j]);
             ++j;
             }
             ++i;
             }

            原文轉自:http://kjueaiud.com

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>