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

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

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

    jinfeng_wang

    G-G-S,D-D-U!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks


    在Junit/Nunit測試出現之后,出現了一個工具Jcover/Ncover,此工具代碼覆蓋率分析工具,可以分析測試代碼的測試范圍的覆蓋率。

    第一次知道此工具的時候,相當的興奮,因為這樣可以輕松的把握項目中的測試代碼情況。在看到自己的每行代碼都被測試之后,相當的幸福啊,再加上Maven等工具可以自動連跑,那是足夠保證了單元測試的覆蓋率了啊。

    正是因為不假思索的信任,導致了問題的出現:Cover工具的覆蓋,是代碼行的覆蓋,而不是代碼Step的覆蓋。所謂的代碼行,是指代碼中可以被執行到的具體某物理行,但是Step則是指每一步邏輯。對于if (a==b||c==d||e==f)這樣的判斷,應該是有三個step在其中的。正是由于信任了Cover工具,導致代碼覆蓋率不夠,未能測試到e==f的判斷,導致了一個bug在最后才被發現。問題發現的越遲,付出的代價越大。

    上面已經說明了全路徑覆蓋的含義(目前Cover工具無法達到的功能),那么全路徑覆蓋是不是很有必要且一定要的呢?答案是“YES”.做到全路徑覆蓋的測試是很痛苦的一件事情,但是,當你從全路徑覆蓋中找到重大問題時,才會回頭來看“如果我做了全副該測試,這段路徑的錯誤邏輯就不會出現的”。

    就拿上篇"CheckedException VS UncheckedException"中的例子,當代碼結構逐漸演化為多出入口調用C模塊時,“C處不能決定具體的出錯信息”。但是在代碼中,如果恰恰就是在"C處誤認為可以決定錯誤消息"時,對于這個“誤操作”,就可以通過全路徑覆蓋發現這個問題。if(a==b||c==d||e==f) {throw new MyException("error msg.")},這樣的一行代碼,需要面對三種問題去報出錯信息,其負擔太重,情況復雜(然后有了錯誤代碼)。

    如果做了全路徑覆蓋,可以走到(e==f)的判斷,此時即可發現錯誤消息不正確的問題。

    如何才能保證完成全路徑覆蓋呢?
    1)手工debug跟蹤,保證每一步都走到,對于最后的(e==f),跟蹤的好辛苦阿,創造這樣的條件(走到e==f)就好累的。
    2)利用Ncover的功能,對于這樣的復雜邏輯,手工進行debug跟蹤。
    3)拆開代碼,為三行(每個step為單獨的一行),利用NCover自動分析。 哈,老師教過的",不允許出現過于復雜的代碼"這個原則被發揮到極致了。

    posted on 2007-01-05 01:20 jinfeng_wang 閱讀(1301) 評論(2)  編輯  收藏 所屬分類: view

    評論

    # re: 測試的全路經覆蓋 2007-01-09 17:55 會飛的魚
    小龍人,你真壞!  回復  更多評論
      

    # re: 測試的全路經覆蓋 2007-01-10 19:31 會游泳的鳥
    是的,不是一般的壞啊.  回復  更多評論
      

    主站蜘蛛池模板: 亚洲第一网站免费视频| 一级毛片在线免费看| 黄网址在线永久免费观看| 91亚洲国产成人精品下载| 四虎影视在线影院在线观看免费视频| 亚洲日韩欧洲无码av夜夜摸| 国产啪精品视频网站免费尤物 | 国产免费爽爽视频免费可以看| 亚洲制服丝袜中文字幕| 成年女人免费视频播放77777| 亚洲一区二区三区国产精品无码| 成人无遮挡裸免费视频在线观看 | 亚洲AV无码一区二区三区性色| 日本二区免费一片黄2019| 18禁亚洲深夜福利人口| 亚洲精品国产成人影院| a毛片免费全部在线播放**| 亚洲国产老鸭窝一区二区三区| 免费看片在线观看| 亚洲精品无码久久久久牙蜜区| 全部免费国产潢色一级| 十八禁视频在线观看免费无码无遮挡骂过| 亚洲精品tv久久久久久久久| 50岁老女人的毛片免费观看| 亚洲国产精品成人综合色在线| 亚洲精品美女久久久久99小说| 国内精品久久久久影院免费| 亚洲精品偷拍无码不卡av| 最近免费中文字幕4| 污网站免费在线观看| 亚洲国产a∨无码中文777| 毛片在线免费视频| kk4kk免费视频毛片| 久久精品国产亚洲AV高清热 | 97se亚洲综合在线| 卡1卡2卡3卡4卡5免费视频| jizz免费观看视频| 亚洲国产高清视频在线观看| 无码专区一va亚洲v专区在线 | 亚洲av无码一区二区三区四区| 亚洲色偷偷狠狠综合网|