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

下載本文檔

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

文檔簡(jiǎn)介

1、軟件測(cè)試方法和技術(shù) - Ch.51第五章 單元測(cè)試5.1 什么是單元測(cè)試5.2 單元測(cè)試的目標(biāo)和任務(wù)5.3 靜態(tài)測(cè)試5.4 驅(qū)動(dòng)程序與樁程序5.5 調(diào)試與評(píng)估5.6 單元測(cè)試管理5.7 單元測(cè)試工具25.1 什么是單元測(cè)試測(cè)試的4個(gè)階段: 單元測(cè)試集成測(cè)試 系統(tǒng)測(cè)試驗(yàn)收測(cè)試按階段進(jìn)行測(cè)試是一種基本的測(cè)試策略3單元測(cè)試的定義定義: 單元測(cè)試是對(duì)軟件基本組成單元進(jìn)行的測(cè)試。時(shí)機(jī): 一般在代碼完成后由開(kāi)發(fā)人員完成,QA人員輔助.對(duì)象: 軟件設(shè)計(jì)的最小單位模塊(組件、單元),z作為單元能夠?qū)崿F(xiàn)一個(gè)特定的功能,并和其他單元有明確的接口定義。 4單元測(cè)試目標(biāo):確保模塊被正確地編碼依據(jù):詳細(xì)設(shè)計(jì)描述過(guò)程:設(shè)

2、計(jì)、腳本開(kāi)發(fā)、執(zhí)行、調(diào)試、分析結(jié)果執(zhí)行者:測(cè)試人員和開(kāi)發(fā)人員測(cè)試方法:白盒方法為主,輔以黑盒方法評(píng)估:通過(guò)所有單元測(cè)試用例,代碼沒(méi)有嚴(yán)重缺陷。 5為何要進(jìn)行單元測(cè)試?盡早發(fā)現(xiàn)錯(cuò)誤錯(cuò)誤發(fā)現(xiàn)越早,成本越低.開(kāi)發(fā)人員過(guò)于自信,后期復(fù)雜度高,發(fā)現(xiàn)解決BUG困難.檢查代碼是否符合設(shè)計(jì)和規(guī)范 12小時(shí)6小時(shí)3小時(shí)單元測(cè)試集成測(cè)試系統(tǒng)測(cè)試6單元測(cè)試的背景開(kāi)發(fā)流程時(shí)間表與修改Bug代價(jià)的關(guān)系圖開(kāi)發(fā)結(jié)束開(kāi)發(fā)早期修改代價(jià)7單元測(cè)試的背景(續(xù))編程過(guò)程中,每寫(xiě)100行代碼會(huì)犯150個(gè)錯(cuò)誤編程與編譯運(yùn)行結(jié)束后,每100行代碼中大約殘留有1-3個(gè)Bug尋找與修改程序錯(cuò)誤的代價(jià)占總體開(kāi)發(fā)投資的40%-80%Bug在整個(gè)研

3、發(fā)流程中被發(fā)現(xiàn)的越早,修改的代價(jià)就越低85.2 單元測(cè)試的目標(biāo)和任務(wù)目標(biāo): 單元模塊被正確編碼功能正確,結(jié)構(gòu)可靠健全,并能在所有條件下正確響應(yīng)。信息能否正確地流入和流出單元;在單元工作過(guò)程中,其內(nèi)部數(shù)據(jù)能否保持其完整性,包括內(nèi)部數(shù)據(jù)的形式、內(nèi)容及相互關(guān)系不發(fā)生錯(cuò)誤,也包括全局變量在單元中的處理和影響。 在為限制數(shù)據(jù)加工而設(shè)置的邊界處,能否正確工作。單元的運(yùn)行能否做到滿(mǎn)足特定的邏輯覆蓋。 單元中發(fā)生了錯(cuò)誤,其中的出錯(cuò)處理措施是否有效。9任務(wù)1: 模塊獨(dú)立執(zhí)行通路測(cè)試檢查每一條獨(dú)立執(zhí)行路徑的測(cè)試。保證每條語(yǔ)句被至少執(zhí)行一次。(基本路徑測(cè)試)Checklist: 算符優(yōu)先級(jí)。 混合類(lèi)型運(yùn)算。 精度不

4、夠。 表達(dá)式符號(hào)。 循環(huán)條件,死循環(huán)。 其它10任務(wù)2: 模塊局部數(shù)據(jù)結(jié)構(gòu)測(cè)試檢查局部數(shù)據(jù)結(jié)構(gòu)完整性Checklist: 不適合或不相容的類(lèi)型說(shuō)明。 變量無(wú)初值。 變量初始化或默認(rèn)值有錯(cuò)。 不正確的變量名或從來(lái)未被使用過(guò)。 出現(xiàn)上溢或下溢和地址異常。 其它11任務(wù)3: 模塊接口測(cè)試檢查模塊接口是否正確,checklist: 輸入的實(shí)際參數(shù)與形式參數(shù)是否一致。個(gè)數(shù)、屬性、量綱 調(diào)用其他模塊的實(shí)際參數(shù)與被調(diào)模塊的形參是否一致。個(gè)數(shù)、屬性、量綱 全程變量的定義在各模塊是否一致。 外部輸入、輸出文件、緩沖區(qū)、錯(cuò)誤處理 其它12任務(wù)4: 模塊邊界條件測(cè)試檢查臨界數(shù)據(jù)處理的正確性Checklist: 普通

5、合法數(shù)據(jù)的處理。 普通非法數(shù)據(jù)的處理。 邊界值內(nèi)合法邊界數(shù)據(jù)的處理。 邊界值外非法邊界數(shù)據(jù)的處理。 其它13任務(wù)5:模塊的各條錯(cuò)誤處理通路測(cè)試預(yù)見(jiàn)、預(yù)設(shè)的各種出錯(cuò)處理是否正確有效。Checklist: 輸出的出錯(cuò)信息難以理解。 記錄的錯(cuò)誤與實(shí)際不相符。 程序定義的出錯(cuò)處理前系統(tǒng)已介入。 異常處理不當(dāng)。 未提供足夠的定位出錯(cuò)的信息。 其它14任務(wù)6:內(nèi)存分析內(nèi)存泄漏會(huì)導(dǎo)致系統(tǒng)運(yùn)行崩潰。通過(guò)測(cè)量?jī)?nèi)存使用情況了解程序內(nèi)存分配情況,發(fā)現(xiàn)對(duì)內(nèi)存的不正常使用,在問(wèn)題出現(xiàn)前發(fā)現(xiàn)征兆,在系統(tǒng)崩潰前發(fā)現(xiàn)內(nèi)存泄漏錯(cuò)誤;發(fā)現(xiàn)內(nèi)存分配錯(cuò)誤。155.3 靜態(tài)測(cè)試技術(shù)的運(yùn)用定義:在不執(zhí)行軟件的條件下有條理地仔細(xì)審查軟件設(shè)

6、計(jì)、體系結(jié)構(gòu)和代碼,從而找出軟件缺陷的過(guò)程。有時(shí)也稱(chēng)為結(jié)構(gòu)分析。作用:盡早發(fā)現(xiàn)軟件缺陷,以找出動(dòng)態(tài)黑盒白盒測(cè)試難以揭示或發(fā)現(xiàn)的軟件缺陷為接受該軟件測(cè)試的黑盒測(cè)試員進(jìn)行測(cè)試設(shè)計(jì)測(cè)試案例提供思路,他們不必了解代碼細(xì)節(jié),但是根據(jù)審查備注,可以確定有問(wèn)題或者容易存在軟件缺陷的特性范圍問(wèn)題:認(rèn)為會(huì)減慢軟件開(kāi)發(fā)過(guò)程。16編碼的標(biāo)準(zhǔn)和規(guī)范標(biāo)準(zhǔn):建立起來(lái),經(jīng)過(guò)修補(bǔ)和必須遵守的規(guī)則。規(guī)范:建議最佳做法,推薦更好方法。堅(jiān)持編程標(biāo)準(zhǔn)和規(guī)范的原因可靠性:事實(shí)證明按照按規(guī)范編寫(xiě)的代碼更可靠,軟件缺陷將更少;可讀性/維護(hù)性:符合標(biāo)準(zhǔn)和規(guī)范的代碼易于閱讀,理解和維護(hù);移植性:如果代碼符合設(shè)備標(biāo)準(zhǔn),遷移到另一個(gè)平臺(tái)就會(huì)容易,

7、甚至沒(méi)有任何障礙。17正式審查三部曲走查 (Walk Through)審查 (Inspection)評(píng)審 (Review)18走查 (Walk Through)定義:編寫(xiě)代碼的程序員向5人小組或其它類(lèi)似的程序員或測(cè)試員做正式表述。注意:審查人員應(yīng)該在審查之前接到軟件拷貝,在走查前通讀設(shè)計(jì)和編碼,以便檢查并編寫(xiě)備注和問(wèn)題,在審查過(guò)程中提問(wèn)。 表述者現(xiàn)場(chǎng)采用講解或模擬運(yùn)行的方法解釋代碼如何工作。檢查要點(diǎn)在于代碼編寫(xiě)是否符合規(guī)范和標(biāo)準(zhǔn),是否存在邏輯錯(cuò)誤;限時(shí),避免跑題。發(fā)現(xiàn)問(wèn)題適當(dāng)記錄,避免現(xiàn)場(chǎng)修改。19審查 (Inspection)定義:是最正式的審查類(lèi)型,具有高度組織化,采用講解、提問(wèn)方式進(jìn)行,

8、一般有正式的計(jì)劃、流程和結(jié)果。主要方法采用缺陷檢查表。注意: 以會(huì)議形式,制定會(huì)議目標(biāo)、流程和規(guī)則,結(jié)束后要編寫(xiě)報(bào)告。發(fā)現(xiàn)問(wèn)題適當(dāng)記錄,避免現(xiàn)場(chǎng)修改。 發(fā)現(xiàn)重大缺陷,改正后會(huì)議需要重開(kāi)。按缺陷檢查表逐項(xiàng)檢查。檢查要點(diǎn)是缺陷檢查表,所以該表要根據(jù)項(xiàng)目不同不斷積累完善。20走查與審查的比較21評(píng)審 (Review)定義:通常在審查會(huì)后進(jìn)行,審查小組根據(jù)記錄和報(bào)告進(jìn)行評(píng)估。注意: 充分審查了所規(guī)定的代碼,并且全部編碼準(zhǔn)則被遵守。 審查中發(fā)現(xiàn)的錯(cuò)誤已全部修改。22單元測(cè)試實(shí)例一:基本路徑測(cè)試四:等價(jià)類(lèi)劃分、邊界值分析二、三:編程規(guī)范(靜態(tài)檢查)五:錯(cuò)誤推測(cè)、錯(cuò)誤數(shù)據(jù)六:性能檢查23單元測(cè)試實(shí)例白盒測(cè)試

9、路徑測(cè)試1:path1:P(1-2-3-4-5-6-7-8-9-10)path2:P(1-2-3-4-9-10)用例編號(hào)路徑輸入數(shù)據(jù)預(yù)期輸出1 path1100,100,100True2path2201,100,100False24路徑測(cè)試2:path1:P(11-12-13-14-23-24-25)path2:P(11-12-13-14-15-16-17-23-24-25)path3:P(11-12-13-14-15-18-19-23-24-25)path4:P(11-12-13-14-15-20-21-23-24-25)用例編號(hào)路徑輸入數(shù)據(jù)預(yù)期輸出1 path1201,100,100空格2

10、 path2100,100,100等邊三角形3 Path3100,90,80不等邊三角形4 Path490,90,100等腰三角形255.4 驅(qū)動(dòng)程序和樁程序驅(qū)動(dòng)程序/驅(qū)動(dòng)模塊(driver),用以模擬被測(cè)模塊的上級(jí)模塊。作用:接受測(cè)試數(shù)據(jù),把相關(guān)的數(shù)據(jù)傳送給被測(cè)模塊,啟動(dòng)被測(cè)模塊,并打印出相應(yīng)的結(jié)果。樁程序/樁模塊(stub),又稱(chēng)為存根程序,用以模擬被測(cè)模塊工作過(guò)程中所調(diào)用的模塊。作用:由被測(cè)模塊調(diào)用,一般只進(jìn)行很少的數(shù)據(jù)處理,例如打印入口和返回,以便于檢驗(yàn)被測(cè)模塊與其下級(jí)模塊的接口265.5 調(diào)試與評(píng)估測(cè)試和調(diào)試是不同的。白盒測(cè)試的目標(biāo)是尋找軟件缺陷;調(diào)試的目的是修復(fù)軟件缺陷。它們?cè)诟綦x

11、軟件缺陷的位置和原因上確實(shí)存在交叉現(xiàn)象。測(cè)試員應(yīng)該把問(wèn)題縮減為能夠演示軟件缺陷的最簡(jiǎn)化測(cè)試案例。在白盒測(cè)試中,甚至要包含那些值得懷疑的代碼行信息。進(jìn)行調(diào)試的程序員從這里繼續(xù),判斷到底是什么導(dǎo)致的軟件缺陷,并設(shè)法修復(fù)。分清軟件測(cè)試員和程序員的工作。程序員編寫(xiě)代碼,修復(fù)軟件缺陷;測(cè)試員尋找軟件缺陷,可能還要編寫(xiě)一些代碼來(lái)驅(qū)動(dòng)測(cè)試,要進(jìn)行這樣的底層測(cè)試,就要使用與程序員相同的工具。具體操作方法不同275.5 調(diào)試與評(píng)估單元測(cè)試的一般標(biāo)準(zhǔn): 軟件單元功能與設(shè)計(jì)需求一致。 軟件單元接口與設(shè)計(jì)需求一致。 能夠正確處理輸入和運(yùn)行中的錯(cuò)誤。 在單元測(cè)試中發(fā)現(xiàn)的錯(cuò)誤已經(jīng)得到修改并且通過(guò)了測(cè)試。 達(dá)到了相關(guān)的覆蓋

12、率的要求。 完成軟件單元測(cè)試報(bào)告 28單元測(cè)試檢查表 (1)借助單元測(cè)試檢查表進(jìn)行評(píng)估。 案例:?jiǎn)卧獪y(cè)試檢查表單元名稱(chēng)_ 系統(tǒng) _ 構(gòu)造_任務(wù)編號(hào)_ 初次測(cè)試日期_關(guān)鍵測(cè)試項(xiàng)是否已糾正有無(wú)任何輸入?yún)?shù)沒(méi)有使用?有無(wú)任何輸出參數(shù)沒(méi)有產(chǎn)生?有無(wú)任何數(shù)據(jù)類(lèi)型不正確或不一致?有無(wú)任何算法與PDL或功能需求中的描述不一致?有無(wú)任何局部變量使用前沒(méi)有初始化?有無(wú)任何外部接口編碼錯(cuò)誤?即調(diào)用語(yǔ)句、文件存取、 數(shù)據(jù)庫(kù)錯(cuò)誤。有無(wú)任何邏輯路徑錯(cuò)誤?該單元是否有多個(gè)入口或多個(gè)正常的出口?29單元測(cè)試檢查表 (2)額外測(cè)試項(xiàng)8.該單元中有任何地方與PDL與PROLOG中的描述不一致?9.代碼中有無(wú)任何偏離本項(xiàng)目標(biāo)準(zhǔn)的

13、地方?10.代碼中有無(wú)任何對(duì)于用戶(hù)來(lái)說(shuō)不清楚的錯(cuò)誤提示信息?11.如果該單元是設(shè)計(jì)為可重用的,代碼中是有可能妨礙重用的地方?采取的動(dòng)作和說(shuō)明(請(qǐng)用單獨(dú)的一頁(yè)或多頁(yè)。每一項(xiàng)動(dòng)作必須指出所引用的問(wèn)題。)審查結(jié)果1.如果上述11個(gè)問(wèn)題的答案均為否,那么測(cè)試通過(guò),請(qǐng)?jiān)诖藰?biāo)記并且在最后簽名。2.如果代碼存在嚴(yán)重的問(wèn)題,例如多個(gè)關(guān)鍵問(wèn)題的答案為是,那么程序編制者糾正這些錯(cuò)誤,并且必須重新安排一次單元測(cè)試。下一次單元測(cè)試的日期:_3.如果代碼存在小的缺陷,那么程序編制者糾正這些錯(cuò)誤,并且仲裁者必須安排一次跟蹤會(huì)議。跟蹤會(huì)議的日期:_測(cè)試人簽名:_ 日期:_ 305.6 單元測(cè)試管理過(guò)程:在詳細(xì)設(shè)計(jì)階段完成單

14、元測(cè)試計(jì)劃。 建立單元測(cè)試環(huán)境,完成測(cè)試設(shè)計(jì)和開(kāi)發(fā)。 執(zhí)行單元測(cè)試用例,并且詳細(xì)記錄測(cè)試結(jié)果。 判定測(cè)試用例是否通過(guò)。 提交單元測(cè)試報(bào)告。31單元測(cè)試的文檔軟件需求規(guī)格說(shuō)明書(shū)、軟件詳細(xì)設(shè)計(jì)說(shuō)明書(shū) 單元測(cè)試計(jì)劃 單元測(cè)試計(jì)劃、軟件詳細(xì)設(shè)計(jì)說(shuō)明書(shū) 單元測(cè)試用例 單元測(cè)試用例文檔及軟件需求規(guī)格說(shuō)明書(shū)、軟件詳細(xì)設(shè)計(jì)說(shuō)明書(shū) 缺陷跟蹤報(bào)告/缺陷檢查表 單元測(cè)試用例、缺陷跟蹤報(bào)告、缺陷檢查表 單元測(cè)試檢查表 評(píng)估單元測(cè)試報(bào)告 325.7 單元測(cè)試常用工具簡(jiǎn)介單元測(cè)試工具(xUnit工具家族) Junit、CppUnit、NUnit、HtmlUnit等靜態(tài)檢查工具Checkstyle:對(duì)于代碼規(guī)范的檢查 PMD:增強(qiáng)代碼質(zhì)量和修改代碼的功能 FindBug:檢查二進(jìn)制代碼,尋找bug缺陷,并能進(jìn)行優(yōu)化單元性能測(cè)試工具SourceMonitor:為各種源代碼文件測(cè)試代碼的數(shù)量和性能。3334小結(jié)單元測(cè)試定義、目標(biāo)和任務(wù)靜態(tài)測(cè)試驅(qū)動(dòng)程序與樁程序調(diào)試與評(píng)估單元測(cè)試管理單元測(cè)試工具35練習(xí)P3

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論