資源描述:
《靜態(tài)測(cè)試與動(dòng)態(tài)測(cè)試課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、主要內(nèi)容1靜態(tài)測(cè)試與動(dòng)態(tài)測(cè)試的含義2代碼檢查3靜態(tài)結(jié)構(gòu)分析4程序插樁5邏輯覆蓋白盒測(cè)試可分為靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試。靜態(tài)測(cè)試是一種不通過執(zhí)行程序而進(jìn)行測(cè)試的技術(shù),其關(guān)鍵功能是檢查軟件的表示和描述是否一致,沒有沖突或者沒有歧義。側(cè)重于糾正軟件系統(tǒng)在描述、表示和規(guī)格上的錯(cuò)誤,是任何進(jìn)一步測(cè)試的前提。動(dòng)態(tài)測(cè)試需要軟件執(zhí)行,當(dāng)軟件系統(tǒng)在模擬或真實(shí)環(huán)境中執(zhí)行之前、之中和之后,對(duì)軟件系統(tǒng)行為的分析是動(dòng)態(tài)測(cè)試的主要特點(diǎn)。它顯示一個(gè)系統(tǒng)在檢查狀態(tài)下是正確還是不正確。靜態(tài)測(cè)試與動(dòng)態(tài)測(cè)試的含義最常見的靜態(tài)測(cè)試是找出源代碼的語法錯(cuò)誤,可由編譯器來完成,因編譯器可逐行分
2、析檢驗(yàn)程序的語法,找出錯(cuò)誤并報(bào)告。除此之外,測(cè)試人員須采用人工方法來檢驗(yàn)程序,有些地方存在非語法方面錯(cuò)誤,只能通過人工檢測(cè)的方法來判斷。人工檢測(cè)的方法主要有代碼檢查法、靜態(tài)結(jié)構(gòu)分析法等。3.1靜態(tài)測(cè)試代碼檢查法主要是通過桌面檢查,代碼審查和走查方式,對(duì)以下內(nèi)容進(jìn)行檢查:(1)檢查代碼和設(shè)計(jì)的一致性;(2)代碼的可讀性及對(duì)軟件設(shè)計(jì)標(biāo)準(zhǔn)的遵循情況;(3)代碼邏輯表達(dá)的正確性;(4)代碼結(jié)構(gòu)的合理性;(5)程序中不安全、不明確和模糊的部分;(6)編程風(fēng)格方面的問題等。1代碼檢查法(1)桌面檢查(2)代碼審查(3)走查代碼檢查方式代碼會(huì)審是由一組人通
3、過閱讀、討論和爭(zhēng)議對(duì)程序進(jìn)行靜態(tài)分析的過程。代碼審查小組成員:組長(zhǎng):能力較強(qiáng)的程序員待審程序的設(shè)計(jì)者或程序員測(cè)試專家代碼審查時(shí)應(yīng)注意問題:提出的建議應(yīng)針對(duì)程序本身,而不應(yīng)針對(duì)程序員。程序員對(duì)整個(gè)審查過程采取積極和建設(shè)性的態(tài)度。代碼走查(codewalkthrough)走查是以小組為單元進(jìn)行代碼閱讀的,同樣也是一系列規(guī)程和錯(cuò)誤檢查技術(shù)的集合。人員組成一位經(jīng)驗(yàn)豐富的程序員一位程序設(shè)計(jì)語言專家一位程序員新手一位其他不同項(xiàng)目的人員一位該軟件編程小組的成員必須修改的問題(3)程序沒有注釋程序=代碼+注釋注釋語句/總代碼行數(shù)=1/5~1/4子函數(shù)max沒
4、有返回值類型精度丟失問題建議修改的問題(3)main函數(shù)沒有返回值類型和參數(shù)表(默認(rèn)為voidmain(void))1行代碼只定義1個(gè)變量。程序適當(dāng)加一些空行程序中存在未使用的變量#includemax(floatx,floaty){floatz;z=x>y?x:y;return(z);}main(){floata,b;intc,d;scanf("%f,%f",&a,&b);c=max(a,b);printf("Maxis%d",c);}測(cè)試人員通過使用測(cè)試工具分析程序源代碼的系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)接口、內(nèi)部控制邏輯等
5、內(nèi)部結(jié)構(gòu),生成函數(shù)調(diào)用關(guān)系圖、模塊控制流圖、內(nèi)部文件調(diào)用關(guān)系圖等各種圖形、圖表,清晰地標(biāo)識(shí)整個(gè)軟件的組成結(jié)構(gòu)。通過分析上述圖表,包括控制流分析、數(shù)據(jù)據(jù)流分析、接口分析、表達(dá)式分析等,使其便于閱讀與理解,然后可以通過分析這些圖表,檢查軟件是否存在缺陷或錯(cuò)誤。2靜態(tài)結(jié)構(gòu)分析法靜態(tài)結(jié)構(gòu)分析法通常采用以下方法進(jìn)行源程序的靜態(tài)分析:(1)通過各種圖表對(duì)源程序進(jìn)行靜態(tài)分析常用的各種引用表主要有:①標(biāo)號(hào)交叉引用表②變量交叉引用表③子程序(宏、函數(shù))引用表④等價(jià)表⑤常數(shù)表①函數(shù)調(diào)用關(guān)系圖:列出所有函數(shù),用連線表示調(diào)用關(guān)系,通過應(yīng)用程序各函數(shù)之間的調(diào)用關(guān)系展示
6、系統(tǒng)的結(jié)構(gòu)。②模塊控制流圖:由許多結(jié)點(diǎn)和連接結(jié)點(diǎn)的邊組成的圖形,其中每個(gè)結(jié)點(diǎn)代表一條或多條語句,邊表示控制流向,可直觀反映出一個(gè)函數(shù)的內(nèi)部結(jié)構(gòu)。常用的關(guān)系圖、控制流圖靜態(tài)錯(cuò)誤分析主要用于確定在源程序中是否有某類錯(cuò)誤或“危險(xiǎn)”結(jié)構(gòu)。①類型和單位分析②引用分析③表達(dá)式分析④接口分析(2)錯(cuò)誤靜態(tài)分析在軟件動(dòng)態(tài)測(cè)試中,程序插樁是一種基本的測(cè)試手段,有著廣泛的應(yīng)用。程序插樁方法是借助往被測(cè)程序中插入操作,來實(shí)現(xiàn)測(cè)試目的的方法,即向源程序中添加一些語句,實(shí)現(xiàn)對(duì)程序語句的執(zhí)行、變量的變化等情況進(jìn)行檢查。3.2程序插樁技術(shù)想了解一個(gè)程序在某次運(yùn)行中所有可執(zhí)
7、行語句被覆蓋的情況,或是每個(gè)語句的實(shí)際執(zhí)行次數(shù),最好的辦法是利用插樁技術(shù)。以計(jì)算整數(shù)X和整數(shù)Y的最大公約數(shù)程序?yàn)槔f明插樁方法的要點(diǎn)。圖3-1給出了這一程序的流程圖。圖3-1插樁后求最大公約數(shù)程序的流程圖設(shè)計(jì)插樁程序時(shí)需要考慮的問題包括:①探測(cè)哪些信息;②在程序的什么部位設(shè)置探測(cè)點(diǎn);③需要設(shè)置多少個(gè)探測(cè)點(diǎn);④程序中特定部位插入某些用以判斷變量特性的語句。如.NET里的插入斷言語句:Debug.Assert(this.textBox3.Text.Length>0,“輸入值為空!");inta=Int32.Parse(this.textBox3
8、.Text);邏輯覆蓋是白盒測(cè)試中動(dòng)態(tài)測(cè)試技術(shù)主要方法之一,是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的測(cè)試技術(shù),通過對(duì)程序邏輯結(jié)構(gòu)的遍歷實(shí)現(xiàn)程序的覆蓋,要求測(cè)試人員對(duì)程序的邏輯