靜態(tài)測試與動(dòng)態(tài)測試_第1頁
靜態(tài)測試與動(dòng)態(tài)測試_第2頁
靜態(tài)測試與動(dòng)態(tài)測試_第3頁
靜態(tài)測試與動(dòng)態(tài)測試_第4頁
靜態(tài)測試與動(dòng)態(tài)測試_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、靜態(tài)測試與動(dòng)態(tài)測試第1頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四主要內(nèi)容1靜態(tài)測試與動(dòng)態(tài)測試的含義2代碼檢查3靜態(tài)結(jié)構(gòu)分析4程序插樁5邏輯覆蓋第2頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四 白盒測試可分為靜態(tài)測試和動(dòng)態(tài)測試。 靜態(tài)測試是一種不通過執(zhí)行程序而進(jìn)行測試的技術(shù),其關(guān)鍵功能是檢查軟件的表示和描述是否一致,沒有沖突或者沒有歧義。側(cè)重于糾正軟件系統(tǒng)在描述、表示和規(guī)格上的錯(cuò)誤,是任何進(jìn)一步測試的前提。 動(dòng)態(tài)測試需要軟件執(zhí)行,當(dāng)軟件系統(tǒng)在模擬或真實(shí)環(huán)境中執(zhí)行之前、之中和之后,對(duì)軟件系統(tǒng)行為的分析是動(dòng)態(tài)測試的主要特點(diǎn)。它顯示一個(gè)系統(tǒng)在檢查狀態(tài)下是正確還是不正確。靜態(tài)測

2、試與動(dòng)態(tài)測試的含義第3頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四 最常見的靜態(tài)測試是找出源代碼的語法錯(cuò)誤,可由編譯器來完成,因編譯器可逐行分析檢驗(yàn)程序的語法,找出錯(cuò)誤并報(bào)告。 除此之外,測試人員須采用人工方法來檢驗(yàn)程序,有些地方存在非語法方面錯(cuò)誤,只能通過人工檢測的方法來判斷。 人工檢測的方法主要有代碼檢查法、靜態(tài)結(jié)構(gòu)分析法等。3.1 靜態(tài)測試第4頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四代碼檢查法主要是通過桌面檢查,代碼審查和走查方式,對(duì)以下內(nèi)容進(jìn)行檢查: (1) 檢查代碼和設(shè)計(jì)的一致性; (2) 代碼的可讀性及對(duì)軟件設(shè)計(jì)標(biāo)準(zhǔn)的遵循情況; (3) 代碼邏輯表達(dá)的正

3、確性; (4) 代碼結(jié)構(gòu)的合理性; (5) 程序中不安全、不明確和模糊的部分; (6) 編程風(fēng)格方面的問題等。1 代碼檢查法第5頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四(1)桌面檢查(2)代碼審查(3)走查代碼檢查方式第6頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四代碼會(huì)審是由一組人通過閱讀、討論和爭議對(duì)程序進(jìn)行靜態(tài)分析的過程。代碼審查小組成員:組長:能力較強(qiáng)的程序員待審程序的設(shè)計(jì)者或程序員測試專家第7頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四代碼審查時(shí)應(yīng)注意問題:提出的建議應(yīng)針對(duì)程序本身,而不應(yīng)針對(duì)程序員。程序員對(duì)整個(gè)審查過程采取積極和建設(shè)性的態(tài)度。

4、第8頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四代碼走查(code walkthrough) 走查是以小組為單元進(jìn)行代碼閱讀的,同樣也是一系列規(guī)程和錯(cuò)誤檢查技術(shù)的集合。人員組成一位經(jīng)驗(yàn)豐富的程序員一位程序設(shè)計(jì)語言專家一位程序員新手一位其他不同項(xiàng)目的人員一位該軟件編程小組的成員第9頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四必須修改的問題(3)程序沒有注釋程序=代碼+注釋注釋語句/總代碼行數(shù)=1/51/4子函數(shù)max沒有返回值類型精度丟失問題建議修改的問題(3)main函數(shù)沒有返回值類型和參數(shù)表(默認(rèn)為void main (void)1行代碼只定義1個(gè)變量。程序適當(dāng)加一些

5、空行程序中存在未使用的變量#includemax(float x,float y) float z; z=xy?x:y; return(z);main() float a,b; int c,d; scanf(%f,%f,&a,&b); c=max(a,b); printf(Max is %dn,c);第10頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四測試人員通過使用測試工具分析程序源代碼的系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)接口、內(nèi)部控制邏輯等內(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ù)流

6、分析、接口分析、表達(dá)式分析等,使其便于閱讀與理解,然后可以通過分析這些圖表,檢查軟件是否存在缺陷或錯(cuò)誤。 2 靜態(tài)結(jié)構(gòu)分析法第11頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四 靜態(tài)結(jié)構(gòu)分析法通常采用以下方法進(jìn)行源程序的靜態(tài)分析: (1) 通過各種圖表對(duì)源程序進(jìn)行靜態(tài)分析 常用的各種引用表主要有: 標(biāo)號(hào)交叉引用表 變量交叉引用表 子程序(宏、函數(shù))引用表 等價(jià)表 常數(shù)表第12頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四 函數(shù)調(diào)用關(guān)系圖:列出所有函數(shù),用連線表示調(diào)用關(guān)系,通過應(yīng)用程序各函數(shù)之間的調(diào)用關(guān)系展示系統(tǒng)的結(jié)構(gòu)。 模塊控制流圖:由許多結(jié)點(diǎn)和連接結(jié)點(diǎn)的邊組成的圖形,其中

7、每個(gè)結(jié)點(diǎn)代表一條或多條語句,邊表示控制流向,可直觀反映出一個(gè)函數(shù)的內(nèi)部結(jié)構(gòu)。常用的關(guān)系圖、控制流圖第13頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四靜態(tài)錯(cuò)誤分析主要用于確定在源程序中是否有某類錯(cuò)誤或“危險(xiǎn)”結(jié)構(gòu)。 類型和單位分析 引用分析 表達(dá)式分析 接口分析(2) 錯(cuò)誤靜態(tài)分析第14頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四 在軟件動(dòng)態(tài)測試中,程序插樁是一種基本的測試手段,有著廣泛的應(yīng)用。 程序插樁方法是借助往被測程序中插入操作,來實(shí)現(xiàn)測試目的的方法,即向源程序中添加一些語句,實(shí)現(xiàn)對(duì)程序語句的執(zhí)行、變量的變化等情況進(jìn)行檢查。 3.2 程序插樁技術(shù)第15頁,共32頁,

8、2022年,5月20日,2點(diǎn)41分,星期四 想了解一個(gè)程序在某次運(yùn)行中所有可執(zhí)行語句被覆蓋的情況,或是每個(gè)語句的實(shí)際執(zhí)行次數(shù),最好的辦法是利用插樁技術(shù)。 以計(jì)算整數(shù)X和整數(shù)Y的最大公約數(shù)程序?yàn)槔?,說明插樁方法的要點(diǎn)。圖3-1給出了這一程序的流程圖。 第16頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四圖3-1 插樁后求最大公約數(shù)程序的流程圖 第17頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四設(shè)計(jì)插樁程序時(shí)需要考慮的問題包括: 探測哪些信息; 在程序的什么部位設(shè)置探測點(diǎn); 需要設(shè)置多少個(gè)探測點(diǎn); 程序中特定部位插入某些用以判斷變量特性的語句。如.NET里的插入斷言語句: D

9、ebug.Assert(this.textBox3.Text.Length0,“輸入值為空!); int a = Int32.Parse();第18頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四 邏輯覆蓋是白盒測試中動(dòng)態(tài)測試技術(shù)主要方法之一,是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的測試技術(shù),通過對(duì)程序邏輯結(jié)構(gòu)的遍歷實(shí)現(xiàn)程序的覆蓋,要求測試人員對(duì)程序的邏輯結(jié)構(gòu)有清楚的了解。3.3 邏輯覆蓋第19頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四邏輯覆蓋原則保證一個(gè)模塊中的左右獨(dú)立路徑至少被使用一次對(duì)所有邏輯值均需測試true和false在上下邊界及可操作范圍內(nèi)運(yùn)行所有循環(huán)檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)以

10、確保其有效性第20頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四從覆蓋源程序語句的詳細(xì)程度分析,邏輯覆蓋標(biāo)準(zhǔn)有語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋。為便于理解,根據(jù)下面所示的2個(gè)被測試程序(用C語言書寫),分別討論幾種常用的覆蓋技術(shù)。第21頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四程序1如下:Void js(float A,float B,float X) if( A1&B=0) X=X/A; if(A=2|X1) X=X+1; 第22頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四圖3-3 程序1流程圖第23頁,共32頁,2022年,5月

11、20日,2點(diǎn)41分,星期四程序2如下: void DoWork(int x,int y,int z) int k=0,j=0; if(x3)&(z5) j=x*y+10; 語句塊2 j=j%3; 語句塊3 第24頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四圖3-4 程序2流程圖第25頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四1語句覆蓋 語句覆蓋使程序中每個(gè)語句至少都能被執(zhí)行一次。 如程序1中,為使程序中每個(gè)語句至少執(zhí)行一次,只需設(shè)計(jì)一個(gè)能通過路徑a-c-e的數(shù)據(jù)就可以了,例如選擇輸入數(shù)據(jù)為:A=2,B=0,X=3就可達(dá)到“語句覆蓋”標(biāo)準(zhǔn)。 在程序2中,如測試用例輸入為

12、:x=4、y=5、z=5 程序執(zhí)行的路徑是:a-b-d。 第26頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四2 判定覆蓋 比語句覆蓋稍強(qiáng)的覆蓋標(biāo)準(zhǔn)是判定覆蓋。 設(shè)計(jì)若干測試用例,運(yùn)行被測程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次,即判斷的真假值均曾被滿足。 判定覆蓋又稱為分支覆蓋。第27頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四3 條件覆蓋 在設(shè)計(jì)程序中,一個(gè)判定語句是由多個(gè)條件組合而成的復(fù)合判定。 條件覆蓋的含義是:構(gòu)造一組測試用例,使得每一判定語句中每個(gè)邏輯條件的可能值至少滿足一次。第28頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四4條件

13、判定組合覆蓋 條件判定組合覆蓋的含義是:設(shè)計(jì)足夠的測試用例,使得判定中每個(gè)條件的所有可能(真/假)至少出現(xiàn)一次,并且每個(gè)判定本身的判定結(jié)果(真/假)也至少出現(xiàn)一次。第29頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四5多條件覆蓋 多條件覆蓋也稱為條件組合覆蓋,其含義是:設(shè)計(jì)足夠的測試用例,使得每個(gè)判定中條件的各種可能組合都至少出現(xiàn)一次。 顯然滿足多條件覆蓋的測試用例是一定滿足判定覆蓋、條件覆蓋和條件判定組合覆蓋的。第30頁,共32頁,2022年,5月20日,2點(diǎn)41分,星期四測試覆蓋準(zhǔn)則(1)Foster的ESTCA覆蓋準(zhǔn)則 前面介紹的邏輯覆蓋其出發(fā)點(diǎn)似乎是合理的。 所謂“覆蓋”,就是想要做到全面而無遺漏。但是,事實(shí)表明,它并不能真的做到無遺漏

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論