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

下載本文檔

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

文檔簡(jiǎn)介

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

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

出其流程圖單元測(cè)試中的覆蓋率LCSAJ覆蓋可以看出,該程序中共有如下5個(gè)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)單元測(cè)試中的覆蓋率MC/DC覆蓋MC/DC是DO-178B(美軍標(biāo))中首次提出的,開始是為了提高航空軟件測(cè)試中的覆蓋率水平在DO-178B標(biāo)準(zhǔn)中,對(duì)MC/DC有如下要求:判定中每個(gè)條件的所有可能結(jié)果至少出現(xiàn)一次;每個(gè)判定本身的所有可能結(jié)果也至少出現(xiàn)一次;每個(gè)入口點(diǎn)和出口點(diǎn)至少要執(zhí)行一次;每個(gè)條件都能單獨(dú)影響判定結(jié)果。單元測(cè)試中的覆蓋率MC/DC覆蓋以下面程序?yàn)槔O(shè)計(jì)測(cè)試用例滿足MC/DC覆蓋單元測(cè)試中的覆蓋率MC/DC覆蓋以下5個(gè)測(cè)試用例所能達(dá)到的MC/DC覆蓋率序號(hào)輸入A輸入B輸入C輸入DMC/DC覆蓋率1000102010125%3010050%4011075%51001100%單元測(cè)試中的覆蓋率MC/DC覆蓋

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

確定至少要覆蓋6條路徑。導(dǎo)出獨(dú)立路徑根據(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單元測(cè)試案例測(cè)試設(shè)計(jì)基本路徑法設(shè)計(jì)測(cè)試用例令:

person1=23;

person2=20;

person3=10;

person4=6;

person5=4;作為測(cè)試輸入,設(shè)計(jì)測(cè)試用例如表:?jiǎn)卧獪y(cè)試案例測(cè)試設(shè)計(jì)基本路徑法設(shè)計(jì)測(cè)試用例編號(hào)輸入數(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單元測(cè)試案例測(cè)試設(shè)計(jì)邊界值法令:

person1=23;

person2=20;

person3=10;

person4=6;

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

溫馨提示

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