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

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

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

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    單元測試,測試什么?

    Posted on 2007-03-31 19:18 dennis 閱讀(387) 評論(0)  編輯  收藏 所屬分類: java
    我們一直強調單元測試的重要性,但是有一個問題可能沒有認真去想過,測試是重要的,但是我們測試什么呢?最近重讀《單元測試之道》,書中給出了答案:Right-BICEP

    1.Right——正確

    很顯然,如果代碼運行的結果與你預期的不符合,那么這段代碼肯定是有問題的。需要注意的是,Right并意味著正確,因為正確只是相對你所期望的結果而言,而對于用戶需求也許就是錯誤的。

    2.B——邊界條件
    尋找邊界條件是單元測試最有價值的工作之一,因為bug一般出現在邊界條件上,你常常需要考慮下面這些邊界條件:
    1)完全偽造或者不一直的數據進行輸入
    2)格式錯誤的數據,比如錯誤的URL,Email地址
    3)空值或者不完整值,比如0,null
    4)與常理相去甚遠的數據,比如人有10000歲?
    5)如果要求傳入的是一個不允許重復數據的list,你傳入一個有重復數據的看看出現什么情況
    6)如果需要傳入的有序的集合,你傳入一個無序的看看結果
    7)不按照次序地執行,比如未登錄就嘗試操作某功能等
    對于邊界條件,可以按照CORRECT的順序去嘗試:
    Conformance——一致性,值是否和預期的一樣
    Ordering——順序性,值是否如預期的那樣,有序或者無序
    Range——區間性,值是否處于合理的范圍內
    Reference——引用,值是否引用了代碼無法空值的外部資源
    Existence——值是否存在,為空?為0?不在集合內?
    Cardinatity——基數性,檢查你的函數能否正確地計數,不多不少
    Time——所有的事件的發生是否按照預期的順序,性能上滿足要求?

    3.Inverse——檢查反向引用
    如果方法導致某個結果,嘗試以另一個方法能否返回最初的狀態?與原狀態是否符合預期?

    4。Cross——交叉檢查
    通過不同的方法檢查一個方法產生的結果是否正確,比如用Math.sqrt方法檢查自己編寫的求平方根的方法是否正確。另外的方式,以一種數量去檢查另一種數量,比如圖書館借出的書加上架上的書的總數是固定,可以用借出的書來檢查架上的書的數量是否正確。

    5.E——強制錯誤條件的產生

    一般我們所能想到的環境因素:
    1)內存耗光
    2)磁盤用滿
    3)時鐘出問題
    4)網絡不可用或者有問題
    5)系統過載
    6)調色板顏色數目有限
    7)顯示分辨率過高

    再比如JDK版本差異,我就為這個問題頭痛過:)

    6.Performance——性能
    每天或者每隔幾天運行一下一個粗糙簡單的性能測試,能夠保證你不會在給用戶演示的時候出現尷尬的場面。

    盡管書上是講了這么多測試這個、測試那個,我想真實的項目場景中應該根據需要采取特定的測試策略,比如你總不能對于一個單機應用需要考慮地震震斷海底光纜引發的問題。就我自己而言,因為項目組中似乎只有我對JUnit等單元測試工具充滿興趣,有經驗的老程序員是自己寫一個帶Main方法的Test類進行測試,而更多的人根本就不知道單元測試或者知道也不感興趣,在沒有壓力的情況下,要求自己考慮這么多的測試內容,難矣。今天試用了下NUnit,感覺比JUnit難用多了,JUnit與Eclipse的結合非常簡便。






    主站蜘蛛池模板: 亚洲综合校园春色| 成年免费a级毛片| 免费观看午夜在线欧差毛片 | 亚洲黄色一级毛片| 好先生在线观看免费播放| 美景之屋4在线未删减免费| 亚洲成熟xxxxx电影| 国产裸模视频免费区无码| 免费无码作爱视频| 亚洲人成影院在线高清| 亚洲精品网站在线观看不卡无广告| 久久成人a毛片免费观看网站| 亚洲美国产亚洲AV| 亚洲a在线视频视频| 国产伦一区二区三区免费| 日韩精品无码免费一区二区三区| 亚洲第一综合天堂另类专 | 久久亚洲免费视频| 免费观看日本污污ww网站一区| 99久久免费观看| 日本中文字幕免费看| 亚洲一区二区三区亚瑟| 国产午夜亚洲精品午夜鲁丝片| 24小时日本在线www免费的| 拍拍拍无挡视频免费观看1000| 亚洲欧美日韩中文高清www777| 亚洲AV无码第一区二区三区| 国产福利免费在线观看| 91精品导航在线网址免费| 一二三四在线观看免费中文在线观看| 亚洲人成影院77777| 亚洲丝袜美腿视频| 中文字幕亚洲一区| 亚洲电影日韩精品 | 国产午夜免费福利红片| 亚洲啪啪免费视频| 亚洲电影免费在线观看| 日韩精品免费一线在线观看| 中文字幕乱码亚洲无线三区| 亚洲邪恶天堂影院在线观看| 亚洲色无码一区二区三区|