<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    測試

    1、測試數(shù)據(jù)/運行數(shù)據(jù)的互不影響
          在做測試時,通常都需要生成測試數(shù)據(jù),在測試運行完后又要進行測試數(shù)據(jù)的刪除工作,當測試和運行用的是同一個庫的情況下就很容易出現(xiàn)測試數(shù)據(jù)和運行數(shù)據(jù)互相影響的現(xiàn)象,這個時候在寫測試的時候就要特別的注意了,既不能讓運行數(shù)據(jù)影響了測試的結(jié)果,又不能讓測試數(shù)據(jù)影響到了運行數(shù)據(jù)。
          通常來說,為了解決這個問題,會采用測試庫和運行庫分開的方式,采取這種方式的情況下就比較簡單了,不過有些時候還是挺麻煩的,畢竟要創(chuàng)建數(shù)據(jù)、刪除數(shù)據(jù)。
          還有一種特殊的情況,例如一個這樣的項目:
          項目已經(jīng)上線運行了,這個時候做了一個新的流程,在部署了新的流程到運行環(huán)境后,通常需要在運行環(huán)境中測試一下,這個時候問題就出現(xiàn)了,測試數(shù)據(jù)和運行數(shù)據(jù)并行,這個時候就要充分的考慮測試數(shù)據(jù)和運行數(shù)據(jù)的互不影響。
          當然,上面的項目的情況是一個比較特殊的情況,就像icecloud說的,項目規(guī)劃的好的話是會有測試環(huán)境和運行環(huán)境的不同的,測試環(huán)境需要和運行環(huán)境完全一致,在有新增的東西需要部署到運行環(huán)境時先在測試環(huán)境進行測試,測試沒問題后再通過升級腳本部署到運行環(huán)境中。
          這些方法確實是可以解決測試數(shù)據(jù)/運行數(shù)據(jù)的互相影響的問題,不過覺得還是有些的麻煩,覺得如果有一個工具可以幫忙避免測試數(shù)據(jù)/運行數(shù)據(jù)的互相影響,同時又可以讓你在寫測試的時候很容易的創(chuàng)建測試數(shù)據(jù),又不用擔心其他測試數(shù)據(jù)或運行數(shù)據(jù)對它造成影響,最后測試數(shù)據(jù)又可以安全的被清除,^_^,有個這樣的工具就好了.........
           或者說大家在實際中碰到測試數(shù)據(jù)/運行數(shù)據(jù)并行的情況下會怎么辦呢..
    2、單元測試
          一直以來都實行TDD,不過發(fā)現(xiàn)我做單元測試的方法仍然不正確,盡管在測試的基本原則---"測試一定情況下單元的執(zhí)行是否和預期一致"上是正確的,但進行單元測試的方法并不正確,就像robbin所說,我做的是集成測試,因為我做單元測試時會去把該單元依賴的其他的對象所需要的東西也去進行模擬,這樣說起來可能過于生澀了,舉個例子吧:
          有一個服務類,該服務類依賴一個Dao類,通過Dao從數(shù)據(jù)庫中獲取相關的信息后進行處理,我以前做單元測試的做法就是首先產(chǎn)生出測試數(shù)據(jù),由Dao先將測試數(shù)據(jù)進行持久,之后再通過調(diào)用服務類的方法去執(zhí)行,"一定的情況"通常都是由測試數(shù)據(jù)來控制,這點沒什么不對,就是控制所測試的單元的輸入。
          測試的基本原則都是檢查在一定的輸入的情況下輸出是否符合預期,作為單元測試而言上面的做法不正確的地方就是去產(chǎn)生測試數(shù)據(jù)并由Dao先持久,其實作為單元測試而言,只需要測試當前對象執(zhí)行的正確性,也就是說它已經(jīng)假設了它所依賴的其他的對象產(chǎn)生的結(jié)果,這樣的單元測試才是有意義的,而且也變得更容易寫了,之前我所采用的那種測試其實是集成測試....
           這樣說了后其實就很容易理解單元測試了,仍然是上面的服務類,它的單元測試的寫法應該是去Mock出Dao執(zhí)行的結(jié)果,當然,這個時候就要模擬Dao在返回幾種情況下服務的執(zhí)行情況了,這個是正常的,就是去控制服務的輸入,^_^,這樣可以看到,其實在單元測試中是不會出現(xiàn)多少測試數(shù)據(jù)的情況的,除了Dao,而且也不用去關心其所依賴的對象的執(zhí)行的正確與否,以及所依賴的對象是不是還依賴別的對象,^_^,可以保證測試的范圍就是本單元。
            這樣做的潛在好處還在于會促進面向接口的編程,^_^
    3、集成測試
          集成測試就是需要創(chuàng)建出所依賴的對象的環(huán)境的一種測試方法,其實在有了單元測試的情況下,集成測試就可以完全的從系統(tǒng)的入口進行測試,例如B/S系統(tǒng)來講,它的入口都是頁面,也就是我們可以通過頁面來進行測試,這個時候可以看到,測試數(shù)據(jù)的問題又產(chǎn)生了...
          當然,對于有些集成測試是需要編寫代碼的,這個時候就需要創(chuàng)建出入口對象所依賴的對象(以及它所依賴的對象)的環(huán)境,最后才能調(diào)用入口對象的方法進行測試,這樣就完成集成測試了。

    posted on 2006-03-08 13:20 BlueDavy 閱讀(1483) 評論(3)  編輯  收藏 所屬分類: Java

    評論

    # re: 測試 2006-03-08 16:05 GHawk

    我們的項目也正為測試的問題而焦頭爛額。對OO的誤解和缺乏接口設計,導致無法寫出簡單清晰的單元測試,現(xiàn)在的單元測試成了Bottom-Up的集成測試,而且在測試系統(tǒng)異常捕獲邏輯的時候無能為力……  回復  更多評論   

    # re: 測試 2006-03-08 22:37 BlueDavy

    恩,其實考慮測試就自然能改進設計,^_^,這也是TDD的本意!  回復  更多評論   

    # re: 測試 2006-03-09 13:21 lingate

    很好的短文,除了MOCK的方法以外,還可以使用,先將數(shù)據(jù)輸入數(shù)據(jù)庫或者表,然后導出一個數(shù)據(jù)庫或者表的備份,回頭在測試前將數(shù)據(jù)庫恢復到這個導出時狀態(tài)。并且可以根據(jù)測試不同要求建立不同的備份。  回復  更多評論   

    公告

     









    feedsky
    抓蝦
    google reader
    鮮果

    導航

    <2006年3月>
    2627281234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統(tǒng)計

    隨筆分類

    隨筆檔案

    文章檔案

    Blogger's

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 成年轻人网站色免费看| 日韩人妻一区二区三区免费| 国产h视频在线观看免费| 亚洲毛片在线观看| 亚洲精品免费在线观看| 亚洲宅男永久在线| xxxx日本免费| 久久精品国产亚洲αv忘忧草| 1区2区3区产品乱码免费| 亚洲中文字幕在线无码一区二区| 99无码人妻一区二区三区免费| 亚洲国产美女福利直播秀一区二区| 亚洲视频在线免费看| 国产成人精品日本亚洲11| 最近高清国语中文在线观看免费| 亚洲日韩AV一区二区三区中文| 成人a视频片在线观看免费| 在线观看亚洲网站| 亚洲女人被黑人巨大进入| 99re6在线精品免费观看| 亚洲AV无码成人精品区天堂 | 88av免费观看| 亚洲狠狠成人综合网| 亚洲国产成人影院播放| 成全动漫视频在线观看免费高清版下载| 亚洲春色在线视频| 大学生一级毛片免费看| 少妇亚洲免费精品| 亚洲精品视频在线| 免费精品一区二区三区在线观看| www永久免费视频| 18亚洲男同志videos网站| 午夜神器成在线人成在线人免费 | 久久精品国产大片免费观看| 亚洲a∨无码男人的天堂| 日本不卡免费新一二三区| 97人妻精品全国免费视频| 激情内射亚洲一区二区三区爱妻 | 99视频免费在线观看| 亚洲AV综合色区无码二区爱AV| 免费A级毛片在线播放不收费|