單元測試的概念,實質(zhì)是強(qiáng)調(diào)一個基本的質(zhì)量思想和軟件開發(fā)的理念——如果要保證一個系統(tǒng)的質(zhì)量门岔,首先要保證構(gòu)成這個系統(tǒng)的所有組成單元的質(zhì)量爱致。
1 程序代碼的審查
(1).主要方法有:有軟件開發(fā)和編程經(jīng)驗的技術(shù)人員集體進(jìn)行;依靠一些軟件工具
(2).其優(yōu)勢:程序代碼的審查(code review)是一種靜態(tài)測試寒随,其效率是非常高的糠悯,據(jù)有關(guān)數(shù)據(jù)統(tǒng)計,代碼中缺陷60%以上可以通過代碼審查發(fā)現(xiàn)出來妻往。
1.1 代碼省查的方法和范圍
通常合格的代碼應(yīng)具備正確性互艾、清晰性、
規(guī)范性讯泣、一致性和高效性等纫普。
(1).正確性是指代碼邏輯必須正確,能夠?qū)崿F(xiàn)預(yù)期的功能好渠;
(2).清晰性是指代碼必須簡明昨稼、易懂节视、注釋準(zhǔn)確沒有歧義;
(3).規(guī)范性是指代碼必須符合企業(yè)或部門所定義的共同規(guī)范假栓,包括命名規(guī)則寻行、代碼風(fēng)格等;
(4).一致性是指代碼必須在命名上匾荆、風(fēng)格上保持一致拌蜘;
(5).高效性是指代碼不但要滿足以上性質(zhì),而且需要盡可能地降低代碼的執(zhí)行時間牙丽。
代碼審查的方法有:互查(peer-to-peer)拦坠、走查(walk-through)、會議評審(inspection)剩岳,代碼展示(code-show)
(1).互查是處在相同模塊或相近模塊的編程人員互相檢查對方的代碼;
(2).走查入热,從頭到尾將寫好的程序檢查一遍拍棕;
(3).會議評審更為正式,主要是審查關(guān)鍵性的代碼勺良。
(4).代碼展示绰播,主要是隨機(jī)抽取開發(fā)的代碼,由其向其他人講解自己的源程序尚困,一方面可以督促開發(fā)重視自己的代碼質(zhì)量蠢箩,另一方面及時發(fā)現(xiàn)代碼問題,包括不同代碼模塊事甜、函數(shù)之間互相依賴谬泌、沖突的關(guān)聯(lián)問題。最后有更多的人明白他人寫的代碼逻谦,今后代碼的維護(hù)也變得容易掌实。
單元測試
1.1 廣義上的單元測試包括靜態(tài)測試和動態(tài)測試,靜態(tài)測試就是上面說的代碼審查系列邦马,而動態(tài)測試是使用單元測試用例贱鼻、測試工具來執(zhí)行程序。
1.2 單元測試的對象是構(gòu)成軟件產(chǎn)品或系統(tǒng)的最小的獨立單元滋将,如封裝的類或?qū)ο罅谛ⅹ毩⒌暮瘮?shù)、進(jìn)程随闽、子過程父丰、組件或模塊等;單元測試搶到被測試對象的獨立性橱脸,所有有時候某個組件比較大時础米,需要拆分到一個可接受的程度分苇。
1.3 單元測試的目的是檢驗每個軟件單元是否正確的試下其功能,滿足性能和接口要求屁桑,還要驗證程序和詳細(xì)設(shè)計說明的一致性医寿。
1.4 單元測試應(yīng)該貫穿整個編程階段,秉承測試驅(qū)動開發(fā)思想蘑斧,在編程的過程(初始階段和修改缺陷階段)中隨時根據(jù)需要進(jìn)行單元測試靖秩,
舉例:工匠A在砌墻時,先拉一根水平線竖瘾,砌每一塊磚時沟突,都與這根水平線進(jìn)行比較,使得每一塊磚都保持水平捕传;工匠B惠拭,等一排磚都砌完后,再拉上一根水平線庸论,看看哪些磚有哦問題职辅,對有問題的已砌好的磚進(jìn)行調(diào)整。
1.5 單元測試方法
(1).白盒方法的單元測試
應(yīng)用技術(shù)有邏輯驅(qū)動法和基本路徑測試法聂示。
語句覆蓋:測試用例覆蓋程序每一條可執(zhí)行語句
判定覆蓋:測試用例覆蓋程序每一個分支判斷的可能結(jié)果
條件覆蓋:測試用例覆蓋程序每一個分支判斷中的每一個條件的可能結(jié)果
判定/條件覆蓋:測試用例同時滿足判定覆蓋和條件覆蓋
條件組合覆蓋:測試用例覆蓋程序每一個分支判斷中的每一個條件的每一種可能組合結(jié)果
(2).黑盒方法的單元測試
單元測試域携,不僅要驗證軟件的功能表現(xiàn),而且要驗證代碼結(jié)構(gòu)上的可靠性鱼喉、健全性和性能秀鞭。在功能性測試方法,通常會利用3中數(shù)據(jù)來進(jìn)行測試扛禽,即正常數(shù)據(jù)锋边、邊緣數(shù)據(jù)和錯誤數(shù)據(jù)。
(3).單元測試模塊
驅(qū)動模塊(被測系統(tǒng)的上級模塊):調(diào)用被測模塊的程序用于模擬被測模塊的上級模塊旋圆,驅(qū)動模塊接受測試數(shù)據(jù)宠默,把相關(guān)的數(shù)據(jù)傳送給被測的模塊,啟動/完成對該模塊的測試灵巧。比如對函數(shù)的調(diào)用搀矫,類的引用。
樁模塊(被測系統(tǒng)的下級模塊):替代下層模塊的程序用于模擬被測模塊工作過程中所調(diào)用的模塊刻肄,樁模塊使上層模塊不需要調(diào)用真實模塊就能獲得所需要的參數(shù)瓤球、返回值等。比如模擬器
(4). 單元測試用例設(shè)計
對白盒測試用例設(shè)計敏弃,需要達(dá)到下列測試要求:
|對程序模塊所有獨立的執(zhí)行路徑至少要測試一次卦羡;
|對所有的邏輯判斷,其結(jié)果為真、假的兩種情況至少要測試一次绿饵;
|對程序進(jìn)行辯解檢查欠肾;
|檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性;
舉例拟赊,設(shè)計圖示的邏輯測試用例