qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          單元測(cè)試的四大具體效益

           單元測(cè)試是高效的開發(fā)過程質(zhì)量控制機(jī)制,幫助企業(yè)保證產(chǎn)品質(zhì)量、降低成本、提高生產(chǎn)率、縮短開發(fā)周期、贏得市場(chǎng)先機(jī),提升競(jìng)爭(zhēng)力。

            1、保證代碼質(zhì)量

            僅依靠系統(tǒng)測(cè)試會(huì) 存在大量未覆蓋的“死角”,單元測(cè)試可以對(duì)各個(gè)代碼單元徹底測(cè)試,保證代碼質(zhì)量。針對(duì)一個(gè)函數(shù),單元測(cè)試可以覆蓋輸入數(shù)據(jù)的所有分類,做到不管輸入什么數(shù) 據(jù),函數(shù)本身的處理都符合設(shè)計(jì),從而全面檢測(cè)其功能邏輯,消滅可能隱藏的大量細(xì)小錯(cuò)誤,這種測(cè)試效果是其他測(cè)試難于做到的。輸入數(shù)據(jù)的“分類”,稱為“等 價(jià)類”,即測(cè)試效果上的等價(jià),同類數(shù)據(jù)中只需要測(cè)試一個(gè),就相當(dāng)于測(cè)試了同類中的所有數(shù)據(jù)。這種設(shè)計(jì)用例的方法就叫做“等價(jià)類法”。

            2、降低排錯(cuò)成本

            排錯(cuò)包括“驗(yàn)證是否有錯(cuò)”、“找出錯(cuò)在哪里”、“修正錯(cuò)誤”三個(gè)工作。單元測(cè)試的目標(biāo)最小,涉及代碼最少,發(fā)現(xiàn)錯(cuò)誤后排錯(cuò)最容易。Bug發(fā) 現(xiàn)得越晚,修改所需費(fèi)用就越高,因此應(yīng)該盡早查找和修改Bug,單元測(cè)試提供了盡早抓住Bug的最好機(jī)會(huì)。相比后續(xù)階段的測(cè)試,單元測(cè)試的創(chuàng)建更簡(jiǎn)單,維 護(hù)更容易,并且可以更方便地進(jìn)行重復(fù)。從全程費(fèi)用來考慮,相比復(fù)雜且曠日持久的集成測(cè)試、系統(tǒng)測(cè)試,單元測(cè)試所需的費(fèi)用是很低的。下圖摘 自<<實(shí)用軟件度量>>(Capers Jones, McGraw-Hill 1991),它列出了準(zhǔn)備測(cè)試、執(zhí)行測(cè)試、和修改缺陷所花費(fèi)的時(shí)間(以一個(gè)功能點(diǎn)為基準(zhǔn)),這些數(shù)據(jù)顯示單元測(cè)試的成本效率大約是集成測(cè)試的兩倍,系統(tǒng)測(cè) 試的三倍。

            3、自動(dòng)回歸

             自動(dòng)回歸測(cè)試可以避免小量修改導(dǎo)致大量系統(tǒng)級(jí)調(diào)試與測(cè)試。“回歸”是指代碼修改后回復(fù)到原來的正確狀態(tài)。例如,一個(gè)函數(shù)本來工作正常,后來發(fā)現(xiàn)少了個(gè)功 能點(diǎn),修改代碼后,原有功能可能被破壞,回歸測(cè)試就是檢驗(yàn)原來的功能是否仍然正常。代碼之間具有復(fù)雜的依賴關(guān)系,一個(gè)函數(shù)的修改,可能引起其他代碼產(chǎn)生錯(cuò) 誤,回歸測(cè)試不僅針對(duì)被修改的代碼單元,也針對(duì)其他相關(guān)代碼。單元測(cè)試目標(biāo)最小、結(jié)果明確、執(zhí)行快捷,最容易實(shí)現(xiàn)自動(dòng)化回歸測(cè)試。

            單元測(cè)試將代碼功能“定格”,代碼修改后可以自動(dòng)檢查是否引入新的錯(cuò)誤,避免陷入“系統(tǒng)測(cè)試->修改->引入新的錯(cuò)誤->新一輪系統(tǒng)測(cè)試->修改->引入新的錯(cuò)誤”的怪圈。自動(dòng)回歸也使開發(fā)過程適應(yīng)頻繁變更的需求,使開發(fā)過程趨于“敏捷”。

            4、促進(jìn)開發(fā)

             如果邊開發(fā)邊測(cè)試,那么,單元測(cè)試的結(jié)果可以完整地描述程序的行為,如下圖。程序行為就是在什么輸入下,會(huì)執(zhí)行哪些代碼,會(huì)產(chǎn)生什么輸出。寫代碼時(shí)能隨 時(shí)察看程序行為,就比較容易想明白思路對(duì)不對(duì),接下來應(yīng)該怎么寫。剛寫的代碼有沒有錯(cuò)誤也隨時(shí)可以發(fā)現(xiàn),不但效率高得多,也沒那么累。

            只要做了單元測(cè)試,反映程序行為的數(shù)據(jù)就一定會(huì)存在,只要使用工具將這些數(shù)據(jù)捕獲并顯示出來,就可以一邊編程一邊察看程序行為。

             編程時(shí),程序員一定需要考慮清楚代碼的功能,包括會(huì)有哪些輸入,如何處理,應(yīng)該產(chǎn)生什么結(jié)果,列出來就是測(cè)試數(shù)據(jù)了,因此,并不需要多少額外的時(shí)間來設(shè) 計(jì)測(cè)試數(shù)據(jù),同時(shí)編寫效率會(huì)顯著提高,并且基本上不需要調(diào)試。調(diào)試是最花時(shí)間的。如果結(jié)合自動(dòng)化的測(cè)試工具,讓設(shè)計(jì)測(cè)試數(shù)據(jù)以外的工作(如編寫測(cè)試代碼、 隔離測(cè)試任務(wù)、底層模擬、統(tǒng)計(jì)覆蓋率等等)由工具完成,那么,在開發(fā)的過程中進(jìn)行單元測(cè)試,開發(fā)和測(cè)試同步完成,所用的時(shí)間一般比傳統(tǒng)方式更短,代碼單元 功能越復(fù)雜,節(jié)約的時(shí)間越多。

            我們初學(xué)C語言時(shí),通常會(huì)編寫一些小算法,并通過控制臺(tái)輸出結(jié)果進(jìn)行測(cè)試。這 是一種高效的編程方式,因?yàn)榈谝粫r(shí)間可以了解代碼是否工作正常,隨時(shí)調(diào)整思路。但在實(shí)際項(xiàng)目中,這種方式不再現(xiàn)實(shí),正在編寫的代碼單元很難單獨(dú)運(yùn)行并觀察 其行為。單元測(cè)試可以幫助我們重返“小算法編程”,讓代碼單元隨時(shí)獨(dú)立運(yùn)行,減少麻煩的調(diào)試,縮短編碼周期。

          posted on 2012-11-29 11:14 順其自然EVO 閱讀(167) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2012年11月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 宁城县| 柳江县| 宁海县| 安西县| 昌都县| 湘潭县| 科技| 西林县| 漾濞| 乌拉特中旗| 德令哈市| 巴彦县| 福安市| 菏泽市| 韶关市| 枣阳市| 蓬溪县| 邵东县| 南京市| 四会市| 阜宁县| 合作市| 盐亭县| 商丘市| 依兰县| 岗巴县| 高密市| 巍山| 海丰县| 台北县| 禹州市| 清原| 平和县| 弥勒县| 昌平区| 驻马店市| 瑞丽市| 永平县| 江安县| 忻城县| 资中县|