• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 測試技術
    • 博客
    • 視頻
    • 開源
    • 論壇
    • 沙龍
    • 下載
    • 雜志
    • 招聘

    字號: | 推薦給好友 上一篇 | 下一篇

    開發一個基于 JUnit 的存儲過程自動化測試的 Eclipse 插件

    發布: 2008-5-20 16:17 | 作者: 李嘉濤 張俊青 趙雄偉 | 來源: IBM | 查看: 151次 | 進入領測軟件測試網論壇討論

    領測軟件測試網 軟件測試技術門戶*X1o9p]}T?)h

    軟件測試技術門戶9F,|8c;{Xw O

    -p:Ij\/phd4 如何解決這些問題?

    w0C4z:|&bu 軟件測試技術門戶'Dt ^6`7qA

    既然進行存儲過程單元測試的原始方式有如此多的問題,那我們該如何改進這種測試方式以解決這些問題呢。下面我們就來分析解決問題的方法。軟件測試技術門戶)t's"M1nTN HW

    • 測試效率低下的問題軟件測試技術門戶*jEj2^$^d*I
      為了解決測試效率低下的問題,我們可否使用成熟的自動化測試技術呢。答案是肯定的。目前,針對 Java 代碼的單元測試已經有了很多的測試框架,例如JUnit, Cactus, StrutsTestCase 等,也有針對 SQL 測試的 DbUnit。軟件測試技術門戶6\"aZ"S,J#A j
      JUnit 是由 Erich Gamma 和 Kent Beck 編寫的一個回歸測試框架(Regression testing framework)。JUnit 測試是由程序員進行的測試,即白盒測試,因為程序員知道被測試的軟件如何(How)完成功能和完成什么樣(What)的功能。測試代碼只要繼承 TestCase 類,就可以用 JUnit 進行自動測試了。軟件測試技術門戶 G'Z_ J!wk%V?9R6O"l
      Cactus 是一個基于 JUnit 框架的簡單測試框架,用來單元測試服務端 Java代碼,我們這里不需要。軟件測試技術門戶] \;H Y#DpM
      DbUnit 是為數據庫驅動的項目提供的一個對 JUnit 的擴展,它針對的是普通的 SQL 語句測試,對我們的存儲過程測試并不適用。經過初步的分析,我們決定使用 JUnit。
    • 回歸測試的問題
      ^0D{"Ka%^AJ1w為了利用 JUnit 帶來的高效率,我們首先需要改變被測存儲過程的調用方式,即從手工調用,改為使用 JDBC 來調用。這樣的話,我們把一個個存儲過程的調用寫成了 Java 代碼,以后需要進行回歸測試時,只需要運行這些 Java測試代碼就可以了。
      N ]&P]0cjc8W但是直接使用 JUnit,也會是一個痛苦的過程,因為我們必須在每段測試代碼中編寫連接數據庫的代碼,也得寫調用存儲過程時的一大堆參數設置代碼,還得寫很多 try{} catch{} 代碼塊。對于存儲過程測試來說,這些代碼就顯得非常累贅了,于是我們得想辦法把這些操作封裝為一個公用的類,我們只需要在測試代碼中提供數據庫連接信息、存儲過程名字和參數值就可以了,其他的工作由這個公用的類負責處理,這樣又能進一步減輕開發人員的工作量。
      ,x g mt[q有了用Java語言編寫的基于 JUnit 框架的存儲過程測試代碼后,回歸測試問題也就迎刃而解了。這時,程序員需要的只是運行這個 JUnit 測試類即可。
    • 測試結果的問題軟件測試技術門戶E {gSH&i9C"[-P
      接下來該解決測試結果的不直觀問題和需要手工生成的問題了。手工方式下,我們能夠得到的只是黑屏幕上顯示的文本結果,我們需要把這些返回信息摘錄出來,再形成報告,繁瑣而又枯燥。有了 JUnit 測試代碼之后,我們就可以直接形成報告了。辦法就是將測試結果存儲為 XML 文檔,配合以 XSL 樣式文件,我們可以在瀏覽器中看到漂亮的測試報告了。而測試結果可以包括存儲過程運行的時間、返回的記錄數、調用的參數列表或者出錯信息等。軟件測試技術門戶IU&Pl 老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

    • <ruby id="5koa6"></ruby>
      <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

      <progress id="5koa6"></progress>

    • <strong id="5koa6"></strong>