6 代碼檢查、走查與評(píng)審_第1頁(yè)
6 代碼檢查、走查與評(píng)審_第2頁(yè)
6 代碼檢查、走查與評(píng)審_第3頁(yè)
6 代碼檢查、走查與評(píng)審_第4頁(yè)
6 代碼檢查、走查與評(píng)審_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、代碼檢查、走查與評(píng)審靜態(tài)的白盒測(cè)試1靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試靜態(tài)測(cè)試(人工測(cè)試)不運(yùn)行程序進(jìn)行測(cè)試,即檢查和審閱靜態(tài)黑盒測(cè)試檢查產(chǎn)品說(shuō)明書(shū)靜態(tài)白盒測(cè)試檢查代碼,在不執(zhí)行的條件下有條理地仔細(xì)審查軟件設(shè)計(jì)、體系結(jié)構(gòu)和代碼,從而找出軟件缺陷的過(guò)程,有時(shí)稱(chēng)為結(jié)構(gòu)分析。動(dòng)態(tài)測(cè)試(基于計(jì)算機(jī)的測(cè)試)運(yùn)行和使用軟件以發(fā)現(xiàn)錯(cuò)誤,即通常意義上的測(cè)試2人工測(cè)試人工測(cè)試方法的正規(guī)性、精確性不如基于計(jì)算機(jī)測(cè)試,但并不妨礙測(cè)試取得成功,相反可以提高測(cè)試的功效和可靠性錯(cuò)誤發(fā)現(xiàn)得越早,改正錯(cuò)誤成本越低,正確改正錯(cuò)誤可能性越大程序員在開(kāi)始基于計(jì)算機(jī)的測(cè)試時(shí)要經(jīng)歷一個(gè)心理上的轉(zhuǎn)變,改正早期發(fā)現(xiàn)的錯(cuò)誤比改正后期計(jì)算機(jī)執(zhí)行發(fā)現(xiàn)的錯(cuò)誤時(shí)失

2、誤更少更容易定位以及發(fā)現(xiàn)由該錯(cuò)誤引發(fā)的其他缺陷(如連鎖錯(cuò)誤或類(lèi)似錯(cuò)誤)降低調(diào)試成本通常會(huì)有效地查找出3070的邏輯設(shè)計(jì)和編碼錯(cuò)誤3代碼檢查負(fù)責(zé)靜態(tài)測(cè)試的人員不是固定的。在某些小組中,程序員就是組織和審查的人員,軟件測(cè)試員被要求作為獨(dú)立的觀察者。還有一些小組,軟件測(cè)試員是該任務(wù)的執(zhí)行人,要求編寫(xiě)代碼的程序員和其他同時(shí)幫助審查。采用何種方式取決于開(kāi)發(fā)小組的自身狀況。4代碼檢查靜態(tài)白盒測(cè)試一般面臨的情況是不能善始善終,因?yàn)樾〗M會(huì)認(rèn)為太好使,費(fèi)用太高,沒(méi)有產(chǎn)出。原因是人們認(rèn)為程序員的任務(wù)就是編寫(xiě)代碼,而任何破壞代碼編寫(xiě)效率的事情都會(huì)減緩開(kāi)發(fā)過(guò)程。5代碼檢查四個(gè)基本要素確定問(wèn)題. 遵守規(guī)則. 準(zhǔn)備. 編

3、寫(xiě)報(bào)告. 6代碼檢查實(shí)施過(guò)程協(xié)調(diào)人在代碼檢查前幾天分發(fā)程序清單和設(shè)計(jì)規(guī)范編碼人員講述程序的邏輯結(jié)構(gòu),其他人員提問(wèn)題并判斷是否存在錯(cuò)誤(對(duì)照歷來(lái)常見(jiàn)的編碼錯(cuò)誤列表)注意力集中在發(fā)現(xiàn)錯(cuò)誤而非糾正錯(cuò)誤上(非調(diào)試)會(huì)議結(jié)束后,程序員會(huì)得到一份已發(fā)現(xiàn)錯(cuò)誤的清單代碼檢查的其他作用程序員會(huì)得到編程風(fēng)格、算法選擇及編程技術(shù)等方面的反饋信息其他參與者也可以同樣受益7代碼檢查人員組成(4人)一人負(fù)責(zé)協(xié)調(diào):分發(fā)材料、安排進(jìn)程、確保錯(cuò)誤隨后得到改正被測(cè)試程序的編碼人員程序的設(shè)計(jì)人員和一名測(cè)試專(zhuān)家實(shí)施過(guò)程協(xié)調(diào)人在代碼檢查前幾天分發(fā)程序清單和設(shè)計(jì)規(guī)范編碼人員講述程序的邏輯結(jié)構(gòu),其他人員提問(wèn)題并判斷是否存在錯(cuò)誤對(duì)照歷來(lái)常見(jiàn)

4、的編碼錯(cuò)誤列表分析程序注意力集中在發(fā)現(xiàn)錯(cuò)誤而非糾正錯(cuò)誤上(非調(diào)試)會(huì)議結(jié)束后,程序員會(huì)得到一份已發(fā)現(xiàn)錯(cuò)誤的清單8代碼檢查的錯(cuò)誤列表1.數(shù)據(jù)引用錯(cuò)誤變量使用前是否賦值或初始化?容易引起變量使用錯(cuò)誤,特別是對(duì)于指針或引用變量。在java中要求變量在使用前必須初始化。數(shù)組下標(biāo)的范圍和類(lèi)型是否存在下標(biāo)越界錯(cuò)誤,下表類(lèi)型是否為整型。通過(guò)指針引用的內(nèi)存單元是否存在(虛調(diào)用)?如在函數(shù)返回局部變量的指針或引用時(shí)會(huì)產(chǎn)生虛調(diào)用錯(cuò)誤。被引用的變量或內(nèi)存的屬性是否與編譯器預(yù)期的一致?如A類(lèi)型的指針或引用是否指向的是非A類(lèi)型對(duì)象。9代碼檢查的錯(cuò)誤列表(cont)2.數(shù)據(jù)聲明錯(cuò)誤是否所有變量都已聲明?絕大多數(shù)編程語(yǔ)言要

5、求變量先定義后使用,可保證變量使用的安全性。默認(rèn)的屬性(默認(rèn)值)是否正確?變量的初始化是否正確?變量的初始化是否與其存儲(chǔ)空間的類(lèi)型一致?是否每個(gè)變量都有正確的長(zhǎng)度、類(lèi)型和存儲(chǔ)類(lèi)別?是否存在相似名稱(chēng)的變量?103.運(yùn)算錯(cuò)誤是否存在非算術(shù)變量之間的運(yùn)算?是否存在混合模式的運(yùn)算?( int與float類(lèi)型)是否存在不同字長(zhǎng)變量之間的運(yùn)算?(int與long類(lèi)型)目標(biāo)變量大小是否小于所賦值的大小?(精度損失或越界錯(cuò)誤)中間結(jié)果是否上溢或下溢?是否存在除0錯(cuò)誤?操作符的優(yōu)先順序是否正確?整數(shù)除法是否正確?(精度問(wèn)題,如2*(i/2)=i)代碼檢查的錯(cuò)誤列表(cont)11代碼檢查的錯(cuò)誤列表(cont)i

6、nt x = 1;int y = 2;float z = 0;z = x/y;System.out.println (z = z);OUTPUT:z = 012代碼檢查的錯(cuò)誤列表(cont)4.比較錯(cuò)誤是否有不同類(lèi)型數(shù)據(jù)的比較運(yùn)算?(如日期與數(shù)字)是否有混合模式或不同長(zhǎng)度數(shù)據(jù)的比較運(yùn)算?比較運(yùn)算符是否正確?(如至多、至少,不小于)布爾表達(dá)式(與、或、非)是否正確?比較運(yùn)算符是否與布爾表達(dá)式相混合?(如2iz))135.控制流程錯(cuò)誤是否所有循環(huán)都能終止?(循環(huán)結(jié)束條件是否能滿(mǎn)足以及遞歸的終止條件是否能滿(mǎn)足。)是否存在由于入口條件不滿(mǎn)足而跳過(guò)循環(huán)體?(do-while循環(huán))是否存在僅差一個(gè)的循環(huán)錯(cuò)

7、誤?(如for(int i=0;i=10;i+))程序結(jié)構(gòu)中括號(hào)是否匹配、if,else是否匹配、do,while是否匹配、try,catch是否匹配等。代碼檢查的錯(cuò)誤列表(cont)14代碼檢查的錯(cuò)誤列表(cont)for (i=x ; i=z; i+) .while (NOTFOUND) .15代碼檢查的錯(cuò)誤列表(cont)6.接口錯(cuò)誤形參和實(shí)參的數(shù)量是否相等?形參的屬性是否與實(shí)參的屬性相匹配?形參的屬性是否與實(shí)參的順序相匹配?形參的單位是否和實(shí)參匹配?(屬邏輯錯(cuò)誤)是否改變了某個(gè)僅作為輸入值的形參?(C+中的const關(guān)鍵字)全局變量的定義是否一致?167.輸入輸出錯(cuò)誤文件屬性是否正確?

8、打開(kāi)文件的語(yǔ)句是否正確?緩沖區(qū)、內(nèi)存大小是否足夠來(lái)保留程序?qū)⒆x取的文件?文件在使用前是否打開(kāi)?文件在使用后是否關(guān)閉了?文件結(jié)束條件是否本正確處理?是否處理了IO錯(cuò)誤?打印或輸出的文本信息中是否存在拼寫(xiě)或語(yǔ)法錯(cuò)誤?即輸出結(jié)果正確性。代碼檢查的錯(cuò)誤列表(cont)17代碼檢查的錯(cuò)誤列表(cont)8.其他檢查是否存在未引用過(guò)的變量?每個(gè)變量的屬性和賦予的默認(rèn)值是否一致?編譯通過(guò)的程序是否存在“警告”或“提示”信息?程序或模塊是否對(duì)輸入的合法性進(jìn)行了檢查?(如第一章中三角形例)程序是否遺漏了某個(gè)功能?18代碼走查代碼走查和代碼檢查類(lèi)似,都是以小組為單位進(jìn)行代碼閱讀,是一系列規(guī)程和錯(cuò)誤檢查技術(shù)的集合。二者的過(guò)程大致相同,不同之處在于規(guī)程稍微不同走查會(huì)議期間,每個(gè)測(cè)試用例都在人們腦中推演,即把測(cè)試的數(shù)據(jù)沿著程序的邏輯結(jié)構(gòu)走一遍,記錄程序的狀態(tài)供監(jiān)視,很多錯(cuò)誤是在向程序員提問(wèn)的過(guò)程中發(fā)現(xiàn)的。其他與代碼檢查相同的地方參與者所持的態(tài)度同樣非常關(guān)鍵代碼走查也會(huì)帶來(lái)同樣的附帶作用19桌面檢查桌面檢查是人工查找錯(cuò)誤的一種古老的方法桌面檢查可視為由單人進(jìn)行的代碼檢查或代碼走查由一個(gè)人閱讀程序,對(duì)照錯(cuò)誤列表檢查程序,對(duì)程序推演的過(guò)程。桌面檢查的缺點(diǎn)桌面檢查的效率低是一個(gè)完全沒(méi)有約束的過(guò)程違

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論