• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 319, comments - 22, trackbacks - 0, articles - 11
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            談?wù)剢卧獪y(cè)試

            Posted on 2011-09-15 06:37 RTY 閱讀(369) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 轉(zhuǎn)載隨筆質(zhì)量保障

            剛接觸單元測(cè)試時(shí),我實(shí)在是搞不懂這種測(cè)試到底有多大的意義,無(wú)非都是一些簡(jiǎn)單的ASSERT,但近年積累一些經(jīng)驗(yàn)教訓(xùn)之后我才發(fā)現(xiàn),單元測(cè)試這玩意兒真的是一種保證程序質(zhì)量的強(qiáng)有力手段。

            為什么這樣說(shuō)?舉個(gè)最典型的例子,無(wú)論是開(kāi)發(fā)新功能還是維護(hù)老程序,都不可避免的要反復(fù)修改某些代碼,那該怎么保證修改的代碼不會(huì)引入新的問(wèn)題?如果你說(shuō)你用人品擔(dān)保,那我服了。我們應(yīng)該需要一種可靠的手段來(lái)保證修改一個(gè)BUG不會(huì)引入兩個(gè)三個(gè)BUG,或者不會(huì)讓之前正確的功能出錯(cuò),甚至是不會(huì)引入之前已經(jīng)修改過(guò)的其它BUG。測(cè)試無(wú)疑是一種很好的手段,在沒(méi)掌握其它更好的方法之前,很多人喜歡用人工測(cè)試,即編譯 – 運(yùn)行 – 輸入典型值 – 看程序運(yùn)行結(jié)果 – 如果出錯(cuò) – 修改后再編譯……從長(zhǎng)遠(yuǎn)來(lái)看,這種測(cè)試方法的缺點(diǎn)很明顯:1、耗時(shí)耗力,每次修改代碼后都需要人工重復(fù)測(cè)試所有的典型情況;2、容易出錯(cuò)、漏測(cè),人腦太復(fù)雜,你很難記得幾個(gè)月前的那個(gè)BUG到底是什么情況,因此沒(méi)法測(cè)試,久而久之,N久前的那個(gè)BUG可能又神不知鬼不覺(jué)的重現(xiàn)了。相比之下,單元測(cè)試的優(yōu)點(diǎn)就凸顯出來(lái)了,把需要測(cè)試的典型情況編寫(xiě)為測(cè)試代碼,然后編譯運(yùn)行即可完成自動(dòng)化的測(cè)試,當(dāng)發(fā)現(xiàn)BUG后,把它添加到測(cè)試用例,不僅可以提高測(cè)試覆蓋率,還能保證以后不會(huì)再次引入同樣的BUG,有了足夠的單元測(cè)試(覆蓋率),你就可以理直氣壯的說(shuō)代碼沒(méi)問(wèn)題!當(dāng)然引入單元測(cè)試會(huì)在前期花費(fèi)不少的時(shí)間來(lái)編寫(xiě)測(cè)試代碼,但相應(yīng)的也會(huì)大大減少后期的維護(hù)工作,最主要的是能可靠的提高程序的質(zhì)量,所以是值得的,甚至是必要的。(如果你編譯過(guò)開(kāi)源的Google Chromium瀏覽器,你會(huì)發(fā)現(xiàn)測(cè)試代碼就占了不少,光是編譯測(cè)試代碼就得花很長(zhǎng)的時(shí)間)

            除了上面說(shuō)的優(yōu)點(diǎn)外,單元測(cè)試還有一些其它的好處,比如幫你理清設(shè)計(jì)。一些人反對(duì)單元測(cè)試就是因?yàn)檎f(shuō)我們的應(yīng)用太復(fù)雜了,沒(méi)法做單元測(cè)試。其實(shí)不一定是應(yīng)用復(fù)雜,而有可能是設(shè)計(jì)得有問(wèn)題,導(dǎo)致了沒(méi)有可測(cè)試性。比如有些人喜歡在CXXXDialog里編寫(xiě)所有的功能實(shí)現(xiàn),要測(cè)試這樣的代碼,必須得創(chuàng)建出Dialog,可能還需要點(diǎn)擊,這顯然沒(méi)法做單元測(cè)試,但如果把Dialog和業(yè)務(wù)邏輯分開(kāi)設(shè)計(jì),那至少業(yè)務(wù)邏輯是可測(cè)試的(暫不討論UI的測(cè)試)。因此要做單元測(cè)試,就得設(shè)計(jì)好各個(gè)接口,保證某個(gè)接口只完成單一的功能,沒(méi)有過(guò)多的耦合依賴(lài)。

            前面只是泛泛而談了一些單元測(cè)試的皮毛,鼓吹了一些優(yōu)點(diǎn),有興趣的自己找更詳細(xì)的資料看吧。另推薦一個(gè)Google的開(kāi)源C++測(cè)試框架googletest

            亚洲AV乱码久久精品蜜桃| 久久久精品免费国产四虎| 久久综合亚洲色一区二区三区| 无码精品久久一区二区三区| 亚洲精品无码专区久久久| 日本免费久久久久久久网站| 久久九九久精品国产| 久久亚洲中文字幕精品有坂深雪| 精品免费久久久久久久| 国产精品九九久久免费视频 | 亚洲精品午夜国产va久久| 久久综合狠狠综合久久综合88| 一本大道久久a久久精品综合| 久久综合亚洲色HEZYO社区| 久久国产精品久久国产精品| 噜噜噜色噜噜噜久久| 亚洲精品高清国产一久久| 日韩人妻无码精品久久久不卡| 久久精品成人欧美大片| 蜜桃麻豆www久久| 久久丫精品国产亚洲av不卡| 伊人久久成人成综合网222| 26uuu久久五月天| 精品综合久久久久久97超人| 伊人久久大香线蕉AV色婷婷色 | 国产午夜精品理论片久久| 一本色道久久88精品综合| 亚洲精品午夜国产va久久| 久久久久香蕉视频| 国产精品成人久久久久三级午夜电影| 久久棈精品久久久久久噜噜| 精品久久久久久中文字幕大豆网| 久久本道久久综合伊人| 久久中文字幕一区二区| 日韩欧美亚洲综合久久影院d3| www久久久天天com| 久久久久99精品成人片直播| 精品国产福利久久久| 91精品国产91久久久久久| 国产精品一久久香蕉国产线看观看| 久久人人爽人人爽人人片AV不|