軟件測試課件第4章 軟件測試過程1 單元測試_第1頁
軟件測試課件第4章 軟件測試過程1 單元測試_第2頁
軟件測試課件第4章 軟件測試過程1 單元測試_第3頁
軟件測試課件第4章 軟件測試過程1 單元測試_第4頁
軟件測試課件第4章 軟件測試過程1 單元測試_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章軟件測試過程————(一)單元測試4.1單元測試概述單元測試是開發(fā)者通過編寫代碼檢驗被測代碼的某單元功能是否正確而進行的測試一個單元測試是用于判斷某個特定條件(或者場景)下某個特定函數(shù)的行為單元測試與其他測試不同,可以看作是編碼工作的一部分,是由程序員自己完成的單元測試是軟件測試的基礎(chǔ),其效果會直接影響到軟件后期的測試,最終在很大程度上影響軟件質(zhì)量。單元測試概述單元測試的一些規(guī)范和原則單元測試進行的越早越好,甚至可以“測試驅(qū)動開發(fā)”;單元測試應(yīng)該依據(jù)詳細規(guī)格說明書進行;單元測試應(yīng)該按照單元測試計劃和方案進行,排除測試隨意性;單元測試用例應(yīng)該經(jīng)過審核;對全新的代碼和修改過的代碼都應(yīng)該進行單元測試;應(yīng)當選擇合適的被測單元的大?。粚Ρ粶y試單元應(yīng)達到一定的覆蓋率要求;測試內(nèi)容應(yīng)當包括正面測試和負面測試;當測試用例的測試結(jié)果與設(shè)計規(guī)格說明不同時,測試人員應(yīng)當如實記錄測試結(jié)果;注意使用單元測試工具。單元測試概述單元測試內(nèi)容測試用例模塊……………………………….......................模塊接口局部數(shù)據(jù)結(jié)構(gòu)獨立路徑錯誤處理邊界條件單元測試概述單元測試內(nèi)容測試模塊的接口是為了保證被測程序單元的信息能夠正常地流入和流出;檢查局部數(shù)據(jù)結(jié)構(gòu)是為了確保臨時存儲的數(shù)據(jù)在算法的整個執(zhí)行過程中能夠維持其完整性;執(zhí)行控制結(jié)構(gòu)中的所有獨立路徑(基本路徑)以確保模塊中的所有語句至少執(zhí)行一次;測試錯誤處理確保被測模塊在工作中發(fā)生了錯誤能夠做出有效的錯誤處理措施;測試邊界條件確保模塊在到達邊界值的極限或受限處理的情形下仍能正確執(zhí)行。單元測試概述單元測試方法在進行單元測試時,被測試的單元本身不是獨立的程序,需要為其開發(fā)驅(qū)動模塊和樁模塊驅(qū)動模塊是用來模擬待測試模塊的上級模塊樁模塊也稱為存根程序,用以模擬待測模塊工作過程中所調(diào)用的模塊單元測試概述單元測試方法單元測試的環(huán)境如下圖所示單元測試概述單元測試方法代碼審查是單元測試的第一步,保證代碼算法的邏輯正確性、清晰性、規(guī)范性、一致性,具體將審查以下內(nèi)容命名規(guī)則檢查,審查變量名、函數(shù)名等是否遵循命名規(guī)則;代碼格式檢查,審查是否遵循編碼規(guī)范及代碼格式;內(nèi)存使用,審查程序是否讀取了未初始化的內(nèi)存、是否存在越界使用內(nèi)存、指針使用是否正確以及是否釋放已分配的內(nèi)存;表達式判斷,審查邏輯表達式是否正確、是否正確使用邏輯表達式中的變量、各判斷分支是否都得到了處理等;可讀性,審查縮進控制是否有效提高代碼的可讀性,注釋是否準確、充分、有意義以及標號、程序(函數(shù)名)、變量名等是否有意義且準確;程序多余物,審查是否存在執(zhí)行不到的代碼、是否存在垃圾語句以及聲明的變量、常量、函數(shù)等是否使用。單元測試概述單元測試方法然后使用測試工具進行靜態(tài)分析,通過控制流程分析、數(shù)據(jù)流分析以及表達式分析來盡可能發(fā)現(xiàn)代碼中存在的錯誤。然后設(shè)計測試用例,達到一定的覆蓋標準并執(zhí)行測試用例,還要考慮邊界值情況和單元運行的效率,包括運行時間、占用空間以及精度等參數(shù)。還可采用錯誤推測法,列舉出程序中可能存在的和容易發(fā)生的錯誤,并根據(jù)測試經(jīng)驗,對這些錯誤作重點測試。單元測試概述單元測試過程單元測試的實施步驟包括:測試策劃,在詳細設(shè)計階段完成單元測試計劃;測試設(shè)計,建立單元測試環(huán)境,完成測試設(shè)計和開發(fā);測試執(zhí)行,執(zhí)行單元測試用例,并詳細記錄測試結(jié)果;測試總結(jié),判定測試用例是否通過并提交測試文檔。單元測試中的覆蓋率函數(shù)覆蓋函數(shù)覆蓋主要是評估在進行測試時函數(shù)的執(zhí)行比率,函數(shù)覆蓋率用下列公式進行計算:函數(shù)覆蓋率=至少執(zhí)行到一次的函數(shù)數(shù)量/被測試系統(tǒng)中的函數(shù)總數(shù)量從公式可以看出來,函數(shù)覆蓋率是一種比語句覆蓋率更簡單的覆蓋,主要用來檢查哪些單元沒有被執(zhí)行,防止遺漏對某些單元的測試。單元測試中的覆蓋率Z路徑覆蓋一個循環(huán)無論其循環(huán)了多少次,被看成最多只有兩條路徑——執(zhí)行和未執(zhí)行兩種情況將整個程序的路徑畫成路徑樹,然后根據(jù)樹上的葉子節(jié)點來得到程序的路徑,從根節(jié)點到葉子節(jié)點進行遍歷,當所有葉子節(jié)點被遍歷完全后,就能得到所有的路徑。這些路徑被稱為Z路徑為所有路徑生成測試用例進行測試,就做到了Z路徑覆蓋測試單元測試中的覆蓋率ESTCA覆蓋ESTCA覆蓋最核心的部分是一套錯誤敏感測試用例分析規(guī)則ESTCA(ErrorSensitiveTestCasesAnalysis),具體規(guī)則如下:對于ArelB(rel可以是<、=或>)型的分支謂詞,應(yīng)適當選擇A與B的值,使測試執(zhí)行到該分支語句時,A<B、A=B、A>B的情況分別出現(xiàn)一次。對于Arel1C(rel1可以是<或>,A是變量,C是常量)型的分支謂詞,當rel1為“<”時,應(yīng)適當?shù)剡x取A的值,使得A=C-M。

同理當rel1為“>”時,應(yīng)適當?shù)剡x擇A,使A=C+M。對外部輸入的變量賦值,使其在每一個測試用例中均有不同的值與符號,并與同一組測試用例中其他變量的值與符號不一致。單元測試中的覆蓋率LCSAJ覆蓋一個LCSAJ其實是一組順序執(zhí)行的代碼,它的起點是由程序本身決定。起點可以是程序第一行(入口)或轉(zhuǎn)移語句的入口點,也可以是控制流可跳轉(zhuǎn)的點。一個LCSAJ可能結(jié)束于程序的出口,也可能結(jié)束于一個導(dǎo)致控制流跳轉(zhuǎn)的點。如果有幾個LCSAJ首尾相接,且第一個LCSAJ起點為程序起點,最后一個LCSAJ終點為程序終點,這些LCSAJ串就組成了程序的一條路徑(LCSAJ路徑)。一條LCSAJ路徑可能是由2個、3個或多個LCSAJ組成。單元測試中的覆蓋率LCSAJ覆蓋LCSAJ覆蓋準則是一個分層的覆蓋準則,具體介紹如下:第一層:語句覆蓋。第二層:分支覆蓋。第三層:LCSAJ覆蓋。即程序中的每一個LCSAJ至少都在測試中經(jīng)歷過一次。第四層:兩兩LCSAJ覆蓋。程序中每兩個首尾相連的LCSAJ組合起來在測試中都要經(jīng)歷一次。......第n層:每n個首尾相連的LCSAJ組合在測試中都經(jīng)歷一次單元測試中的覆蓋率LCSAJ覆蓋以下面的程序為例,尋找其中的LCSAJ路徑單元測試中的覆蓋率LCSAJ覆蓋根據(jù)上面的程序畫

出其流程圖單元測試中的覆蓋率LCSAJ覆蓋可以看出,該程序中共有如下5個LCSAJ:(1)intk=0,j=0;if((x>3)&&(z<10))(2)k=x*y-1;j=sqrt(k);if((x==4)||(y>5))(3)if((x==4)||(y>5))(4)j=x*y+10;j=j%3;(5)j=j%3;分析得到4條LCSAJ路徑:(1)-(2)-(4)(1)-(2)-(5)(1)-(3)-(4)(1)-(3)-(5)單元測試中的覆蓋率MC/DC覆蓋MC/DC是DO-178B(美軍標)中首次提出的,開始是為了提高航空軟件測試中的覆蓋率水平在DO-178B標準中,對MC/DC有如下要求:判定中每個條件的所有可能結(jié)果至少出現(xiàn)一次;每個判定本身的所有可能結(jié)果也至少出現(xiàn)一次;每個入口點和出口點至少要執(zhí)行一次;每個條件都能單獨影響判定結(jié)果。單元測試中的覆蓋率MC/DC覆蓋以下面程序為例,設(shè)計測試用例滿足MC/DC覆蓋單元測試中的覆蓋率MC/DC覆蓋以下5個測試用例所能達到的MC/DC覆蓋率序號輸入A輸入B輸入C輸入DMC/DC覆蓋率1000102010125%3010050%4011075%51001100%單元測試中的覆蓋率MC/DC覆蓋

MC/DC發(fā)現(xiàn)的主要軟件問題包括:ORF:OperatorReferenceFaults,例如“與”被誤寫成“或”。VNF:VariableNegationFaults,一個變量被誤寫成了它的否定。ENF:ExpressionNegationFaults,一個表達式被誤寫成了它的否定。單元測試案例俄羅斯方塊游戲排行榜排行榜功能是俄羅斯方塊游戲中不可或缺的一部分,用以將當前用戶的得分與歷史得分記錄進行比較并重新排序。主要涉及的功能點有歷史記錄文件的讀取分數(shù)排名的計算與排序新紀錄文件的保存新紀錄的顯示等單元測試案例待測源代碼單元測試案例待測源代碼單元測試案例測試設(shè)計代碼走查首先利用代碼走查的方法檢查一下該模塊的代碼,對代碼質(zhì)量進行初步的評估本模塊的代碼基本情況如下:代碼直觀代碼和設(shè)計文檔對應(yīng)無用的代碼已經(jīng)刪除注釋過于簡單單元測試案例測試設(shè)計基本路徑法繪制程序的控制流圖計算環(huán)路復(fù)雜度導(dǎo)出獨立路徑設(shè)計測試用例邊界值法單元測試案例簡化程序模塊,繪制程序模塊圖:單元測試案例測試設(shè)計基本路徑法繪制程序的控制流圖:計算環(huán)路復(fù)雜度V(G)=P+1=5+1=6,

確定至少要覆蓋6條路徑。導(dǎo)出獨立路徑根據(jù)控制流圖可以方便得到以下6條路徑:路徑1:1-2-11

路徑2:1-3-4-11

路徑3:1-3-5-6-11

路徑4:1-3-5-7-8-11

路徑5:1-3-5-7-9-10-11

路徑6:1-3-5-7-9-11單元測試案例測試設(shè)計基本路徑法設(shè)計測試用例令:

person1=23;

person2=20;

person3=10;

person4=6;

person5=4;作為測試輸入,設(shè)計測試用例如表:單元測試案例測試設(shè)計基本路徑法設(shè)計測試用例編號輸入數(shù)據(jù)輸出數(shù)據(jù)路徑覆蓋判斷覆蓋scoreperson1person2person3person4person51242423201061-2-11T2212321201061-3-4-11FT3152320151061-3-5-6-11FFT48232010861-3-5-7-8-11FFFT55232010651-3-5-7-9-10-11FFFFT60232010641-3-5-7-9-11FFFFF單元測試案例測試設(shè)計邊界值法令:

person1=23;

person2=20;

person3=10;

person4=6;

person5=4;采用邊界值法設(shè)計測試用例測試執(zhí)行測試總結(jié)單元測試案例測試設(shè)計邊界值法序號測試內(nèi)容測試數(shù)據(jù)期望結(jié)果score1從大到小排序23person1=23person2=23person3=20person4=10person5=62從大到小排序24person1=24person2=23person3=20person4=10person5=63從大到小排序4person1=23person2=20perso

溫馨提示

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

評論

0/150

提交評論