第二章軟件測試策略與過程_第1頁
第二章軟件測試策略與過程_第2頁
第二章軟件測試策略與過程_第3頁
第二章軟件測試策略與過程_第4頁
第二章軟件測試策略與過程_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件測試教程第二章 軟件測試策略與過程第一章 回顧n軟件測試的定義n軟件開發(fā)過程n軟件開發(fā)與軟件測試的關(guān)系n軟件測試過程n軟件質(zhì)量保證n軟件測試職業(yè)本章內(nèi)容n2.1軟件測試的復(fù)雜性分析n2.2軟件測試方法與策略n2.3單元測試n2.4集成測試n2.5確認(rèn)測試n2.6系統(tǒng)測試n2.7驗收測試n2.8軟件測試不同分類之間的關(guān)系軟件測試策略與過程n教學(xué)目標(biāo): 理解軟件測試的方法與策略;掌握單元測試、集成測試、系統(tǒng)測試、驗收測試等各個測試環(huán)節(jié)的要點;區(qū)別測試與調(diào)試n教學(xué)重點: 1.理解軟件測試的不同方法 2.掌握各個測試環(huán)節(jié)的要點n教學(xué)難點: 掌握集成測試的兩種方法軟件測試的復(fù)雜性分析2.1軟件測試的

2、復(fù)雜性分析2.1.1無法對程序進(jìn)行完全測試n測試所需要的輸入量太大n測試的輸出結(jié)果太多n軟件實現(xiàn)的途徑太多n軟件規(guī)格說明沒有客觀標(biāo)準(zhǔn)2.1.2測試無法顯示潛在的軟件缺陷和故障 軟件測試報告軟件已被發(fā)現(xiàn)的缺陷或故障,并不是全部軟件缺陷或故障。假若繼續(xù)進(jìn)行測試,又會發(fā)現(xiàn)一些新的缺陷或故障問題。軟件測試的復(fù)雜性分析2.1.3存在的故障現(xiàn)象與發(fā)現(xiàn)的故障數(shù)量成正比 發(fā)現(xiàn)一個軟件故障可能接二連三發(fā)現(xiàn)故障。2.1.4不能修復(fù)所有的軟件故障(1)沒有足夠的時間進(jìn)行修復(fù)(2)修復(fù)的風(fēng)險較大(3)不值得修復(fù)(4)可不算做故障的一些缺陷(5)“殺蟲劑現(xiàn)象”軟件測試的復(fù)雜性分析2.1.5測試工作量和軟件缺陷數(shù)量之間的

3、關(guān)系 測試工作量軟件測試方法與策略2.2軟件測試策略n軟件測試策略是描述軟件測試活動的總體方法和目標(biāo)。n為了檢驗開發(fā)的軟件能否符合規(guī)格說明書的要求,測試活動可以采用各種不同的策略。這些策略的區(qū)別在于它們表明了不同的出發(fā)點、不同的思路以及采用不同的手段和方法。軟件測試方法與策略n軟件測試方法n按照軟件測試是否執(zhí)行程序劃分:n靜態(tài)測試和動態(tài)測試n按軟件測試用例的設(shè)計方法劃分:n白盒測試和黑盒測試軟件測試方法與策略n按照測試時是否運用工具: n手工測試、自動測試n按軟件測試的過程劃分:n單元測試、集成測試、確認(rèn)測試、系統(tǒng)測試、驗收測試軟件測試方法與策略1.軟件測試策略軟件工程 測試策略 測試工程所運

4、用的模板 軟件測試(1)程序模塊層 整個系統(tǒng)(2)不同測試技術(shù)適用于不同測試進(jìn)程時間點(3)軟件開發(fā)人員和軟件測試組織(4)測試與調(diào)試是不同的過程提供低層測試(檢驗源代碼是否得以正確實現(xiàn))提供高層測試(驗證整個系統(tǒng)的功能是否符合用戶的需求)軟件測試方法與策略2.軟件測試充分性準(zhǔn)則(1)對任何軟件都存在有限的充分測試集合(2)單調(diào)性 (測試數(shù)據(jù))(3)非復(fù)合性(對軟件所有成分都進(jìn)行了充分測試)(4)非分解性 (對軟件整體測試是充分的)(5)軟件測試的充分性與軟件的需求和軟件的實現(xiàn)都相關(guān)(6)復(fù)雜性(越復(fù)雜,需要測試數(shù)據(jù)越多)(7)回報遞減率(測試得越多,充分性增長越少)軟件測試方法與策略2.2.

5、1靜態(tài)測試與動態(tài)測試1.靜態(tài)測試n不實際運行軟件,主要對軟件的編程格式、結(jié)構(gòu)等方面進(jìn)行評估n 靜態(tài)測試包括過程步驟和實現(xiàn)技術(shù)n靜態(tài)測試主要由人工方式進(jìn)行,同時借助軟件測試專用工具軟件測試方法與策略n靜態(tài)分析與編譯系統(tǒng)的區(qū)別?2.靜態(tài)測試的過程步驟 靜態(tài)測試的過程和步驟是需求分析、概要設(shè)計、詳細(xì)設(shè)計和計劃執(zhí)行。3.靜態(tài)測試技術(shù)n測試活動n代碼檢查(人工工具)(人工工具)n靜態(tài)結(jié)構(gòu)分析 (主要由軟件工具自動進(jìn)行)(主要由軟件工具自動進(jìn)行)n代碼質(zhì)量度量 (主要由軟件工具自動進(jìn)行)(主要由軟件工具自動進(jìn)行)軟件測試方法與策略(1)代碼檢查n代碼檢查包括代碼走查、桌面檢查、代碼審查。主要檢查代碼和設(shè)計

6、的一致性;發(fā)現(xiàn)違背程序編寫標(biāo)準(zhǔn)的問題。n在實際使用中,代碼檢查比動態(tài)測試更為有效,可以發(fā)現(xiàn)30%70的邏輯設(shè)計和編碼缺陷。軟件測試方法與策略(2)靜態(tài)結(jié)構(gòu)分析n以圖形的方式表現(xiàn)程序的內(nèi)部結(jié)構(gòu),如函數(shù)調(diào)用關(guān)系圖、函數(shù)內(nèi)部控制流圖(3)代碼質(zhì)量度量(三種度量參數(shù))nLine復(fù)雜度(代碼行數(shù))nHalstead復(fù)雜度(程序中的運算符與運算元數(shù)量)nMcCabe復(fù)雜度(程序流程圖轉(zhuǎn)化為有向圖,圖論)軟件測試方法與策略n靜態(tài)測試與人工測試方式有著根本區(qū)別n靜態(tài)測試可由人工進(jìn)行,也可以借助軟件工具自動進(jìn)行。n使用靜態(tài)測試可以發(fā)現(xiàn)大約1/3-2/3的邏輯設(shè)計和編碼錯誤。但是代碼中仍會有隱藏的故障無法通過靜態(tài)

7、測試發(fā)現(xiàn),因此除了靜態(tài)測試方法外,還必須通過動態(tài)測試進(jìn)行詳細(xì)地分析。軟件測試方法與策略4.靜態(tài)測試活動(1)靜態(tài)測試檢查細(xì)節(jié)(2)靜態(tài)測試的作用:發(fā)現(xiàn)錯誤;找出問題根源;提供程序缺陷的間接信息5.靜態(tài)測試評審與檢查過程(1)靜態(tài)測試評審(2)靜態(tài)測試的檢查軟件測試方法與策略6.動態(tài)測試n運行被測程序n輸入測試用例n對運行情況(輸入與輸出對應(yīng)關(guān)系)分析軟件測試方法與策略 動態(tài)測試在單元測試、集成測試、系統(tǒng)測試及驗證測試有不同的測試內(nèi)容及過程。測試階段對象執(zhí)行人環(huán)境單元測試模塊中不合格產(chǎn)品 開發(fā)者開發(fā)環(huán)境集成測試模塊與接口開發(fā)組織開發(fā)環(huán)境融入測試管理系統(tǒng)測試功能測試組織測試環(huán)境驗收測試軟件用戶用戶

8、實際的軟件運行環(huán)境軟件測試方法與策略7.測試活動n功能確認(rèn)與接口測試n覆蓋率分析n性能分析n內(nèi)存分析8.靜態(tài)測試與動態(tài)測試的檢查與評估n確定評審參檢部門與人員。n評審活動時間和資源分配。n評審過程注意事項。軟件測試方法與策略n黑盒測試n將被測試程序當(dāng)做一個黑盒,在不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性,測試者只知道該程序輸入和輸出之間的關(guān)系或程序功能的情況下,依靠能夠反映這一關(guān)系和程序功能需求規(guī)格的說明書,來確定測試用例和推斷測試結(jié)果的正確性。?X=2y=4軟件測試方法與策略軟件測試方法與策略n黑盒測試法特點n與軟件的具體實現(xiàn)過程無關(guān)n與軟件實現(xiàn)同時進(jìn)行n可用于軟件測試的各個階段n黑盒測試方法n邊界值分

9、析法n等價類劃分法n因果圖法n決策表法軟件測試方法與策略n黑盒測試能夠獲得軟件的功能、性能n軟件系統(tǒng)有層次性,軟件開發(fā)把原始問題轉(zhuǎn)換成計算機處理的形式,經(jīng)過一系列變化,得到程序編碼。n在哪個層次上測試呢?n黑盒測試的缺點n無法進(jìn)行窮舉測試n輸入和輸出結(jié)果是否正確無法明確。軟件測試方法與策略n白盒測試n用來分析程序的內(nèi)部結(jié)構(gòu),依賴于對程序細(xì)節(jié)的嚴(yán)密檢驗,針對特定條件和循環(huán)設(shè)計測試用例,對程序的邏輯路徑進(jìn)行測試。y=2xX=2y=4軟件測試方法與策略軟件測試方法與策略n白盒測試的缺點n窮舉路徑測試不能查出程序結(jié)構(gòu)的錯誤n窮舉路徑測試不能查出程序因遺漏路徑而出錯n白盒測試方法n語句覆蓋n分支覆蓋n判

10、斷覆蓋n條件覆蓋n判斷/條件覆蓋n路徑覆蓋軟件測試方法與策略n兩種測試方法從不同的角度出發(fā)n反映了軟件的不同側(cè)面n適用于不同的開發(fā)環(huán)境黑盒測試黑盒測試白盒測試白盒測試軟件測試方法與策略黑盒測試與白盒測試比較項目項目黑盒測試黑盒測試白盒測試白盒測試規(guī)劃功能測試結(jié)構(gòu)測試優(yōu)點從用戶角度出發(fā)測試對程序內(nèi)部特定部位進(jìn)行覆蓋測試缺點無法測試程序內(nèi)部特定部位若規(guī)格說明有誤,無法發(fā)現(xiàn)問題無法檢查程序的外部特征無法對未實現(xiàn)規(guī)格說明的程序內(nèi)部欠缺部分進(jìn)行測試應(yīng)用范圍邊界分析法等價類劃分法決策表測試因果圖法語句覆蓋分支覆蓋路徑覆蓋軟件測試方法與策略2.2.3手工測試和自動化測試自動化測試是對手工測試的一種補充。手工

11、測試:軟件界面的美觀(人的邏輯思維)自動測試:重復(fù)工作量(回歸測試)1.手工測試(1)測試用例的設(shè)計(2)界面和用戶體驗測試(3)正確性的檢查軟件測試方法與策略n2.自動化測試n自動化測試由測試工具完成,部分代替手工測試。2.2.4探索性測試1.定義2.核心思想3.探索性測試的基本過程4.探索性測試管理軟件測試方法與策略n黑盒、白盒、動態(tài)、靜態(tài)測試之間關(guān)系n只是從測試的不同角度分類n同一個測試,都有可能屬于這幾種測試,他們之間還有包含交叉的關(guān)系 n黑盒測試有可能是動態(tài)測試(運行程序,只看輸入和輸出),也可能是靜態(tài)測試(不運行程序,只看界面)n白盒測試有可能是動態(tài)測試(運行程序,分析代碼結(jié)構(gòu)),

12、也可能是靜態(tài)測試(不運行程序,只是靜態(tài)查看代碼)軟件測試方法與策略n動態(tài)測試有可能是黑盒測試(運行程序,只看輸入和輸出),也可能是白盒測試(運行程序,分析代碼結(jié)構(gòu))n靜態(tài)測試有可能是黑盒測試(不運行程序,只是查看界面),也可能是白盒測試(不運行程序,只是靜態(tài)查看代碼)軟件測試方法與策略軟件測試過程n軟件測試過程分為以下幾個步驟:n單元測試(模塊測試)n集成測試(子系統(tǒng)測試)n確認(rèn)測試n系統(tǒng)測試n驗收測試軟件測試過程n軟件測試過程 模塊及文檔 通過測試的 模塊 集成測試通過 的軟件 模塊及文檔 模塊及文檔 通過了綜合 測試的軟件 可運行的軟件 交付軟件 單元測試 單元測試 單元測試 集成測試 確

13、認(rèn)測試 系統(tǒng)測試 驗收測試 軟件測試過程軟件測試的過程流程軟件測試過程測試階段對象方法單元測試單元模塊黑盒、白盒集成測試模塊組合方式黑盒、白盒確認(rèn)測試軟件的功能與性能需求黑盒系統(tǒng)測試系統(tǒng)的兼容性驗收測試軟件產(chǎn)品質(zhì)量單 元 測 試n單元測試n檢查程序的最小單元n模塊進(jìn)行正確性檢驗的測試工作n測試模塊在語法、格式和邏輯上的錯誤n單元測試目的n保證每個模塊單獨運行正確n檢查模塊控制結(jié)構(gòu)的某些特殊路徑n期望覆蓋盡可能多的出錯點單 元 測 試n單元測試可分為靜態(tài)測試和動態(tài)測試n靜態(tài)單元測試n代碼走讀等檢查性測試方式,不需要編譯和運行代碼n動態(tài)單元測試n編寫測試代碼,需要編譯和運行代碼n單元測試可用人工方

14、式和自動方式。單 元 測 試n單元測試有兩種模式n測試驅(qū)動模式和代碼先行模式n單元測試的主要任務(wù)n單元測試在編碼完成后進(jìn)行;多個模塊時可并行獨立開展測試工作。n對每個模塊進(jìn)行測試n解決以下5個方面的測試問題n模塊接口n局部數(shù)據(jù)結(jié)構(gòu)n邊界條件n獨立路徑n錯誤處理單 元 測 試n模塊接口測試n針對模塊接口測試應(yīng)進(jìn)行的檢查,主要涉及十八個方面的內(nèi)容,見書47頁。單 元 測 試n模塊局部數(shù)據(jù)結(jié)構(gòu)n內(nèi)部數(shù)據(jù)能否保持完整性n應(yīng)注意幾類錯誤n不正確或不一致的類型說明n錯誤的初始化或默認(rèn)值n錯誤的變量名,如拼寫錯誤或縮寫錯誤n下溢、上溢或者地址錯誤注意:全程數(shù)據(jù)對模塊的影響單 元 測 試n路徑測試n也稱為覆蓋

15、測試n常見錯誤見書47頁單 元 測 試n模塊邊界條件測試n數(shù)據(jù)邊界處模塊能否正常工作n軟件常在邊界處發(fā)生錯誤(循環(huán)條件)n通常為單元測試的最后一步,仔細(xì)限制數(shù)據(jù)處理,設(shè)置邊界n邊界條件設(shè)置注意項n首個、最后一個;最大、最??;最長、最短;最高、最矮等特征 單 元 測 試n出錯處理n若模塊在工作中發(fā)生錯誤n檢查程序出錯處理時,可能情況n對運行發(fā)生的錯誤描述難以理解n所報告的錯誤與實際遇到的錯誤不一致n出錯后,在錯誤處理之前就引起了系統(tǒng)的干預(yù)n例外條件的處理不正確n提供的錯誤定位信息不足,以致無法找到出錯的準(zhǔn)確原因單 元 測 試n單元級別的性能測試n軟件結(jié)構(gòu)多樣,支持用戶擴大,性能問題顯現(xiàn)。n性能測

16、試從單元測試階段開始(1)代碼效率評估(2)應(yīng)用單元性能測試工具(3)數(shù)據(jù)庫優(yōu)化性能測試可使用代碼效率測試工具單 元 測 試n單元測試與白盒測試的區(qū)別n白盒測試關(guān)注的是類中的一個方法,單元測試需要多個類 (驅(qū)動和樁)n白盒測試不關(guān)注類接口,單元測試的內(nèi)容就是類接口單 元 測 試n單元測試管理規(guī)范n單元測試人員組織與分工n單元測試的策略指引n單元測試用例的設(shè)計n代碼標(biāo)準(zhǔn)和規(guī)范n代碼審查制定n建立單元測試的流程n單元測試與每日構(gòu)建結(jié)合單 元 測 試n進(jìn)行單元測試時,需設(shè)置若干輔助測試模塊。n驅(qū)動模塊(Driver)n模擬被測試模塊的上級模塊n用來傳送測試數(shù)據(jù),啟動被測模塊并輸出結(jié)果n被調(diào)用模擬子模

17、塊/樁模塊(Sub)n模擬被測模塊工作過程中所調(diào)用的模塊單 元 測 試n驅(qū)動模塊與樁模塊單元測試的設(shè)置環(huán)境單 元 測 試n什么時候進(jìn)行單元測試?n由誰來進(jìn)行單元測試?n單元測試的依據(jù)是什么?n單元測試的通過標(biāo)準(zhǔn)是什么?程序員編碼之后,但要程序員編碼之后,但要做必要準(zhǔn)備工作做必要準(zhǔn)備工作白盒測試工程師或開發(fā)白盒測試工程師或開發(fā)人員人員源程序源程序 (程序和注釋);(程序和注釋);項目項目詳細(xì)設(shè)計詳細(xì)設(shè)計文檔文檔不同公司有不同標(biāo)準(zhǔn)不同公司有不同標(biāo)準(zhǔn)測試后的調(diào)試n測試的目的是顯示存在錯誤。n調(diào)試(也稱排錯)的目的是確定錯誤的原因和準(zhǔn)確位置,并加以糾正。n調(diào)試是測試之后的活動。測試測試用例用例執(zhí)行執(zhí)行

18、測試用例測試用例追加測試追加測試被懷疑的原因被懷疑的原因已識別的原因已識別的原因回歸測試回歸測試修正程序修正程序調(diào)試調(diào)試結(jié)果結(jié)果測試后的調(diào)試調(diào)試過程 測試后的調(diào)試n調(diào)試基本任務(wù)n診斷和改正程序中的錯誤n調(diào)試技術(shù)n輸出存儲器內(nèi)容n打印語句n自動工具測試后的調(diào)試n輸出存儲器內(nèi)容 此法一般以八進(jìn)制或十六進(jìn)制的形式打印出存儲器的內(nèi)容。如果單純依靠這種方法進(jìn)行調(diào)試,那么效率是很低的。原因如下:n很難把源程序變量和存儲單元對應(yīng)起來; n輸出信息量太大,而且大部分是無意義的信息;n輸出的是程序的程序在某一時刻的狀態(tài),然而為了找出故障往往需要研究程序狀態(tài)隨時間變化的情況;n輸出的內(nèi)容常常并不是程序出錯時的狀態(tài)

19、因此通常并不能提供有用的信息;n輸出信息的形式不易閱讀和解釋。測試后的調(diào)試n打印語句 這種方法就是程序設(shè)計語言提供的標(biāo)準(zhǔn)打印語句插在源程序中各個部分,以便輸出所有關(guān)鍵變量的值。它要比第一種方法好,因為它顯示程序的動態(tài)行為,而且給出的信息很容易和源程序?qū)?yīng)??蛇@種方法也有缺點:n可能輸出大量需要分析的信息,特別是對于大型程序系統(tǒng)來說更是如此;n因為必須修改源程序才能插入打印語句,這就可能改變了關(guān)鍵的時間關(guān)系,從而既可能掩蓋錯誤,也有可能引入新的錯誤。測試后的調(diào)試n自動工具 這種方法和第二種方法相類似,也能提供有關(guān)程序動態(tài)行為的信息,但不需要修改源程序。它主要利用程序設(shè)計語言的調(diào)試功能或使用專門的

20、軟件工具分析程序的動態(tài)行為??晒├玫牡湫驼Z言功能有輸出有關(guān)語句執(zhí)行、子程序調(diào)用和更改指定變量的蹤跡。用于調(diào)試的軟件工具的共同功能是設(shè)置斷點,即當(dāng)執(zhí)行到特定的語句或改變特定變量的值時,程序突然停止執(zhí)行,程序員可以在終端上觀察程序此時的具體狀態(tài)。但使用這種調(diào)試方法也會產(chǎn)生大量無意義的信息。 測試后的調(diào)試n調(diào)試策略n試探法n調(diào)試人員分析錯誤征兆,猜想故障的大致位置,然后使用前述的一兩種調(diào)試技術(shù),獲取程序中被懷疑的地方附近的信息。n該策略緩慢而低效。 測試后的調(diào)試n回溯法n確定最先發(fā)現(xiàn)“癥狀”的地方,然后人工沿程序的控制流往回追蹤源程序代碼,直到找出錯誤根源或確定故障范圍為止。n回溯法的另一種形式是

21、正向跟蹤,也就是使用輸出語句檢查一系列中間結(jié)果,以確定最先出現(xiàn)錯誤的地方。n回溯法適用于小程序。 測試后的調(diào)試n對分查找法n如果已經(jīng)知道每個變量在程序內(nèi)若干個關(guān)鍵點的正確值,則可以用賦值語句或輸入語句在程序中間點附近“注入”這些變量的正確值,然后檢查程序的輸出。如果輸出結(jié)果是正確的,則故障在程序的前半部分;反之,故障在程序的后半部分。對于程序中有故障的那部分再重復(fù)使用這個方法,直到把故障范圍縮小到容易診斷的程度為止。 測試后的調(diào)試n歸納法n所謂歸納法就是從個別推斷一般的方法。從線索(錯誤征兆)出發(fā),通過分析這些線索之間的關(guān)系而找出故障,具體步驟如下:n收集有關(guān)的數(shù)據(jù)n組織數(shù)據(jù)n導(dǎo)出假設(shè)n證明假設(shè)測試后的調(diào)試n演繹法 n演繹法從般原理或一般前提出發(fā),經(jīng)過刪除和細(xì)化的過程推導(dǎo)出結(jié)論。用演繹法調(diào)試開始,首先列出所有看來可能成立的原因或假設(shè),然后一個個排除列舉出的原因,最后,證明剩下的原因確實是錯誤的根源。演繹法主要分為下面四個步驟:n設(shè)想可能的原因n用已有的數(shù)據(jù)排除不正確的假設(shè)n細(xì)化余下的假設(shè)n證明余下的假設(shè)小結(jié)n軟件測試的策略與方法n靜態(tài)測試與動態(tài)測試(自主學(xué)習(xí))n黑盒測試與白盒測試n手工測試與自動化測試(自主學(xué)習(xí))n單元測試與白盒測試n單元測試n黑盒、白

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論