- 軟硬件綜合系統(tǒng)軟件需求建模及可靠性綜合試驗(yàn)、分析、評(píng)價(jià)技術(shù)
- 胡璇編著 工業(yè)和信息化部電子第五研究所組編
- 938字
- 2021-11-03 13:36:42
3.1 靜態(tài)測(cè)試技術(shù)
靜態(tài)測(cè)試是不運(yùn)行程序而尋找程序中可能存在的缺陷或評(píng)估程序的過(guò)程。靜態(tài)測(cè)試可以由人工進(jìn)行,也可以借助軟件工具自動(dòng)進(jìn)行。靜態(tài)測(cè)試具有以下特點(diǎn)。
第一,靜態(tài)測(cè)試不必運(yùn)行程序。
第二,靜態(tài)測(cè)試可以由人工進(jìn)行,充分發(fā)揮人的邏輯思維優(yōu)勢(shì)。由人的思維局限及交流障礙造成的邏輯錯(cuò)誤,由人通過(guò)邏輯思維去解決是一種非常有效的辦法。特別是在充分利用人的邏輯思維優(yōu)勢(shì)互補(bǔ)的條件時(shí),檢測(cè)出缺陷的水平很高。
第三,靜態(tài)測(cè)試實(shí)施無(wú)需特別條件,容易開(kāi)展。
靜態(tài)測(cè)試技術(shù)包括主要由人工進(jìn)行的代碼審查、代碼走查、桌面檢查,以及主要由軟件工具自動(dòng)進(jìn)行的靜態(tài)分析。如果從廣義上來(lái)理解靜態(tài)測(cè)試技術(shù),那么它還包括軟件需求分析和設(shè)計(jì)階段的技術(shù)評(píng)審。
代碼審查(Code Inspection)和代碼走查(Code Walkthrough)是由若干個(gè)程序員與測(cè)試員組成一個(gè)小組,集體閱讀并討論程序或用大腦“執(zhí)行”并檢查程序的過(guò)程。代碼審查和代碼走查分兩步完成:首先做一定的準(zhǔn)備工作,然后舉行會(huì)議進(jìn)行討論。會(huì)議的主題是發(fā)現(xiàn)缺陷而不是修正缺陷。
桌面檢查是指由程序員閱讀自己所編寫(xiě)的程序,這是一種很陳舊的技術(shù)。它有幾方面的缺點(diǎn):第一,出于心理上的原因,程序員容易偏愛(ài)自己所編寫(xiě)的程序,沒(méi)有發(fā)現(xiàn)缺陷的欲望(這和已經(jīng)知道程序有缺陷從而讀程序、找缺陷極為不同);第二,由于人的思維定式,有些習(xí)慣性的問(wèn)題自己不易發(fā)現(xiàn);第三,如果從根本上對(duì)功能理解錯(cuò)了,自己不易修正。所以桌面檢查效率不高,可用于個(gè)人自行檢查程序中明顯的疏漏或筆誤。
代碼審查和代碼走查不僅比桌面檢查優(yōu)越得多,而且與動(dòng)態(tài)測(cè)試技術(shù)相比也具有其自身優(yōu)勢(shì):第一,使用這種技術(shù)測(cè)試,一旦發(fā)現(xiàn)缺陷,就知道缺陷的性質(zhì)和位置,因而調(diào)試所付出的代價(jià)低;第二,使用這種技術(shù)一次能揭示一批缺陷,而不是一次只揭示一種缺陷。動(dòng)態(tài)測(cè)試技術(shù)通常僅用于揭示發(fā)生缺陷的征兆。
經(jīng)驗(yàn)表明,通過(guò)代碼審查和代碼走查能夠有效發(fā)現(xiàn)30%~70%的邏輯設(shè)計(jì)和編碼缺陷。IBM的研究表明,使用代碼審查技術(shù),缺陷的檢測(cè)率高達(dá)80%。Myers的研究發(fā)現(xiàn),代碼審查和代碼走查平均可查出全部缺陷的38%。此外,有研究表明,對(duì)某類(lèi)缺陷使用代碼審查和代碼走查技術(shù)比使用計(jì)算機(jī)測(cè)試技術(shù)更為有效,而對(duì)另一類(lèi)缺陷情況正好相反。由此可見(jiàn),代碼審查和代碼走查技術(shù)與計(jì)算機(jī)測(cè)試技術(shù)是互補(bǔ)的,缺少任何一種都會(huì)影響缺陷的檢測(cè)率。
- Node.js Design Patterns
- MySQL 8從入門(mén)到精通(視頻教學(xué)版)
- PostgreSQL Cookbook
- Unity 2018 Shaders and Effects Cookbook
- Node.js區(qū)塊鏈開(kāi)發(fā)
- 深入解析Java編譯器:源碼剖析與實(shí)例詳解
- Arduino電子設(shè)計(jì)實(shí)戰(zhàn)指南:零基礎(chǔ)篇
- Spark技術(shù)內(nèi)幕:深入解析Spark內(nèi)核架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理
- Mastering Object:Oriented Python(Second Edition)
- Learn Linux Quickly
- 讀故事學(xué)編程:Python王國(guó)歷險(xiǎn)記
- Zend Framework 2 Cookbook
- PHP程序設(shè)計(jì)經(jīng)典300例
- Learning RSLogix 5000 Programming
- 面向?qū)ο蟪绦蛟O(shè)計(jì)及C++實(shí)驗(yàn)指導(dǎo)(第3版)