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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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點41分,星期四測試人員通過使用測試工具分析程序源代碼的系統(tǒng)結構、數(shù)據(jù)結構、數(shù)據(jù)接口、內(nèi)部控制邏輯等內(nèi)部結構,生成函數(shù)調(diào)用關系圖、模塊控制流圖、內(nèi)部文件調(diào)用關系圖等各種圖形、圖表,清晰地標識整個軟件的組成結構。通過分析上述圖表,包括控制流分析、數(shù)據(jù)據(jù)流

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

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

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

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

10、確保其有效性第20頁,共32頁,2022年,5月20日,2點41分,星期四從覆蓋源程序語句的詳細程度分析,邏輯覆蓋標準有語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋。為便于理解,根據(jù)下面所示的2個被測試程序(用C語言書寫),分別討論幾種常用的覆蓋技術。第21頁,共32頁,2022年,5月20日,2點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點41分,星期四圖3-3 程序1流程圖第23頁,共32頁,2022年,5月

11、20日,2點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點41分,星期四圖3-4 程序2流程圖第25頁,共32頁,2022年,5月20日,2點41分,星期四1語句覆蓋 語句覆蓋使程序中每個語句至少都能被執(zhí)行一次。 如程序1中,為使程序中每個語句至少執(zhí)行一次,只需設計一個能通過路徑a-c-e的數(shù)據(jù)就可以了,例如選擇輸入數(shù)據(jù)為:A=2,B=0,X=3就可達到“語句覆蓋”標準。 在程序2中,如測試用例輸入為

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

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

溫馨提示

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

評論

0/150

提交評論