版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第六章檢查代碼xxx《軟件質(zhì)量保證與測(cè)試》1第六章檢查代碼xxx《軟件質(zhì)量保證與測(cè)試》1本章重點(diǎn)靜態(tài)白盒測(cè)試的好處各種類型的靜態(tài)白盒測(cè)試綜述編碼規(guī)范和標(biāo)準(zhǔn)如何從整體審查代碼錯(cuò)處2本章重點(diǎn)靜態(tài)白盒測(cè)試的好處2§6.1靜態(tài)白盒測(cè)試:檢查設(shè)計(jì)和代碼靜態(tài)白盒測(cè)試——檢查代碼,在不執(zhí)行的條件下有條理地仔細(xì)審查軟件設(shè)計(jì)、體系結(jié)構(gòu)和代碼,從而找出軟件缺陷的過(guò)程,有時(shí)稱為結(jié)構(gòu)分析。如果具有編程經(jīng)驗(yàn),即使只有一點(diǎn)點(diǎn),就可以對(duì)軟件的體系結(jié)構(gòu)和代碼進(jìn)行測(cè)試。白盒測(cè)試沒(méi)有黑盒測(cè)試通用。如果測(cè)試軍隊(duì)、金融、工業(yè)自動(dòng)化、醫(yī)藥類軟件,或者有幸在組織嚴(yán)格的開(kāi)發(fā)模式下工作,在代碼級(jí)別驗(yàn)證產(chǎn)品就是例行公事。如果在測(cè)試軟件的安全問(wèn)題,需要白盒測(cè)試。3§6.1靜態(tài)白盒測(cè)試:檢查設(shè)計(jì)和代碼靜態(tài)白盒測(cè)試——檢查§6.1靜態(tài)白盒測(cè)試:檢查設(shè)計(jì)和代碼靜態(tài)測(cè)試(人工測(cè)試):不運(yùn)行程序進(jìn)行測(cè)試——即檢查和審閱。靜態(tài)黑盒測(cè)試——檢查產(chǎn)品說(shuō)明書。4§6.1靜態(tài)白盒測(cè)試:檢查設(shè)計(jì)和代碼靜態(tài)測(cè)試(人工測(cè)試)§6.1靜態(tài)白盒測(cè)試:檢查設(shè)計(jì)和代碼進(jìn)行靜態(tài)白盒測(cè)試的好處是盡早發(fā)現(xiàn)軟件缺陷,以找出動(dòng)態(tài)黑盒測(cè)試難以發(fā)現(xiàn)或隔離的軟件缺陷。進(jìn)行靜態(tài)白盒測(cè)試的另一個(gè)好處是為黑盒測(cè)試程序員設(shè)計(jì)和應(yīng)用測(cè)試用例提供思路。通過(guò)聽(tīng)審查評(píng)論,可以確定有問(wèn)題或者容易產(chǎn)生軟件缺陷的特征范圍。5§6.1靜態(tài)白盒測(cè)試:檢查設(shè)計(jì)和代碼進(jìn)行靜態(tài)白盒測(cè)試的好§6.1靜態(tài)白盒測(cè)試:檢查設(shè)計(jì)和代碼開(kāi)發(fā)小組中,負(fù)責(zé)靜態(tài)白盒測(cè)試的人員不是固定的。在某些小組里面,程序員是組織和執(zhí)行審查的人員。軟件測(cè)試人員作為獨(dú)立的觀察者。還有一些小組,軟件測(cè)試人員是任務(wù)的執(zhí)行人,編寫代碼的程序員和其他同事幫助審查。6§6.1靜態(tài)白盒測(cè)試:檢查設(shè)計(jì)和代碼開(kāi)發(fā)小組中,負(fù)責(zé)靜態(tài)§6.1靜態(tài)白盒測(cè)試:檢查設(shè)計(jì)和代碼靜態(tài)白盒測(cè)試方法的正規(guī)性、精確性不如基于計(jì)算機(jī)測(cè)試但并不妨礙測(cè)試取得成功,可以提高測(cè)試的功效錯(cuò)誤發(fā)現(xiàn)得越早,改正錯(cuò)誤成本越低。更容易定位以及發(fā)現(xiàn)由該錯(cuò)誤引發(fā)的其他缺陷(如連鎖錯(cuò)誤或類似錯(cuò)誤)降低調(diào)試成本通常會(huì)有效地查找出30%-70%的邏輯設(shè)計(jì)和編碼錯(cuò)誤7§6.1靜態(tài)白盒測(cè)試:檢查設(shè)計(jì)和代碼靜態(tài)白盒測(cè)試方法的正§6.1靜態(tài)白盒測(cè)試:檢查設(shè)計(jì)和代碼靜態(tài)白盒測(cè)試一般面臨的情況是不能善始善終現(xiàn)狀:許多小組錯(cuò)誤的認(rèn)為靜態(tài)白盒測(cè)試耗時(shí)太多,費(fèi)用太高,沒(méi)有產(chǎn)出。人們認(rèn)為程序員的任務(wù)就是編寫代碼,而任何破壞代碼編寫效率的事情都會(huì)減緩開(kāi)發(fā)過(guò)程。這些想法都不對(duì),在后期發(fā)現(xiàn)軟件缺陷的費(fèi)用要昂貴很多。還好這些情況正在改變。8§6.1靜態(tài)白盒測(cè)試:檢查設(shè)計(jì)和代碼靜態(tài)白盒測(cè)試一般面臨§6.2正式審查正式審查就是進(jìn)行靜態(tài)白盒測(cè)試的過(guò)程正式審查的含義很廣,從兩個(gè)程序員之間的簡(jiǎn)單交談,到軟件設(shè)計(jì)和代碼的詳細(xì)、嚴(yán)格檢查均屬于此過(guò)程。四個(gè)基本要素:確定問(wèn)題:審查的目的是找出軟件的問(wèn)題。找出錯(cuò)誤、遺漏,對(duì)事不對(duì)人。遵守規(guī)則:設(shè)立并嚴(yán)格執(zhí)行準(zhǔn)備:了解自己的責(zé)任和義務(wù)編寫報(bào)告:做出審查結(jié)果的書面總結(jié)9§6.2正式審查正式審查就是進(jìn)行靜態(tài)白盒測(cè)試的過(guò)程9§6.2正式審查正式審查要嚴(yán)格按照已經(jīng)建立起來(lái)的過(guò)程執(zhí)行。太隨意會(huì)讓參與者感覺(jué)是在浪費(fèi)時(shí)間。正式審查可以在早期發(fā)現(xiàn)一些重大缺陷,一些小的缺陷可能留在后面的測(cè)試工作中。10§6.2正式審查正式審查要嚴(yán)格按照已經(jīng)建立起來(lái)的過(guò)程執(zhí)行§6.2正式審查堅(jiān)持正式審查還有一些間接效果:交流:正式報(bào)告中沒(méi)包含的信息得以交流。例如,黑盒測(cè)試程序員洞察問(wèn)題所在。年輕程序員可以學(xué)習(xí)新技術(shù)。管理員更加理解項(xiàng)目進(jìn)度。質(zhì)量:程序員的代碼經(jīng)過(guò)逐個(gè)功能、逐個(gè)代碼仔細(xì)復(fù)查,常常會(huì)使程序員變得更加仔細(xì)。小組同志化:如果審查正確進(jìn)行,就會(huì)建立軟件測(cè)試員和程序員對(duì)雙方技藝的相互尊重,并且更好地了解互相的工作及需求。解決方案:在審查之外討論解決方案也較有效。11§6.2正式審查堅(jiān)持正式審查還有一些間接效果:11§6.2正式審查一般至少應(yīng)有4人一人負(fù)責(zé)協(xié)調(diào):分發(fā)材料、安排進(jìn)程、確保錯(cuò)誤隨后得到改正被測(cè)試程序的編碼人員程序的設(shè)計(jì)人員一名測(cè)試專家12§6.2正式審查一般至少應(yīng)有4人12§6.2正式審查實(shí)施過(guò)程:協(xié)調(diào)人在代碼檢查前幾天分發(fā)程序清單和設(shè)計(jì)規(guī)范編碼人員講述程序的邏輯結(jié)構(gòu),其他人員提問(wèn)題并判斷是否存在錯(cuò)誤(對(duì)照常見(jiàn)的編碼錯(cuò)誤列表)注意力集中在發(fā)現(xiàn)錯(cuò)誤而非糾正錯(cuò)誤上(非調(diào)試)會(huì)議結(jié)束后,程序員會(huì)得到一份已發(fā)現(xiàn)錯(cuò)誤的清單13§6.2正式審查實(shí)施過(guò)程:13§6.2正式審查其他審查方式:同事審查:伙伴審查(你看看我的,我看看你的)。走查:將代碼給其他小組。檢查:正式的審查。14§6.2正式審查其他審查方式:14§6.3編碼標(biāo)準(zhǔn)和規(guī)范有三個(gè)重要的原因要堅(jiān)持標(biāo)準(zhǔn)或者規(guī)范:可靠性:更加可靠和安全可讀性/維護(hù)性:代碼更容易閱讀、理解和維護(hù)移植性:有助于在不同的硬件中運(yùn)行15§6.3編碼標(biāo)準(zhǔn)和規(guī)范有三個(gè)重要的原因要堅(jiān)持標(biāo)準(zhǔn)或者規(guī)范§6.3編碼標(biāo)準(zhǔn)和規(guī)范標(biāo)準(zhǔn):必須遵守的規(guī)則規(guī)范:建議的最佳做法既有一些國(guó)際、國(guó)內(nèi)通用的標(biāo)準(zhǔn)及規(guī)范,也有一些公司內(nèi)部的規(guī)定。雖然編程是藝術(shù),但是標(biāo)新立異未必是藝術(shù)指望怪異著裝體現(xiàn)自己藝術(shù)家氣質(zhì)的,往往是不入流的“藝術(shù)家”。16§6.3編碼標(biāo)準(zhǔn)和規(guī)范標(biāo)準(zhǔn):必須遵守的規(guī)則16§6.3編碼標(biāo)準(zhǔn)和規(guī)范如何獲取標(biāo)準(zhǔn):通過(guò)公共機(jī)構(gòu)美國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)會(huì)(ANSI)。國(guó)際工程學(xué)會(huì)(IEC)。國(guó)際標(biāo)準(zhǔn)化組織(ISO)。信息技術(shù)標(biāo)準(zhǔn)國(guó)家委員會(huì)(NCITS)。美國(guó)計(jì)算機(jī)協(xié)會(huì)(ACM)。電子電氣工程學(xué)會(huì)(IEEE)。17§6.3編碼標(biāo)準(zhǔn)和規(guī)范如何獲取標(biāo)準(zhǔn):通過(guò)公共機(jī)構(gòu)17§6.4通用代碼審查清單應(yīng)該審查哪些內(nèi)容?18§6.4通用代碼審查清單應(yīng)該審查哪些內(nèi)容?18§6.4.1數(shù)據(jù)引用錯(cuò)誤變量使用前是否賦值或初始化?數(shù)據(jù)類型是否匹配?數(shù)組下標(biāo)的范圍和類型:遺漏、越界等通過(guò)指針引用的內(nèi)存單元是否存在(虛調(diào)用)?如函數(shù)返回局部變量的指針會(huì)產(chǎn)生虛調(diào)用錯(cuò)誤。被引用的變量或內(nèi)存的屬性是否與預(yù)期的一致?如A類型的指針或引用指向的是非A類型對(duì)象。19§6.4.1數(shù)據(jù)引用錯(cuò)誤變量使用前是否賦值或初始化?19§6.4.2數(shù)據(jù)聲明錯(cuò)誤是否所有變量都已聲明?默認(rèn)的屬性(默認(rèn)值)是否正確?變量的初始化是否正確?變量的初始化是否與其存儲(chǔ)空間的類型一致?是否每個(gè)變量都有正確的長(zhǎng)度、類型和存儲(chǔ)類別?是否存在相似名稱的變量?20§6.4.2數(shù)據(jù)聲明錯(cuò)誤是否所有變量都已聲明?20§6.4.3計(jì)算錯(cuò)誤是否存在非算術(shù)變量之間的運(yùn)算?是否存在混合模式的運(yùn)算?(int與float類型)是否存在不同字長(zhǎng)變量之間的運(yùn)算?目標(biāo)變量長(zhǎng)度是否小于所賦值的大???(精度損失或越界錯(cuò)誤)中間結(jié)果是否上溢或下溢?是否存在除0錯(cuò)誤?操作符的優(yōu)先順序是否正確?整數(shù)除法是否正確?(精度問(wèn)題)21§6.4.3計(jì)算錯(cuò)誤是否存在非算術(shù)變量之間的運(yùn)算?21§6.4.4比較錯(cuò)誤是否有不同類型數(shù)據(jù)的比較運(yùn)算?是否有混合模式或不同長(zhǎng)度數(shù)據(jù)的比較運(yùn)算?比較運(yùn)算符是否正確?布爾表達(dá)式(與、或、非)是否正確?比較運(yùn)算符是否與布爾表達(dá)式相混合?是否存在浮點(diǎn)數(shù)的比較??jī)?yōu)先順序是否正確?22§6.4.4比較錯(cuò)誤是否有不同類型數(shù)據(jù)的比較運(yùn)算?22§6.4.5控制流程錯(cuò)誤是否所有循環(huán)都能終止?(循環(huán)結(jié)束條件是否能滿足,遞歸的終止條件是否能滿足。)是否存在由于入口條件不滿足而跳過(guò)循環(huán)體?(do-while循環(huán))是否存在僅差一個(gè)的循環(huán)錯(cuò)誤?如for(inti=0;i<=10;i++){}程序結(jié)構(gòu)中括號(hào)是否匹配、if,else是否匹配、do,while是否匹配、try,catch是否匹配等。23§6.4.5控制流程錯(cuò)誤是否所有循環(huán)都能終止?(循環(huán)結(jié)束§6.4.6子程序參數(shù)錯(cuò)誤形參和實(shí)參的數(shù)量是否相等?形參的屬性是否與實(shí)參的屬性相匹配?形參的屬性是否與實(shí)參的順序相匹配?形參的單位是否和實(shí)參匹配?(屬邏輯錯(cuò)誤)是否改變了某個(gè)僅作為輸入值的形參?全局變量的定義是否一致?24§6.4.6子程序參數(shù)錯(cuò)誤形參和實(shí)參的數(shù)量是否相等?24§6.4.7輸入/輸出錯(cuò)誤文件屬性是否正確?打開(kāi)文件的語(yǔ)句是否正確?緩沖區(qū)、內(nèi)存大小是否足夠來(lái)保留程序?qū)⒆x取的文件?文件在使用前是否打開(kāi)?文件在使用后是否關(guān)閉了?文件結(jié)束條件是否本正確處理?是否處理了IO錯(cuò)誤?打印或輸出的文本信息中是否存在拼寫或語(yǔ)法錯(cuò)誤?即輸出結(jié)果正確性。25§6.4.7輸入/輸出錯(cuò)誤文件屬性是否正確?25§6.4.8其他檢查是否存在未引用過(guò)的變量?每個(gè)變量的屬性和賦予的默認(rèn)值是否一致?編譯通過(guò)的程序是否存在“警告”或“提示”信息?程序或模塊是否對(duì)輸入的合法性進(jìn)行了檢查?程序是否遺漏了某個(gè)功能?26§6.4.8其他檢查是否存在未引用過(guò)的變量?26本章小結(jié)檢查代碼——靜態(tài)白盒測(cè)試——被證實(shí)是早期發(fā)現(xiàn)軟件缺陷最有效的方法。這是一項(xiàng)需要大量準(zhǔn)備工作才能有成效的任務(wù)。許多研究表明,花費(fèi)時(shí)間在靜態(tài)白盒測(cè)試上面與得到的好處相比是值得的。靜態(tài)白盒測(cè)試正在收到重視,在某些開(kāi)發(fā)過(guò)程中,沒(méi)有靜態(tài)白盒測(cè)試,項(xiàng)目就無(wú)法得到可靠的軟件。27本章小結(jié)檢查代碼——靜態(tài)白盒測(cè)試——被證實(shí)是早期發(fā)現(xiàn)軟件缺陷2828作業(yè)請(qǐng)回答以下
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 紙娃娃課件教學(xué)課件
- 2024年古建筑亮化保護(hù)工程協(xié)議
- 2024年地?cái)偨?jīng)濟(jì)創(chuàng)業(yè)項(xiàng)目經(jīng)營(yíng)權(quán)轉(zhuǎn)讓協(xié)議
- 2024個(gè)人助學(xué)貸款合作合同
- 2024年度4S店汽車銷售與金融投資合同
- 2024丙公司與丁公司就煤炭廢料處理服務(wù)的合同
- 2024年度膩?zhàn)赢a(chǎn)品生產(chǎn)線改造合同
- 2024年己方區(qū)塊鏈技術(shù)研究與應(yīng)用合作協(xié)議
- 2024年度建筑工程安全防護(hù)合同
- 2024年度新能源汽車推廣銷售合同
- 有機(jī)合成化學(xué)(山東聯(lián)盟)知到章節(jié)答案智慧樹(shù)2023年青島科技大學(xué)
- 商標(biāo)法題庫(kù)1(答案)
- TMF自智網(wǎng)絡(luò)白皮書4.0
- 電視劇《國(guó)家孩子》觀影分享會(huì)PPT三千孤兒入內(nèi)蒙一段流淌著民族大愛(ài)的共和國(guó)往事PPT課件(帶內(nèi)容)
- 所水力除焦設(shè)備介紹
- 改革開(kāi)放英語(yǔ)介紹-課件
- pet考試歷屆真題和答案
- 《企業(yè)員工薪酬激勵(lì)問(wèn)題研究10000字(論文)》
- 大學(xué)英語(yǔ)三級(jí)B真題2023年06月
- GB/T 7909-2017造紙木片
- GB/T 25217.6-2019沖擊地壓測(cè)定、監(jiān)測(cè)與防治方法第6部分:鉆屑監(jiān)測(cè)方法
評(píng)論
0/150
提交評(píng)論