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

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

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

    路是爬出來的

    單元測試之測試目的

    在javaeye學(xué)習(xí)一段時間單元測試后,雖然測試的文章不多,但都是經(jīng)典帖子。同時也發(fā)現(xiàn)這里面討論的關(guān)注點(diǎn)大部分是對測試的目。對于該怎么測試,怎么樣才可以讓測試自動話



    ,怎么樣保持測試的實效性等討論的比較少。



    最近被公司逼的急了,它要求在這個月里寫一篇關(guān)于單元測試的論文。無奈之下,只好來到這里記錄下自己學(xué)習(xí)的點(diǎn)點(diǎn)滴滴。以方便自己以后整理成論文。



    做事往往要帶很強(qiáng)的目的性去做才可以成功,單元測試也不例外



    單元測試目的:

    首先保證代碼質(zhì)量。

    其次保證代碼的可維護(hù)。

    再此保證代碼的可擴(kuò)展。



    目的之一代碼的代碼質(zhì)量

    我們編寫的代碼雖然可以通過編譯器檢測到語法的正確性質(zhì),但并不能保證代碼邏輯也是正確的。我們該怎么保證代碼執(zhí)行是正確的呢。好下面我們來看下代碼。



    java 代碼


     


    1.    int add(int x, int y){  

    2.     return x+y;  

    3. }  





       上面的功能模塊。下面是段測試代碼

     
    java 代碼


     


    1. void testAdd(){  

    2.     //我們要求程序邏輯是1+4=5;  

    3.     assertEquals(5,add(1,4); 


    4. }



         經(jīng)過測試以后,如果你修改了int add(int x, int y);里面的邏輯,如果修改的正確,測試代碼始終都是見到綠色的。如果你邏輯錯了。那不好意思,你的測試將會讓你重新寫那段邏輯代碼。直到你正確為止。

         有個比較特殊的情況,如果我測試代碼寫成這樣,那我保證邏輯代碼的正確性,但我卻看不到我期待的綠色,這有是什么原因呢?

    java 代碼


     


    1. 1void testAdd(){    

    2. 2.     //我們要求程序邏輯是1+4=5;    

    3. 3.     assertEquals(6,add(1,4);   

    4. 4. }  



    我個人認(rèn)為這個問題并是邏輯代碼的問題,而是你測試代碼中的邏輯問題,

    噢,MyGot,作為程序員的我。已經(jīng)為邏輯代碼傷腦筋了。還要為測試代碼煩惱,做人真命苦啊。  想來也確實是這樣。

    這就引申了另外一個問題,怎么樣才可以保證我邏輯代碼的可測性?



    目的之二代碼的可維護(hù)性。

    就拿上面的例子來說吧。只要我們的單元測試是正確的,那我們就可以保證無論你怎么修改那段代碼,只要測試代碼可以產(chǎn)生綠色條,那OK,你修改的邏輯代碼是正確的。當(dāng)然可維護(hù)并非只有這點(diǎn),還有,比如保證修改了這段代碼不會影響到其他的模塊等。



    目的之三代碼的可擴(kuò)展。

    對于這點(diǎn)我理解很膚淺。只能表達(dá)表面的東西,希望。

    對于可擴(kuò)展我覺得保遵循一個代碼之間的耦合度降到最低。就OK了。單元測試對這方面有很強(qiáng)的好處,為了程序的可維護(hù)性,它可以強(qiáng)迫你寫低耦合度的程序。





    單元測試的優(yōu)點(diǎn)


    1、它是一種驗證行為。

        程序中的每一項功能都是測試來驗證它的正確性。它為以后的開發(fā)提供支緩。就算是開發(fā)后期,我們也可以輕松的增加功能或更改程序結(jié)構(gòu),而不用擔(dān)心這個過程中會破壞重要的東西。而且它為代碼的重構(gòu)提供了保障。這樣,我們就可以更自由的對程序進(jìn)行改進(jìn)。


    2、它是一種設(shè)計行為。

        編寫單元測試將使我們從調(diào)用者觀察、思考。特別是先寫測試(test-first),迫使我們把程序設(shè)計成易于調(diào)用和可測試的,即迫使我們解除軟件中的耦合。


    3、它是一種編寫文檔的行為。

        單元測試是一種無價的文檔,它是展示函數(shù)或類如何使用的最佳文檔。這份文檔是可編譯、可運(yùn)行的,并且它保持最新,永遠(yuǎn)與代碼同步。


    4、它具有回歸性。

        自動化的單元測試避免了代碼出現(xiàn)回歸,編寫完成之后,可以隨時隨地的快速運(yùn)行測試。


    單元測試的范疇




        如果要給單元測試定義一個明確的范疇,指出哪些功能是屬于單元測試,這似乎很難。但下面討論的四個問題,基本上可以說明單元測試的范疇,單元測試所要做的工作。


    1、 它的行為和我期望的一致嗎?

        這是單元測試最根本的目的,我們就是用單元測試的代碼來證明它所做的就是我們所期望的。


    2、 它的行為一直和我期望的一致嗎?

        編寫單元測試,如果只測試代碼的一條正確路徑,讓它正確走一遍,并不算是真正的完成。軟件開發(fā)是一個項復(fù)雜的工程,在測試某段代碼的行為是否和你的期望一 致時,你需要確認(rèn):在任何情況下,這段代碼是否都和你的期望一致;譬如參數(shù)很可疑、硬盤沒有剩余空間、緩沖區(qū)溢出、網(wǎng)絡(luò)掉線的時候。


    3、 我可以依賴單元測試嗎?

        不能依賴的代碼是沒有多大用處的。既然單元測試是用來保證代碼的正確性,那么單元測試也一定要值得依賴。


    4、 單元測試說明我的意圖了嗎?

        單元測試能夠幫我們充分了解代碼的用法,從效果上而言,單元測試就像是能執(zhí)行的文檔,說明了在你用各種條件調(diào)用代碼時,你所能期望這段代碼完成的功能。

    posted on 2006-12-30 09:06 路是爬出來的 閱讀(159) 評論(0)  編輯  收藏


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲精品偷拍无码不卡av| 亚洲国产成人精品无码一区二区| 国内精品免费视频自在线| 久久久久国色AV免费看图片| 无码欧精品亚洲日韩一区夜夜嗨| 69堂人成无码免费视频果冻传媒| 中文字幕不卡免费视频| 一级成人生活片免费看| 一级a性色生活片久久无少妇一级婬片免费放 | 日韩欧毛片免费视频| 国产精品免费无遮挡无码永久视频| 午夜不卡AV免费| 久久午夜夜伦鲁鲁片无码免费| 国产做国产爱免费视频| 最近中文字幕完整免费视频ww| 女同免费毛片在线播放| 免费国产成人高清在线观看网站| 一个人在线观看视频免费| 国产亚洲午夜高清国产拍精品| 亚洲成在人天堂在线| 亚洲最大的成人网| 精品久久久久久国产免费了| 亚洲视频免费在线看| 国产又大又粗又硬又长免费 | 亚洲一级视频在线观看| 成人免费观看男女羞羞视频| 在线观看免费av网站| 免费jjzz在在线播放国产| 亚洲熟女少妇一区二区| **一级一级毛片免费观看| 久久九九AV免费精品| 亚洲另类少妇17p| 中文字幕的电影免费网站| 亚洲国产一区视频| 色哟哟国产精品免费观看| 日本特黄特黄刺激大片免费| 亚洲免费人成视频观看| 亚欧免费视频一区二区三区| 亚洲理论精品午夜电影| 在线日本高清免费不卡| 亚洲AV无一区二区三区久久|