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

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

為Web 應用程序創建測試用例

2019-11-18 16:13:50
字體:
來源:轉載
供稿:網友

  您是否正在尋找一種把自動測試技術應用到 Web 開發中的方法?那么不用再找了!jWebUnit 就是為 Web 應用程序創建測試用例的一個開源框架,它可以容易地插入到大多數 java IDE 中。通過使用一個示例應用程序,描述了生成簡潔測試用例的詳細步驟,軟件工程師 Amit Tuli 對 jWebUnit 進行了介紹。

自動測試可以節省重復執行相同測試步驟的時間和精力。本文將介紹 jWebUnit,這是一組 Java 類,用于為 Web 應用程序開發測試用例。jWebUnit 是一個開源項目,可以在 BSD 許可下免費獲得。我將介紹如何下載 jWebUnit 庫、配置 Eclipse 平臺來開發 jWebUnit 測試用例,以及如何構建一個示例測試用例。

jWebUnit 簡介
jWebUnit 以 HttpUnit(一個進行 Web 應用程序自動測試的 Java 庫)和 JUnit 單元測試框架為基礎(請參閱 參考資料)。jWebUnit 提供了導航 Web 應用程序的高級 API,并組合了一組斷言,用它們來驗證鏈接導航、表單輸入項和提交、表格內容以及其他典型商務 Web 應用程序特性的正確性。 jWebUnit 以 JAR 文件形式提供的,可以很容易地將它插入大多數 IDE 中,jWebUnit 也包含其他必要的庫。

用 HttpUnit 進行測試
對 Web 應用程序自動進行測試意味著跳過 Web 瀏覽器,通過程序來處理 Web 站點。首先,我要介紹 HttpUnit(JWebUnit 的構建塊之一)是如何簡化這項工作的。HttpUnit 可以模擬幀、Javascript、頁面重定向 cookie,等等。在將 HttpUnit 用于 JUnit 時,它可以迅速地對 Web 站點的功能進行驗證。

清單 1 顯示了一個用 HttpUnit 編寫的測試用例,它試圖單擊 HttpUnit 主頁上的“Cookbook”鏈接:

清單 1. 單擊 HttpUnit 主頁上 Cookbook 鏈接的 HttpUnit 代碼
1 public class HttpUnitTest {2  public static void main(String[] args) {3    try {4      WebConversation wc = new WebConversation();5      WebRequest request =             new GetMethodWebRequest("http://httpunit.sourceforge.net/index.Html");6      wc.set

清單 1 中的代碼用 your.proxy.com (第 6 行)連接 Internet。如果存在直接 Internet 連接,那么可以把這個語句注釋掉。第 8 行的語句在頁面中搜索包含文本 Cookbook 的 Web 鏈接。第 9 行的語句用于單擊這個鏈接。如果找到鏈接,那么用戶會看到 Test Successful !! 這條消息。

用 jWebUnit 進行的測試更簡單
清單 2 的測試用例用 jWebUnit API 執行和清單 1 相同的任務:

清單 2. 單擊 HttpUnit 主頁上 Cookbook 鏈接的 jWebUnit 代碼
1 public class JWebUnitTest extends WeBTestCase{2  public static void main(String[] args){3    junit.textui.TestRunner.run(new TestSuite(JWebUnitTest.class));4  }5  public void setUp(){6    getTestContext().setBaseUrl("http://httpunit.sourceforge.net");7    getTestContext().setProxyName("webproxy.watson.ibm.com");8    getTestContext().setProxyPort(8080);9  }10  public void testSearch(){11    beginAt("/index.html");12    clickLinkWithText("Cookbook");13  }14 }


如果沒注意清單 2 中特定于 JUnit 的代碼,那么您可以看到,測試用例現在變得相當整潔、簡練。需要查看的重要的行是第 6 行、第 11 行和第 12 行。在第 6 行,基本 URL 被設置到 HttpUnit 的主頁中。第 11 行用相對路徑 /index.html 連接站點。第 12 行用于單擊頁面上具有文本 Cookbook 的鏈接。如果鏈接有效,那么 JUnit 會報告成功;否則,JUnit 會報告異常。

jWebUnit API:進一步觀察
每個 jWebUnit 測試的核心都是 net.sourceforge.jwebunit.WebTestCase 類,它代表測試用例。每個測試用例都必須是從這個類擴展而來。(net.sourceforge.jwebunit.WebTestCase 類本身則是從 junit.framework.TestCase 類擴展而來的,它在 JUnit 中代表測試用例。) 表 1 描述了這個類的一些常用方法:

表 1. net.sourceforge.jwebunit.WebTestCase 類的重要方法
方法說明public TestContext getTestContext()得到測試用例的上下文。可以用它訪問像地區、基本 URL 和 cookie 之類的項目public void beginAt(String relativeURL)在相對于基本 URL 的 URL 處開始對話public void setWorkingForm(String nameOrId)與指定的表單開始交互。如果當前頁面只有一個表單,就不需要調用這個方法protected void submit()提交表單 —— 等同于單擊表單的 提交 按鈕public void gotoFrame(String frameName)激活命名幀

另一個重要的類是 net.sourceforge.jwebunit.TestContext。它為測試創建上下文??梢杂眠@個類來處理像 cookie、會話和授權之類的信息。表 2 顯示了這個類的一些重要方法:

表 2. net.sourceforge.jwebunit.TestContext 類的重要方法
方法說明public void addCookie(String name, String value)向測試上下文中添加 cookie。在 HttpUnitDialog 開始時,添加的 cookie 被設置到 WebConversation 上public void setResourceBundleName(String name)為測試上下文設置一個使用的資源綁定。用于按照 WebTester 中的鍵查找期望的值public void setProxyName(String proxyName)為測試上下文設置代理服務器名稱public void setBaseUrl(String url)為測試上下文設置基本 URL

下載 jWebUnit,在 Eclipse 中配置 jWebUnit
jWebUnit 是用純 Java 代碼實現的,所以可以以 JAR 文件的形式獲得它 (請參閱 參考資料,從中獲得下載鏈接)。在完成下載之后,請按以下步驟在 Eclipse 平臺上配置 jWebUnit 庫:

  1. 把下載的文件 jwebunit-1.2.zip 釋放到臨時目錄中(假設是 C:/temp)。
  2. 在 Eclipse 中創建新 Java 項目,將其命名為 jWebUnit。
  3. 右擊 Package EXPlorer 視圖中的 jWebUnit 項目,然后選擇 Properties
  4. 單擊 Java Build Path。單擊 Libraries 標簽中的 Add External JARs。
  5. 瀏覽到 C:/temp/jwebunit-1.2/lib 目錄,選擇這個目錄中的所有 JAR 文件。
  6. 單擊 OK。

現在可以在 Eclipse 中的 jWebUnit 項目下開發 jWebUnit 測試用例了。

構建示例應用程序
現在就可以查看 jWebUnit API 的實際應用了。我將帶您研究一個示例應用程序,幫助您更好地理解 jWebUnit 的真正威力。這個應用程序是一個測試用例,用于打開一個 Google 搜索頁面并搜索文本 HttpUnit。應用程序需要測試以下場景:

  • 打開 Google 主頁 http://www.google.com。

  • 確定該頁包含一個名為 q 的表單元素。(在 Google 的主頁上,名為 q 的文本框是接受用戶查詢輸入的文本框。)應用程序用這個元素輸入搜索參數。

  • 在搜索文本框中輸入字符串 HttpUnit Home,并提交表單。

  • 獲得結果頁,并確定該頁面包含的鏈接中包含文本 HttpUnit Home。

  • 單擊包含文本 HttpUnit Home 的鏈接。


現在測試場景已經就緒,可以編寫 Java 應用程序,用 jWebUnit 實現這些需求了。

第一步是聲明一個從 WebTestCase 擴展而來的類,如清單 3 所示:

清單 3. 聲明測試用例類
public class GoogleTest extends WebTestCase {   static String searchLink = "";}

正如我在前面提到過的,jWebUnit 要求每個測試用例都是從 WebTestCase 中擴展而來的。searchLink 保存傳入的搜索參數。這個值以命令行參數的形式傳遞給測試用例。

下一步是聲明入口點 —— main() 方法,如清單 4 所示:

清單 4. main() 方法
public static void main(String[] args) {   searchLink = args[0];   junit.textui.TestRunner.run(new TestSuite(GoogleTest.class));}

main() 方法調用 junit.textui.TestRunner.run() 執行 JTest 測試用例。因為需要運行 GoogleTest 測試用例,所以,作為參數傳遞給 run() 方法的測試套件采用 GoogleTest.class 作為參數。

接下來,JTest 調用 setUp() 方法來設置基本 URL 和代理,如清單 5 所示:

清單 5. 設置
public void setUp() {   getTestContext().setBaseUrl("http://www.google.com");   getTestContext().setProxyName("proxy.host.com");   getTestContext().setProxyPort(80);}

清單 5 把基本 URL 設置為 http://www.google.com。這意味著測試用例的啟動是相對于這個 URL 的。下面兩個語句設置連接到 Internet 的代理主機和代理端口。如果是直接連接到 Internet,那么可以忽略代理設置語句。

現在開始瀏覽站點并輸入搜索參數。清單 6 顯示了訪問 Web 頁面,然后測試所有場景的代碼:

清單 6. 測試所有場景
public void testSearch() {   beginAt("/");   assertFormElementPresent("q");   setFormElement("q", "HttpUnit");   submit("btnG");   assertLinkPresentWithText(searchLink);   clickLinkWithText(searchLink);}

清單 6 的代碼連接到基本 URL,并相對于 / 開始瀏覽。然后它斷定頁面中包含一個名為 q 的表單元素 —— q 是 Google 主頁上查詢輸入文本框的名稱。下一條語句用值 HttpUnit 設置名為 q 的文本框。再下一條語言提交表單上名為 btnG 的提交按鈕。(在 Google 的主頁上,名為 btnG 的按鈕是標簽為 Google Search 的按鈕。)表單是在這個對話中提交的,下一頁列出搜索結果。在結果頁面上,代碼首先檢查是否有一個鏈接的文本是 HttpUnit Home。如果該鏈接不存在,那么測試就以 AssertionFailedError 失敗。如果該鏈接存在,則測試執行的下一個操作是單擊鏈接。

運行示例應用程序
現在把示例應用程序投入使用當中:

  1. 下載示例應用程序 j-webunitsample.jar (請參閱 下載)。

  2. 在一個目錄中解壓縮 j-webunitsample.jar。例如,如果把它釋放到 C:/temp 中,那么就要把源文件和類文件放在 C:/temp/com/jweb/test 中,而 setclasspth.bat 則放在 C:/temp 中。

  3. 編輯 setclasspath.bat:設置 JAR_BASE 指向包含所有必需 JAR 文件的目錄。例如,如果在 C:/temp 中釋放 jwebunit-1.2.zip 文件,那么將 JAR_BASE 設置為 C:/temp/jwebunit-1.2/lib。

  4. 打開命令行提示符,切換到 C:/temp 目錄。

  5. 執行 setclasspath.bat。這會設置執行測試用例所需的 CLASSPATH。

  6. 用命令 java com.jweb.test.GoogleTest "HttpUnit Home" 運行應用程序。

示例輸出
在執行了測試用例之后,會在命令行輸出一個測試用例報告。如果測試失敗,報告看起來如清單 7 中所示:

清單 7. 帶有斷言失敗的輸出
C:/temp>java com.jweb.test.GoogleTest "HttpUnit Hwee".FTime: 5.338There was 1 failure:1) testSearch(com.jweb.test.GoogleTest)junit.framework.AssertionFailedError: Link   with text [HttpUnit Hwee] not found in response.at net.sourceforge.jwebunit.WebTester.assertLinkPresentWithText(WebTester.java:618)at net.sourceforge.jwebunit.WebTestCase.assertLinkPresentWithText(WebTestCase.java:244)        at com.jweb.test.GoogleTest.testSearch(GoogleTest.java:36)        at sun.reflect.NativeMethodaccessorImpl.invoke0(Native Method)        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)        at com.jweb.test.GoogleTest.main(GoogleTest.java:19)FAILURES!!!Tests run: 1,  Failures: 1,  Errors: 0


正如在清單 7 中可以看到的,可以用 HttpUnit Hwee 作為參數來執行測試用例。這個測試用例遇到斷言的地方會失敗,因為結果頁面中不包含帶有這個文本的鏈接。由此也就產生了junit.framework.AssertionFailedError。

清單 8 執行時用 HttpUnit Home 作為參數。測試用例找到一個帶有這個文本的鏈接,所以測試通過了:

清單 8. 成功測試的輸出
C:/temp>java com.jweb.test.GoogleTest "HttpUnit Home".Time: 6.991OK (1 test)

結束語
本文通過討論 jWebUnit 框架的一些突出特性和最重要的類,介紹如何用它創建簡潔的測試用例,讓您對 jWebUnit 框架有一個認識。jWebUnit 還有更多特性可以用在測試用例中。它支持測試 Web 頁面中的鏈接行數??梢詫ψ址?、表或者帶有指定標簽的表單輸入元素是否存在于頁面上進行斷言。此外,jWebUnit 還可以處理 cookie (例如斷言存在某個 cookie、刪除 cookie 等。)測試可以對某個文本之后出現的特定文本的鏈接進行單擊。 如果想為 Web 應用程序構建快而有效的測試用例,jWebUnit 可能是您最好的朋友。

(出處:http://www.49028c.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美理论电影在线观看| 精品亚洲一区二区三区| 欧美日韩激情视频8区| 亚洲欧洲日产国产网站| 在线视频免费一区二区| 国产成人精品a视频一区www| 亚洲第一福利视频| 欧美综合一区第一页| 日韩有码在线电影| 91免费国产网站| 亚洲第一黄色网| 成人国内精品久久久久一区| 国产在线视频一区| 国产69精品久久久久9| 日韩视频―中文字幕| 亚洲午夜精品久久久久久性色| 欧美精品手机在线| 久久亚洲精品国产亚洲老地址| 国产精品日韩在线播放| 国产欧美一区二区三区久久| 亚洲成人av在线| 久久久久久中文字幕| 97精品国产aⅴ7777| 亚洲欧美激情在线视频| 日韩的一区二区| 亚洲女人被黑人巨大进入| 久久黄色av网站| 亚洲精品在线看| 国产精品电影在线观看| 91中文在线观看| 国产精品永久在线| 91欧美日韩一区| 亚洲精品97久久| 欧美电影在线播放| 亚洲人精选亚洲人成在线| 欧美黑人一级爽快片淫片高清| 九九热精品视频在线播放| 操人视频在线观看欧美| 91欧美日韩一区| 久久久亚洲成人| 亚洲在线视频观看| 欧美激情a∨在线视频播放| 永久免费毛片在线播放不卡| 国产欧美一区二区三区视频| 久久国内精品一国内精品| 国产网站欧美日韩免费精品在线观看| 亚洲成av人乱码色午夜| 国产精品永久免费视频| 欧美日韩免费区域视频在线观看| 国产精品va在线| 中文字幕亚洲一区二区三区| 国产精品观看在线亚洲人成网| 亚洲剧情一区二区| 亚洲激情视频在线播放| 97成人精品区在线播放| 亚洲日韩中文字幕在线播放| 欧美日韩免费在线观看| 国产成人久久久精品一区| 在线观看欧美日韩国产| 久久久久久久久久久成人| 麻豆成人在线看| 久久精品夜夜夜夜夜久久| 国产精品久久久久久久av大片| 91精品综合久久久久久五月天| 中文字幕亚洲欧美一区二区三区| 亚洲第一男人天堂| 国内精品一区二区三区四区| 日韩视频精品在线| 在线观看91久久久久久| 美日韩丰满少妇在线观看| 69久久夜色精品国产69| 在线观看国产欧美| 国产精品黄页免费高清在线观看| 91欧美精品成人综合在线观看| 亚洲国产成人精品女人久久久| 黄色91在线观看| 国产精品美女久久| 国产在线高清精品| 欧美激情一区二区三区高清视频| 国产精品色视频| 亚洲第一国产精品| 91精品久久久久久久久久久久久| 国产视频综合在线| 国产精品视频久久| 91在线网站视频| 欧美日韩成人在线视频| 国产91色在线|| 国产欧美精品一区二区三区-老狼| 国产一区二区黑人欧美xxxx| 日韩在线国产精品| 日韩美女视频中文字幕| 一本色道久久88综合日韩精品| 亚洲精品美女久久久| 日韩美女在线观看一区| 性金发美女69hd大尺寸| 不卡av在线播放| 精品国产欧美一区二区五十路| 欧美视频免费在线| 久久久国产在线视频| 狠狠色狠狠色综合日日五| 国产精品三级网站| 91精品视频网站| 亚洲第一精品电影| 亚洲一区中文字幕在线观看| 久久精品免费播放| 亚洲人成在线播放| 亚洲最新av在线| 久久激情视频免费观看| 欧美亚洲另类制服自拍| 一本色道久久88综合亚洲精品ⅰ| 久久久久久久久久久av| 欧美性精品220| 精品一区二区三区四区在线| 日韩中文字幕在线视频播放| 日韩精品在线观看视频| 国产精品99导航| 成人乱人伦精品视频在线观看| 国产精品久久电影观看| 中文字幕亚洲欧美在线| 国产精品一区二区三区在线播放| 亚洲国产91色在线| 久久久亚洲天堂| 欧美性猛交xxxx乱大交| 国产精品96久久久久久| 国产精品美乳在线观看| 久久97久久97精品免视看| 日韩精品免费一线在线观看| 亚洲女人天堂成人av在线| 久久视频这里只有精品| 久久视频在线免费观看| 久久精品99久久久香蕉| 成人美女免费网站视频| 欧美性猛交xxxx黑人| 国产亚洲精品一区二区| 亚洲精品欧美一区二区三区| 日韩视频在线观看免费| 国产精品91在线观看| 亚洲国产精品高清久久久| 亚洲免费精彩视频| 97人人模人人爽人人喊中文字| 北条麻妃99精品青青久久| 91在线观看免费网站| 欧美午夜视频在线观看| 国产欧美精品在线| 久久视频免费观看| 亚洲成人黄色在线观看| 国产欧美日韩中文字幕| 久久久久成人网| 中文字幕欧美专区| 亚洲最大激情中文字幕| 亚洲香蕉成视频在线观看| 国产日韩欧美综合| 中文字幕在线看视频国产欧美在线看完整| 久久av.com| 久久久久久亚洲精品| 伊人久久精品视频| 成人免费淫片aa视频免费| 日韩在线视频中文字幕| 亚洲图片制服诱惑| www.99久久热国产日韩欧美.com| 日韩免费在线视频| 亚洲大胆美女视频| 日韩中文理论片| 欧美日本在线视频中文字字幕|