




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件工程
SoftwareEngineering
國防科技大學計算機學院2004.07齊治昌教授,譚慶平教授,寧洪教授,董威博士2022/12/21國防科技大學計算機學院
軟件工程
第十四章軟件測試盡管軟件質量保證是貫穿軟件開發(fā)全過程的活動,但最關鍵的步驟是軟件測試,軟件測試是對軟件規(guī)格說明、軟件設計和編碼的最后復審,目的是在軟件產品交付之前盡可能發(fā)現(xiàn)軟件中潛伏的錯誤。大量統(tǒng)計表明,軟件測試工作量往往占軟件開發(fā)總工作量的40%以上,在極端情況下,甚至可能高達軟件工程其他步驟成本總和的三到五倍。本章重點討論軟件測試的基本概念、關鍵技術和實施策略,指出軟件測試的主要目標、如何設計測試用例(testcases)以及如何組織實施測試活動。2022/12/22國防科技大學計算機學院第十四章軟件測試盡管軟件質量保證是貫穿軟件開發(fā)全過程的活14.1基本概念在測試之前的所有軟件開發(fā)活動中,軟件工程師們致力于具體實現(xiàn),即從事所謂“建設性”的活動。軟件測試人員卻在努力尋求程序中的錯誤。發(fā)現(xiàn)錯誤是為了改正錯誤。測試階段發(fā)現(xiàn)的錯誤越多,交付的軟件質量越高,后期的改正性維護工作越少。因此,測試亦是一項“建設性”活動第十四章軟件測試2022/12/23國防科技大學計算機學院14.1基本概念在測試之前的所有軟件開發(fā)活動中,軟件工程14.1.1軟件測試的目標軟件測試是為了發(fā)現(xiàn)程序中的錯誤。軟件測試的過程亦是程序運行的過程。程序運行需要數(shù)據(jù),為測試設計的數(shù)據(jù)稱測試用例。設計測試用例的原則自然是盡可能暴露錯誤。軟件測試是一個找錯過程。14.1基本概念2022/12/24國防科技大學計算機學院14.1.1軟件測試的目標軟件測試是為了發(fā)現(xiàn)程序中的錯誤軟件測試的目標(續(xù))大型軟件系統(tǒng)的測試分為單元(模塊)測試和綜合測試兩個階段。多數(shù)場合,設計者與測試者共同完成單元測試任務;專門機構負責軟件產品的綜合測試。有時設計人員也加入這個機構。值得指出的是,不能保證通過測試的程序一定正確,測試只能找出程序中的錯誤,而不能證明程序無錯。人們認為,軟件運行期間測試活動從未間斷,只是在軟件交付用戶之后,將由用戶繼續(xù)扮演測試角色而已。14.1基本概念2022/12/25國防科技大學計算機學院軟件測試的目標(續(xù))大型軟件系統(tǒng)的測試分為單元(模塊)測試和14.1.2測試階段的信息流程14.1基本概念2022/12/26國防科技大學計算機學院14.1.2測試階段的信息流程14.1基本概念2022/測試階段的信息流程輸入流分軟件配置和測試配置兩項,軟件配置由需求說明書、設計說明書和源代碼組成;測試配置中包含測試計劃、測試工具、測試用例和期望結果,有時測試配置亦作為軟件配置的一個組成部分。測試人員根據(jù)上述輸入信息測試程序并評價測試結果,當測試結果與期望結果存在差異時,往往程序有錯。此時可采用排錯技術定位錯誤并改正之。通過對測試結果的收集和評價,軟件質量和軟件可靠性的一些定性指標即能逐步確定下來。14.1基本概念2022/12/27國防科技大學計算機學院測試階段的信息流程輸入流分軟件配置和測試配置兩項,軟件配置由14.1.3測試用例和場景的設計任何工程化的產品都有兩種測試方法:一種方法是已知產品應該具有的功能,通過測試檢驗每個功能是否都能正常使用;另一種方法是已知產品內部工作過程,通過測試檢驗產品內部動作是否按照產品規(guī)格說明的規(guī)定正常進行。前者稱為黑盒測試,后者稱為白盒測試。測試用例和測試場景將根據(jù)這兩種測試方法的特性制定。14.1基本概念2022/12/28國防科技大學計算機學院14.1.3測試用例和場景的設計任何工程化的產品都有兩種黑盒測試黑盒測試完全不考慮程序的內部結構和處理過程。測試僅在程序界面上進行。設計測試用例旨在說明:①軟件的功能是否可操作;②程序能否適當?shù)亟邮蛰斎霐?shù)據(jù)并產生正確的輸出結果或在可能的場景中事件驅動的效果是否盡如人意;③能否保持外部信息(如數(shù)據(jù)文件)的完整性。14.1基本概念2022/12/29國防科技大學計算機學院黑盒測試黑盒測試完全不考慮程序的內部結構和處理過程。測試僅在白盒測試白盒測試法密切關注處理細節(jié),針對程序的每一條邏輯路徑都要分別設計測試用例,檢查分枝和循環(huán)的情況。窮舉測試不可取,一般選用少量“最有效”,即最有可能暴露錯誤的路徑進行測試。測試的目的是為了找出錯誤,所以無論采用黑盒法還是白盒法,設計測試用例時總是期望用盡可能少的時間和代價發(fā)現(xiàn)盡可能多的錯誤。14.1基本概念2022/12/210國防科技大學計算機學院白盒測試白盒測試法密切關注處理細節(jié),針對程序的每一條邏輯路徑例:最多有1014個邏輯路徑,假設每運行一個測試用例平均花費1毫秒,總共需3170年才能窮盡所有測試。14.1基本概念2022/12/211國防科技大學計算機學院例:最多有1014個邏輯路徑,假設每運行一個測試用例平均花費14.1.4軟件測試的步驟軟件工程的開發(fā)過程和測試過程應該是對應的。第一章圖1.3采用V型圖表示開發(fā)—測試的對應關系,也可以采用圖14.3所示的螺旋型圖表示。每旋轉一圈,測試的范圍加大一次:螺旋中心對應單元測試,它測試源程序的每一模塊;下一步是綜合測試,它測試軟件總體結構;再下一步是確認(驗收)測試,測試軟件是否滿足需求;最后一步是系統(tǒng)測試,檢查軟件與系統(tǒng)中其他元素是否協(xié)調。14.1基本概念2022/12/212國防科技大學計算機學院14.1.4軟件測試的步驟軟件工程的開發(fā)過程和測試過程應14.2軟件測試技術本節(jié)主要討論當用白盒或黑盒測試法測試軟件時,如何設計測試用例才能達到測試的目的。此外,對自動測試工具也作一些簡單介紹。第十四章軟件測試2022/12/213國防科技大學計算機學院14.2軟件測試技術本節(jié)主要討論當用白盒或黑盒測試法測試14.2.1白盒測試白盒測試應該根據(jù)程序的控制結構設計測試用例,原則是:①保證模塊中每一獨立的路徑至少執(zhí)行一次;②保證所有判斷的每一分枝至少執(zhí)行一次;③保證每一循環(huán)都在邊界條件和一般條件下至少各執(zhí)行一次;④驗證所有內部數(shù)據(jù)結構的有效性。14.2軟件測試技術2022/12/214國防科技大學計算機學院14.2.1白盒測試白盒測試應該根據(jù)程序的控制結構設計測1.基本路徑測試基本路徑測試的主要思想是,根據(jù)軟件過程性描述(詳細設計或代碼)中的控制流程確定復雜性度量,然后用此度量定義基本路徑集合,由此導出一組測試用例,它們能保證每個語句至少執(zhí)行一次。為了使用圖論的知識和術語,引入流圖(亦稱程序圖)的概念,流圖即把流程圖中結構化構件改用一般有向圖的表示形式。代表條件判斷的結點稱為謂詞結點。14.2軟件測試技術2022/12/215國防科技大學計算機學院1.基本路徑測試基本路徑測試的主要思想是,根據(jù)軟件過程性描述結構化構件在流圖中的表示14.2軟件測試技術2022/12/216國防科技大學計算機學院結構化構件在流圖中的表示14.2軟件測試技術2022/12/例:流程圖14.2軟件測試技術2022/12/217國防科技大學計算機學院例:流程圖14.2軟件測試技術2022/12/117國防科技例:對應的流圖14.2軟件測試技術2022/12/218國防科技大學計算機學院例:對應的流圖14.2軟件測試技術2022/12/118國防條件處理若判斷中含復合條件,則需增加謂詞結點。如OR運算的處理。14.2軟件測試技術2022/12/219國防科技大學計算機學院條件處理若判斷中含復合條件,則需增加謂詞結點。如OR運算的處基本路徑測試的思想基本路徑至少引入一個新語句或者新判斷的程序執(zhí)行通道測試用例的設計方法流程圖==>流圖==>基本路徑==>測試用例14.2軟件測試技術2022/12/220國防科技大學計算機學院基本路徑測試的思想基本路徑14.2軟件測試技術2022/12Step1
根據(jù)程序的邏輯結構畫出流程圖voidFunc(intnPosX,intnPosY){ while(nPosX>0){ intnSum=nPosX+nPosY; if(nSum>1){ nPosX--;nPosY--; } else{ if(nSum<-1)nPosX-=2; elsenPosX-=4; } } //endofwhile}14.2軟件測試技術2022/12/221國防科技大學計算機學院Step1根據(jù)程序的邏輯結構畫出流程圖voidFunc(Step1
根據(jù)程序的邏輯結構畫出流程圖14.2軟件測試技術2022/12/222國防科技大學計算機學院Step1根據(jù)程序的邏輯結構畫出流程圖14.2軟件測試技術Step2
根據(jù)流程圖畫出流圖14.2軟件測試技術2022/12/223國防科技大學計算機學院Step2根據(jù)流程圖畫出流圖14.2軟件測試技術2022/Step3確定基本路徑的集合基本路徑流圖的Cyclomatic復雜度正好是基本路徑的數(shù)目V(G)=E–N+2V(G)=11-9+2=414.2軟件測試技術2022/12/224國防科技大學計算機學院Step3確定基本路徑的集合基本路徑14.2軟件測試技術2
Step3確定基本路徑的集合1-111-2,3-4,5-10-1-111-2,3-6-7-9-10-1-111-2,3-6-8-9-10-1-1114.2軟件測試技術2022/12/225國防科技大學計算機學院 Step3確定基本路徑的集合1-1114.2軟件測試Step4對每條基本路徑設計測試用例對于路徑1–11nPosX取-1,nPosY取任意值1-2,3-4,5-10-1-11nPosX取1,nPosY取1對于路徑1-2,3-6-7-9-10-1–11nPosX取1,nPosY取-11-2,3-6-8-9-10-1-11
nPosX取1,nPosY取-314.2軟件測試技術2022/12/226國防科技大學計算機學院Step4對每條基本路徑設計測試用例對于路徑1–1112.控制結構測試基本路徑測試是控制結構測試技術的一種,下面介紹其他形式的控制結構測試,它們比基本路徑測試法覆蓋程度更大,進一步提高了白盒測試的質量。14.2軟件測試技術2022/12/227國防科技大學計算機學院2.控制結構測試基本路徑測試是控制結構測試技術的一種,下條件測試法條件測試主要考慮程序中的條件判斷,以期發(fā)現(xiàn)條件判斷內部的錯誤和程序中其他一些錯誤。程序中“條件”分為簡單條件和復合條件。簡單條件為一個布爾變量或一個關系表達式(可能前綴邏輯非),復合條件由簡單條件通過邏輯運算符(OR、AND、NOT)和括號連接而成。因此條件中可能出現(xiàn)的錯誤類型包括:布爾運算符錯、布爾變量錯、括號錯、關系運算符錯和算術表達式錯。最簡單的條件測試是分支測試。14.2軟件測試技術2022/12/228國防科技大學計算機學院條件測試法條件測試主要考慮程序中的條件判斷,以期發(fā)現(xiàn)條件判斷分支和關系運算測試法BRO能用少于2n次測試發(fā)現(xiàn)條件中大多數(shù)錯誤,采用該方法的前提是條件中每個布爾變量和關系運算符至多出現(xiàn)一次并無公共變量。BRO方法引入條件約束的概念,含n個簡單條件的復合條件C之約束D表示為(D1,D2,…Dn),Di(0<i≤n)一般為某種符號,它指明簡單條件Ci在C中出現(xiàn)的約束。C的一次執(zhí)行覆蓋約束條件D指,C中出現(xiàn)的每個簡單條件Ci在這次執(zhí)行中都滿足D中對應的約束Di。對于一個布爾表達式,出現(xiàn)約束或為真(t)或為假(f);對于一個關系表達式,出現(xiàn)約束用符號>、<或=表示。14.2軟件測試技術2022/12/229國防科技大學計算機學院分支和關系運算測試法BRO能用少于2n次測試發(fā)現(xiàn)條件中大多數(shù)數(shù)據(jù)流測試法數(shù)據(jù)流測試法是根據(jù)程序中變量定義和引用的位置選擇測試路徑。為說明數(shù)據(jù)流測試法,假設程序中每個語句都被賦與一個唯一的標號,并且每個函數(shù)都不修改其參數(shù)和全局變量,對以S為標號的語句定義下面兩個集合:DEF(S)={X|語句S中含X的定義}USE(S)={X|語句S中含對X的引用}當S為分支或循環(huán)語句時,DEF集合為空,USE集合由S所含條件確定。如果從語句S到語句S’存在一條路徑并且在S’中不存在X的再定義,則稱在S中定義的X在S’處活躍。14.2軟件測試技術2022/12/230國防科技大學計算機學院數(shù)據(jù)流測試法數(shù)據(jù)流測試法是根據(jù)程序中變量定義和引用的位置選擇數(shù)據(jù)流測試法(續(xù))定義變量X的定義—引用鏈(DU鏈)為[X,S,S’],其中S,S’為標號,X∈DEF(S)∩USE(S’)且S中定義的X在S’處活躍。一種簡單的數(shù)據(jù)流測試策略即對每條DU鏈至少覆蓋一次,稱為DU測試策略,它對于測試含嵌套IF語句和多重循環(huán)語句的程序特別有效。14.2軟件測試技術2022/12/231國防科技大學計算機學院數(shù)據(jù)流測試法(續(xù))定義變量X的定義—引用鏈(DU鏈)為[X,循環(huán)測試循環(huán)是大多數(shù)算法的基礎,循環(huán)測試的目的是檢查循環(huán)結構的有效性。循環(huán)分為簡單循環(huán)、并列循環(huán)、嵌套循環(huán)和非結構循環(huán)四類:14.2軟件測試技術2022/12/232國防科技大學計算機學院循環(huán)測試循環(huán)是大多數(shù)算法的基礎,循環(huán)測試的目的是檢查循環(huán)結構14.2軟件測試技術2022/12/233國防科技大學計算機學院14.2軟件測試技術2022/12/133國防科技大學計算機循環(huán)測試(續(xù))對于最多為n次的簡單循環(huán),應作下列測試:1)完全跳過循環(huán);2)僅循環(huán)一次;3)循環(huán)兩次;4)循環(huán)m次,m<n;5)分別循環(huán)(n-1)次,n次,n+1次。14.2軟件測試技術2022/12/234國防科技大學計算機學院循環(huán)測試(續(xù))對于最多為n次的簡單循環(huán),應作下列測試:14循環(huán)測試(續(xù))對于嵌套循環(huán)若生搬硬套簡單循環(huán)的測試策略。可能使測試次數(shù)成幾何級數(shù)增長,減少測試次數(shù)的具體措施包括:1)從最內層循環(huán)開始測試,此時所有外層循環(huán)都取最小值,內層循環(huán)按簡單循環(huán)的測試策略測試;2)由里向外,回退到上一層循環(huán)測試,這層循環(huán)的所有外層循環(huán)仍取最小值,由該層循環(huán)嵌套的那些循環(huán)取一些典型值。3)繼續(xù)向外擴展,直至所有循環(huán)測試完畢。對于并置循環(huán)分兩種情況,若兩個循環(huán)完全獨立,采用簡單循環(huán)的測試策略,反之,若第一循環(huán)的計數(shù)器用作第二循環(huán)的初值,即兩循環(huán)不獨立,需用嵌套循環(huán)測試策略測試。非結構化的循環(huán)需按結構化程序設計的思想首先將程序結構化然后再進行測試。14.2軟件測試技術2022/12/235國防科技大學計算機學院循環(huán)測試(續(xù))對于嵌套循環(huán)若生搬硬套簡單循環(huán)的測試策略??赡?4.2.2黑盒測試黑盒測試旨在測試軟件是否滿足功能要求,它主要診斷下列幾類錯誤:(1)不正確或遺漏的功能;(2)界面錯誤;(3)數(shù)據(jù)結構或外部數(shù)據(jù)庫訪問錯誤;(4)性能錯誤;(5)初始化和終止條件錯誤。值得指出的是,黑盒測試法與白盒測試法不能互相替代,相反兩者應互為補充,在測試的不同階段為發(fā)現(xiàn)不同類型的錯誤而靈活選用。14.2軟件測試技術2022/12/236國防科技大學計算機學院14.2.2黑盒測試黑盒測試旨在測試軟件是否滿足功能要求,1.等價分類法等價分類法的主要思想是把程序的輸入數(shù)據(jù)集合按輸入條件劃分為若干個等價類,每一等價類相對于輸入條件表示為一組有效或無效的輸入,然后為每一等價類設計一個測試用例,這樣即可大大減小測試的次數(shù)又不丟失發(fā)現(xiàn)錯誤的機會。因此等價分類法的關鍵是根據(jù)輸入數(shù)據(jù)的類型和程序的功能說明劃分等價類。14.2軟件測試技術2022/12/237國防科技大學計算機學院1.等價分類法等價分類法的主要思想是把程序的輸入數(shù)據(jù)集合按等價分類法常用的一些規(guī)則:(1)如果能為輸入條件指定一個范圍,則可劃分出一個有效的等價類(輸入值落在此范圍內)和兩個無效的等價類(大于最大值的輸入和小于最小值的輸入);(2)如果能為輸入條件指定一個特定值,則可類似地劃分出一個有效等價類和兩個無效等價類;(3)如果能為輸入條件指定一個集合,則可劃分出一個有效等價類(此集合)和一個無效等價類(此集合的補集);(4)如果能為輸入條件指定一個布爾量,則可劃分出一個有效等價類(此布爾量)和一個無效布爾量(此布爾量之非)。14.2軟件測試技術2022/12/238國防科技大學計算機學院等價分類法常用的一些規(guī)則:14.2軟件測試技術2022/122.邊界值分析法經驗表明,大多數(shù)錯誤都發(fā)生在輸入的邊界值上。為此,專門引入邊界值分析(BoundaryValueAnalysis)技術,旨在選擇測試用例,強迫程序在邊界值上執(zhí)行。BVA技術是對等價分類技術的補充,即在一個等價類中不是任選一個元素作為此等價類的代表進行測試,而是選擇此等價類邊界上的值。此外,采用BVA技術導出測試用例時,不僅要考慮輸入條件,還要考慮輸出的狀態(tài)。14.2軟件測試技術2022/12/239國防科技大學計算機學院2.邊界值分析法經驗表明,大多數(shù)錯誤都發(fā)生在輸入的邊界值上邊界值分析法采用BVA技術設計測試用例與等價分類法有許多相似之處:1)如果輸入條件指定了由值a,b括起來的一個范圍,那么值a、值b和緊挨a、b左右的值應分別作為測試用例;2)如果輸入條件指定為一組數(shù),那么這組數(shù)中最大者、最小者和次大、次小者應作為測試用例;3)應用規(guī)則1)、2)于輸出條件。例如,假設某程序輸出為一張溫度壓力對照表,此時應設計測試用例正好產生表項所允許的最大和最小值。4)如果內部數(shù)據(jù)結構是有界的(例如,某數(shù)組有100個元素),那么應設計測試數(shù)據(jù),使之能檢查該數(shù)據(jù)結構的邊界。14.2軟件測試技術2022/12/240國防科技大學計算機學院邊界值分析法采用BVA技術設計測試用例與等價分類法有許多相似3.對比測試法在一些可靠性要求很高的系統(tǒng)中,經常使用冗余的軟、硬件,以減少錯誤發(fā)生的可能性。這時,不同的軟件版本由不同的開發(fā)小組根據(jù)同一需求說明書開發(fā),并用相同的測試數(shù)據(jù)對它們進行測試,保持結果一致。此后各版本并行執(zhí)行并實時地比較結果,確保系統(tǒng)的正確性。受此思想起發(fā),許多關鍵軟件,即使最后交付時只要求一個版本,開發(fā)時也另外產生一個獨立版本供測試使用。這種黑盒測試方法稱為對比測試或背靠背測試14.2軟件測試技術2022/12/241國防科技大學計算機學院3.對比測試法在一些可靠性要求很高的系統(tǒng)中,經常使用冗余的14.3軟件測試策略軟件測試策略主要考慮,如何把設計測試用例的技術組織成一個系統(tǒng)的、有計劃的測試步驟。從模塊測試開始,一級一級向外擴展,直至整個系統(tǒng)測試完畢。在測試的各個階段應選擇適宜的白盒測試和黑盒測試方法,由軟件開發(fā)人員和一個獨立的測試小組(對大項目而言)共同完成測試任務。測試策略應包含測試規(guī)劃、測試用例設計、測試實施和測試結果收集評估等。其中測試規(guī)劃包括:測試的步驟、工作量、進度和資源等第十四章軟件測試2022/12/242國防科技大學計算機學院14.3軟件測試策略軟件測試策略主要考慮,如何把設計測試14.3.1單元測試單元測試的對象是軟件設計的最小單位——模塊。單元測試的依據(jù)是詳細設計描述,單元測試應對模塊內所有重要的控制路徑設計測試用例,以便發(fā)現(xiàn)模塊內部的錯誤。單元測試多采用白盒測試技術,系統(tǒng)內多個模塊可以并行地進行測試。14.3軟件測試策略2022/12/243國防科技大學計算機學院14.3.1單元測試單元測試的對象是軟件設計的最小單位——1.單元測試任務單元測試任務包括:1)模塊接口測試;2)模塊局部數(shù)據(jù)結構測試;3)模塊邊界條件測試;4)模塊中所有獨立執(zhí)行通路測試;5)模塊的各條錯誤處理通路測試。模塊接口測試是單元測試的基礎。只有在數(shù)據(jù)能正確流入、流出模塊的前提下,其他測試才有意義14.3軟件測試策略2022/12/244國防科技大學計算機學院1.單元測試任務單元測試任務包括:14.3軟件測試策略20測試接口考慮的因素①輸入的實際參數(shù)與形式參數(shù)的個數(shù)是否相同;②輸入的實際參數(shù)與形式參數(shù)的屬性是否匹配;③輸入的實際參數(shù)與形式參數(shù)的量綱是否一致;④調用其他模塊時所給實際參數(shù)的個數(shù)是否與被調模塊的形參個數(shù)相同;⑤調用其他模塊時所給實際參數(shù)的屬性是否與被調模塊的形參屬性匹配;⑥調用其他模塊時所給實際參數(shù)的量綱是否與被調模塊的形參量綱一致;⑦調用預定義函數(shù)時所用參數(shù)的個數(shù)、屬性和次序是否正確;⑧是否存在與當前入口點無關的參數(shù)引用;⑨是否修改了只讀型參數(shù);10對全程變量的定義各模塊是否一致;11是否把某些約束作為參數(shù)傳遞。14.3軟件測試策略2022/12/245國防科技大學計算機學院測試接口考慮的因素①輸入的實際參數(shù)與形式參數(shù)的個數(shù)是否相同;測試接口考慮的因素(續(xù))如果模塊內包括外部輸入輸出,還應該考慮下列因素:①文件屬性是否正確;②OPEN/CLOSE語句是否正確;③格式說明與輸入輸出語句是否匹配;④緩沖區(qū)大小與記錄長度是否匹配;⑤文件使用前是否已經打開;⑥是否處理了文件尾;⑦是否處理了輸入/輸出錯誤;⑧輸出信息中是否有文字性的錯誤。14.3軟件測試策略2022/12/246國防科技大學計算機學院測試接口考慮的因素(續(xù))如果模塊內包括外部輸入輸出,還應該考單元測試的任務(續(xù))局部數(shù)據(jù)結構往往是錯誤的根源,應仔細設計測試用例,力求發(fā)現(xiàn)下面幾類錯誤:①不合適或不相容的類型說明;②變量無初值;③變量初始化或省缺值有錯;④不正確的變量名(拚錯或不正確地截斷);⑤出現(xiàn)上溢、下溢和地址異常。14.3軟件測試策略2022/12/247國防科技大學計算機學院單元測試的任務(續(xù))局部數(shù)據(jù)結構往往是錯誤的根源,應仔細設計單元測試的任務(續(xù))在模塊中應對每一條獨立執(zhí)行路徑進行測試,單元測試的基本任務是保證模塊中每條語句至少執(zhí)行一次。此時設計測試用例是為了發(fā)現(xiàn)因錯誤計算、不正確的比較和不適當?shù)目刂屏髟斐傻腻e誤。此時基本路徑測試和循環(huán)測試是最常用且最有效的測試技術。14.3軟件測試策略2022/12/248國防科技大學計算機學院單元測試的任務(續(xù))在模塊中應對每一條獨立執(zhí)行路徑進行測試,單元測試的任務(續(xù))計算中常見的錯誤包括:①誤解或用錯了算符優(yōu)先級;②混合類型運算;③變量初值錯;④精度不夠;⑤表達式符號錯。14.3軟件測試策略2022/12/249國防科技大學計算機學院單元測試的任務(續(xù))計算中常見的錯誤包括:14.3軟件測試單元測試的任務(續(xù))比較判斷與控制流常常緊密相關,測試用例還應致力于發(fā)現(xiàn)下列錯誤:①不同數(shù)據(jù)類型的對象之間進行比較;②錯誤地使用邏輯運算符或優(yōu)先級;③因計算機表示的局限性,期望理論上相等而實際上不相等的兩個量相等;④比較運算或變量出錯;⑤循環(huán)終止條件不合適或不可能出現(xiàn);⑥迭代發(fā)散時不能退出;⑦錯誤地修改了循環(huán)變量。14.3軟件測試策略2022/12/250國防科技大學計算機學院單元測試的任務(續(xù))比較判斷與控制流常常緊密相關,測試用例還單元測試的任務(續(xù))一個好的設計應能預見各種出錯條件,并預設各種錯誤處理通路,錯誤處理通路同樣需要認真測試,測試應著重檢查下列問題:①輸出的錯誤信息難以理解;②記錄的錯誤與實際遇到的錯誤不相符;③在程序自定義的錯誤處理段運行之前,系統(tǒng)已介入;④異常處理不當;⑤錯誤陳述中未能提供足夠的定位錯誤信息。14.3軟件測試策略2022/12/251國防科技大學計算機學院單元測試的任務(續(xù))一個好的設計應能預見各種出錯條件,并預設2.單元測試過程一般認為單元測試應緊接在編碼之后,當源程序編制完成并通過復審和編譯檢查,便可開始單元測試。測試用例的設計應與復審工作相結合,根據(jù)設計信息選取測試數(shù)據(jù),將增大發(fā)現(xiàn)上述各類錯誤的可能性。在確定測試用例的同時,應給出對應的期望結果。應為測試模塊開發(fā)一個驅動模塊(driver)和(或)若干個樁模塊(stub)。14.3軟件測試策略2022/12/252國防科技大學計算機學院2.單元測試過程一般認為單元測試應緊接在編碼之后,當源程序單元測試環(huán)境14.3軟件測試策略2022/12/253國防科技大學計算機學院單元測試環(huán)境14.3軟件測試策略2022/12/153國防科單元測試過程(續(xù))驅動模塊和樁模塊是測試使用的軟件,而不是軟件產品的組成部分,但它需要一定的開發(fā)費用。若驅動模塊和樁模塊比較簡單,實際開銷相對低些。僅用簡單的驅動模塊和樁模塊不能完成某些模塊的測試任務,這些模塊的單元測試只能采用下面討論的綜合測試方法。提高模塊的內聚度可簡化單元測試,如果每個模塊只完成一個功能,所需測試用例數(shù)目將顯著減少,模塊中的錯誤也更容易發(fā)現(xiàn)。14.3軟件測試策略2022/12/254國防科技大學計算機學院單元測試過程(續(xù))驅動模塊和樁模塊是測試使用的軟件,而不是軟14.3.2綜合測試綜合測試是組裝軟件的系統(tǒng)測試技術,按設計要求把通過單元測試的各個模塊組裝在一起之后,進行綜合測試以便發(fā)現(xiàn)與接口有關的各種錯誤。某些軟件設計人員習慣于把所有模塊按設計要求一次全部組裝起來,然后進行整體測試,這稱為非增量式集成。這種方法容易出現(xiàn)混亂。與之相反的是增量式集成方法,程序一段一段地擴展,測試的范圍一步一步地增大,錯誤易于定位和糾正,界面的測試亦可做到完全徹底。14.3軟件測試策略2022/12/255國防科技大學計算機學院14.3.2綜合測試綜合測試是組裝軟件的系統(tǒng)測試技術,按設1.自頂向下集成自頂向下集成是構造程序結構的一種增量式方式,它從主控模塊開始,按照軟件的控制層次結構,以深度優(yōu)先或廣度優(yōu)先的策略,逐步把各個模塊集成在一起。深度優(yōu)先策略首先把主控制路徑上的模塊集成在一起,至于選擇哪一條路徑作為主控制路徑多少帶點隨意性,一般根據(jù)問題的特性確定。14.3軟件測試策略2022/12/256國防科技大學計算機學院1.自頂向下集成自頂向下集成是構造程序結構的一種增量式方式例:14.3軟件測試策略2022/12/257國防科技大學計算機學院例:14.3軟件測試策略2022/12/157國防科技大學計步驟1)以主控模塊作為測試驅動模塊,把對主控模塊進行單元測試時引入的所有樁模塊用實際模塊替代;2)依據(jù)所選的集成策略(深度優(yōu)先或廣度優(yōu)先),每次只替代一個樁模塊;3)每集成一個模塊立即測試一遍;4)只有每組測試完成后,才著手替換下一個樁模塊;5)為避免引入新錯誤,須不斷進行回歸測試(即全部或部分地重復已做過的測試)。從第二步開始,循環(huán)執(zhí)行上述步驟,直至整個程序結構構造完畢。14.3軟件測試策略2022/12/258國防科技大學計算機學院步驟1)以主控模塊作為測試驅動模塊,把對主控模塊進行單元測優(yōu)缺點自頂向下集成的優(yōu)點在于能盡早地對程序的主要控制和決策機制進行檢驗,因此較早地發(fā)現(xiàn)錯誤。缺點是在測試較高層模塊時,低層處理采用樁模塊替代,不能反映真實情況,重要數(shù)據(jù)不能及時回送到上層模塊,因此測試并不充分。14.3軟件測試策略2022/12/259國防科技大學計算機學院優(yōu)缺點自頂向下集成的優(yōu)點在于能盡早地對程序的主要控制和決策機2.自底向上集成自底向上測試是從“原子”模塊(即軟件結構最低層的模塊)開始組裝和測試,因測試到較高層模塊時,所需的下層模塊功能均已具備,所以不再需要樁模塊。自底向上綜合測試的步驟分為:1)把低層模塊組織成實現(xiàn)某個子功能的模塊群(cluster);2)開發(fā)一個測試用驅動模塊,控制測試數(shù)據(jù)的輸入和測試結果的輸出;3)對每個模塊群進行測試;4)刪除測試使用的驅動模塊,用較高層模塊把模塊群組織成為完成更大功能的新模塊群;從第一步開始循環(huán)執(zhí)行上述各步驟,直至整個程序構造完畢。14.3軟件測試策略2022/12/260國防科技大學計算機學院2.自底向上集成自底向上測試是從“原子”模塊(即軟件結構最例:14.3軟件測試策略2022/12/261國防科技大學計算機學院例:14.3軟件測試策略2022/12/161國防科技大學計優(yōu)缺點自底向上集成方法不用樁模塊,測試用例的設計亦相對簡單,但缺點是程序最后一個模塊加入時才具有整體形象。它與自頂向下綜合測試方法的優(yōu)缺點正好相反。因此,在測試軟件系統(tǒng)時,應根據(jù)軟件的特點及工程的進度,選用適當?shù)臏y試策略,有時混合使用兩種策略更為有效,上層模塊用自頂向下的方法,下層模塊用自底向上的方法。14.3軟件測試策略2022/12/262國防科技大學計算機學院優(yōu)缺點自底向上集成方法不用樁模塊,測試用例的設計亦相對簡單,關鍵模塊在綜合測試過程中尤其要注意關鍵模塊,所謂關鍵模塊一般都具有下述一或多個特征:①對應幾條需求;②具有高層控制功能;③復雜易出錯;④有特殊的性能要求。關鍵模塊應盡早測試,并反復進行回歸測試。14.3軟件測試策略2022/12/263國防科技大學計算機學院關鍵模塊在綜合測試過程中尤其要注意關鍵模塊,所謂關鍵模塊一般3.綜合測試文檔測試說明書(TestSpecifications)應給出軟件集成的總體規(guī)劃和某些特殊測試的描述。綜合測試文檔將作為軟件配置的一部分交給用戶。14.3軟件測試策略2022/12/264國防科技大學計算機學院3.綜合測試文檔測試說明書(TestSpecificat測試說明書提綱Ⅰ測試范圍Ⅱ測試計劃
A測試的各個階段和劃分模塊群情況
B進度安排
C開銷軟件(驅動和樁模塊)
D環(huán)境和資源Ⅲ測試過程n(關于第n個模塊群測試過程的描述)
A集成順序1用途2被測模式
B模塊群中各模塊的單元測試情況
14.3軟件測試策略2022/12/265國防科技大學計算機學院測試說明書提綱Ⅰ測試范圍14.3軟件測試策略2022/1測試說明書提綱(續(xù))1模塊m的測試描述2開銷軟件描述3期望結果
C測試環(huán)境1特殊工具或技術2開銷軟件的描述
D測試用例
E模塊群n的期望結果Ⅳ實際測試結果Ⅴ參考文獻Ⅵ附錄14.3軟件測試策略2022/12/266國防科技大學計算機學院測試說明書提綱(續(xù))1模塊m的測試描述14.3.3確認測試通過綜合測試之后,軟件已完全組裝起來,接口方面的錯誤也已排除,軟件測試的最后一步——確認測試即可開始。確認測試應檢查軟件能否按合同要求進行工作,即是否滿足軟件需求說明書中的確認標準。14.3軟件測試策略2022/12/267國防科技大學計算機學院14.3.3確認測試通過綜合測試之后,軟件已完全組裝起來1.確認測試標準實現(xiàn)軟件確認要通過一系列黑盒測試。確認測試同樣需要制訂測試計劃和過程,測試計劃應規(guī)定測試的種類和測試進度,測試過程則定義一些特殊的測試用例,旨在說明軟件與需求是否一致。無論是計劃還是過程,都應該著重考慮軟件是否滿足合同規(guī)定的所有功能和性能,文檔資料是否完整、準確,人機界面和其他方面(例如,可移植性、兼容性、錯誤恢復能力和可維護性等等)是否令用戶滿意。14.3軟件測試策略2022/12/268國防科技大學計算機學院1.確認測試標準實現(xiàn)軟件確認要通過一系列黑盒測試。14.32.配置復審確認測試的另一個重要環(huán)節(jié)是配置復審。復審的目的在于保證軟件配置齊全、分類有序,并且包括軟件維護所必需的細節(jié)。14.3軟件測試策略2022/12/269國防科技大學計算機學院2.配置復審確認測試的另一個重要環(huán)節(jié)是配置復審。復審的目3.α、β測試軟件是否真正滿足最終用戶的要求應由用戶進行一系列“驗收測試”。驗收測試既可以是非正式的測試,也可以是有計劃、有系統(tǒng)的測試。有時,驗收測試長達數(shù)周甚至數(shù)月,不斷暴露錯誤,導致開發(fā)延期。一個軟件產品,將有眾多用戶,不可能由每個用戶驗收,此時多采用稱為α、β測試的過程,以期發(fā)現(xiàn)那些似乎只有最終用戶才能發(fā)現(xiàn)的問題。14.3軟件測試策略2022/12/270國防科技大學計算機學院3.α、β測試軟件是否真正滿足最終用戶的要求應由用戶進行α、β測試α測試是指軟件開發(fā)公司組織內部人員模擬各類用戶行為對即將面市的軟件產品(稱為α版本)進行測試,試圖發(fā)現(xiàn)錯誤并修正。α測試的關鍵在于盡可能逼真地模擬實際運行環(huán)境和用戶對軟件產品的操作,并盡最大努力涵蓋所有可能的用戶操作方式。經過α測試調整的軟件產品稱為β版本。緊隨其后的β測試是指軟件開發(fā)公司組織各方面的典型用戶在日常工作中實際使用β版本,并要求用戶報告異常情況、提出批評意見。然后軟件開發(fā)公司再對β版本進行改錯和完善。14.3軟件測試策略2022/12/271國防科技大學計算機學院α、β測試α測試是指軟件開發(fā)公司組織內部人員模擬各類用戶行為14.3.4系統(tǒng)測試計算機軟件是基于計算機系統(tǒng)的一個重要組成部分,軟件開發(fā)完畢后應與系統(tǒng)中其他成份集成在一起,此時需要進行一系列系統(tǒng)集成和確認測試。在系統(tǒng)測試之前,軟件工程師應完成下列工作:1)為測試軟件系統(tǒng)的輸入信息,設計錯誤處理通路;2)設計測試用例,模擬錯誤數(shù)據(jù)和軟件界面可能發(fā)生的錯誤,記錄測試結果,為系統(tǒng)測試提供經驗和幫助;3)參與系統(tǒng)測試的規(guī)劃和設計,保證軟件測試的合理性。14.3軟件測試策略2022/12/272國防科技大學計算機學院14.3.4系統(tǒng)測試計算機軟件是基于計算機系統(tǒng)的一個重要1.恢復測試恢復測試主要檢查系統(tǒng)的容錯能力。當系統(tǒng)出錯時,能否在指定的時間間隔內修正錯誤并重新啟動系統(tǒng)。恢復測試首先要采用各種辦法強迫系統(tǒng)失敗,然后驗證系統(tǒng)是否能盡快恢復。對于自動恢復系統(tǒng),需驗證重新初始化、檢查點、數(shù)據(jù)恢復和重新啟動等機制的正確性;對于人工干予的恢復系統(tǒng),還需估測平均修復時間,確定其是否在可接受的范圍內。14.3軟件測試策略2022/12/273國防科技大學計算機學院1.恢復測試恢復測試主要檢查系統(tǒng)的容錯能力。當系統(tǒng)出錯時,2.安全測試安全測試檢查系統(tǒng)對非法侵入的防范能力。安全測試期間,測試人員假扮非法入侵者,采用各種辦法試圖突破防線。例如,(1)想方設法截取或破譯口令;(2)專門定做軟件破壞系統(tǒng)的保護機制;(3)故意導致系統(tǒng)失敗,企圖趁恢復之機非法進入;(4)試圖通過瀏覽非保密數(shù)據(jù),推導所需信息等等。理論上講,只要有足夠的時間和資源,沒有不可進入的系統(tǒng)。因此系統(tǒng)安全設計的準則是,使非法侵入的代價超過被保護信息的價值。此時非法侵入者已無利可圖。14.3軟件測試策略2022/12/274國防科技大學計算機學院2.安全測試安全測試檢查系統(tǒng)對非法侵入的防范能力。安全測試3.強度測試強度測試檢查程序對異常情況的抵抗能力。強度測試總是迫使系統(tǒng)在異常的資源配置下運行。例如:(1)當中斷的正常頻率為每秒一至兩個時,運行每秒產生十個中斷的測試用例;(2)定量地增長數(shù)據(jù)輸入率,檢查輸入子功能的反映能力;(3)運行需要最大存儲空間(或其他資源)的測試用例;(4)運行可能導致虛存操作系統(tǒng)崩潰或磁盤數(shù)據(jù)劇烈抖動的測試用例;等等。14.3軟件測試策略2022/12/275國防科技大學計算機學院3.強度測試強度測試檢查程序對異常情況的抵抗能力。14.34.性能測試對于那些實時和嵌入式系統(tǒng),軟件部分既使?jié)M足功能要求,也未必能夠滿足性能要求。雖然從單元測試起,每一測試步驟都包含性能測試,但只有當系統(tǒng)真正集成之后,在真實環(huán)境中才能全面、可靠地測試運行性能,系統(tǒng)性能測試是為了完成這一任務。性能測試有時與強度測試相結合,經常需要其他軟、硬件的配套支持。14.3軟件測試策略2022/12/276國防科技大學計算機學院4.性能測試對于那些實時和嵌入式系統(tǒng),軟件部分既使?jié)M足功能14.3.5排錯排錯與成功的測試形影相隨。測試成功的標志是發(fā)現(xiàn)了錯誤。根據(jù)錯誤跡象確定錯誤的原因和準確位置,并加以改正的任務主要依靠排錯技術。14.3軟件測試策略2022/12/277國防科技大學計算機學院14.3.5排錯排錯與成功的測試形影相隨。14.3軟件測1.排錯過程排錯過程開始于一個測試用例的執(zhí)行,若測試結果與期望結果有出入,即出現(xiàn)了錯誤征兆,排錯過程首先要找出錯誤原因,然后對錯誤進行修正。因此排錯過程有兩種可能,一是找到了錯誤原因并糾正了錯誤,另一種可能是錯誤原因不明,排錯人員只得作某種推測,然后再設計測試用例證實這種推測,若一次推測失敗,再作第二次推測,直至發(fā)現(xiàn)并糾正了錯誤。14.3軟件測試策略2022/12/278國防科技大學計算機學院1.排錯過程排錯過程開始于一個測試用例的執(zhí)行,若測試結果與排錯過程14.3軟件測試策略2022/12/279國防科技大學計算機學院排錯過程14.3軟件測試策略2022/12/179國防科技大排錯過程排錯是一個相當艱苦的過程,究其原因除了開發(fā)人員心理方面的障礙外,還因為隱藏在程序中的錯誤具有下列特殊的性質:(1)錯誤的外部征兆遠離引起錯誤的內部原因,對于高度耦合的程序結構此類現(xiàn)象更嚴重;(2)糾正一個錯誤造成了另一錯誤現(xiàn)象(暫時)的消失;(3)某些錯誤征兆只是假象;(4)因操作人員一時疏忽造成的某些錯誤征兆不易追蹤;(5)錯誤是由于分時而不是程序引起的;(6)輸入條件難于精確地再構造(例如,某些實時應用的輸入次序不確定);(7)錯誤征兆時有時無,此現(xiàn)象對嵌入式系統(tǒng)尤其普遍;(8)錯誤是由于把任務分布在若干臺不同處理機上運行而造成的。14.3軟件測試策略2022/12/280國防科技大學計算機學院排錯過程排錯是一個相當艱苦的過程,究其原因除了開發(fā)人員心理方2.排錯方法無論采用那種排錯方法,目標只有一個,即發(fā)現(xiàn)并排除引起錯誤的原因,這要求排錯人員能把直觀想象與系統(tǒng)評估很好地結合起來。常用的排錯策略分為三類:·原始類(bruteforce)·回溯類(backtracking)·排除類(causeeliminations)14.3軟件測試策略2022/12/281國防科技大學計算機學院2.排錯方法無論采用那種排錯方法,目標只有一個,即發(fā)現(xiàn)并排排錯方法每一類方法均可輔以排錯工具。目前,調試編譯器、動態(tài)調試器(“追蹤器”)、測試用例自動生成器、存儲器映象及交叉訪問示圖等一系列工具已廣為使用。然而,無論什么工具也替代不了一個開發(fā)人員在對完整的設計文檔和清晰的源代碼進行認真審閱和推敲之后所起的作用。此外,不應荒廢排錯過程中最有價值的一個資源,那就是開發(fā)小組中其他成員的評價和忠告,正所謂“當事者迷,旁觀者清”。14.3軟件測試策略2022/12/282國防科技大學計算機學院排錯方法每一類方法均可輔以排錯工具。14.3軟件測試策略20排錯方法修改一處老問題可能引入幾處新問題,有時程序越改越亂,但若能做到每次糾錯前都捫心自問三個問題,情況將大為改觀:①導致這個錯誤的原因在程序其他部分還可能存在嗎?②本次修改可能對程序中相關的邏輯和數(shù)據(jù)造成什么影響?引起什么問題?③上次遇到的類似問題是如何排除的?14.3軟件測試策略2022/12/283國防科技大學計算機學院排錯方法修改一處老問題可能引入幾處新問題,有時程序越改越亂,14.4基于CASE工具的軟件測試和排錯14.4.1自動測試工具由于軟件測試工作量很大,因此設計自動測試工具,減少測試時間和費用十分必要。目前測試工具可分為下面幾類:(1)靜態(tài)分析器(staticanalyzers)。不執(zhí)行被測試的程序,而通過掃描源代碼,找出可能導致程序錯誤的異常情況。例如,變量無初值,程序中有孤立語句等。(2)代碼審查器(codeauditors)。檢查源代碼是否滿足最基本的代碼標準。第十四章軟件測試2022/12/284國防科技大學計算機學院14.4基于CASE工具的軟件測試和排錯14.4.1自動自動測試工具(3)斷言處理器。包括前置處理器和后置處理器,專門檢查程序員關于程序行為的斷言在程序實際執(zhí)行過程中是否成立。(4)測試文件產生器產生一些嵌入了預定值的典型的輸入文件。(5)測試數(shù)據(jù)生成器。能輔助測試人員產生一些特殊的測試用例,強迫程序按某種方式運行。(6)測試驗證器。度量測試的置信程度并向質量保證專家報告。(7)測試套具。支持測試過程的各項活動,如在測試環(huán)境上安裝候選程序、填入輸入數(shù)據(jù)、用樁模塊模擬下層模塊的行為等等。(8)輸出比較器。通過對幾組輸出的比較找出它們之間的差別。此外,象符號處理系統(tǒng)、環(huán)境模擬器和數(shù)據(jù)流分析器等一批自動測試工具也被人們越來越多地采用。14.4基于CASE工具的軟件測試和排錯2022/12/285國防科技大學計算機學院自動測試工具(3)斷言處理器。包括前置處理器和后置處理器,14.4.2調試器調試,又名排錯,任務就是要定位錯誤,排除錯誤。客觀地說,定位錯誤是一門藝術,目前主要靠程序員的經驗和智慧,但若輔以CASE工具支持,可成倍提高效率。關于程序調試部分,常見的功能包括設置斷點,查看、修改變量或表達式的值,單步執(zhí)行和進入過程執(zhí)行等等。程序員調試程序,通常希望被調程序和調試器能同時運行。此時若要求被調試內容和調試環(huán)境同時顯現(xiàn),可采用雙終端方式,若因內存空間限制兩者不可能同時在單機上運行,則可采用雙機或遠程調試方式,被調程序在一機運行,調試器在另一機上運行,兩者通過串行接口進行通訊。14.4基于CASE工具的軟件測試和排錯2022/12/286國防科技大學計算機學院14.4.2調試器調試,又名排錯,任務就是要定位錯誤,排除例:14.4基于CASE工具的軟件測試和排錯2022/12/287國防科技大學計算機學院例:14.4基于CASE工具的軟件測試和排錯2022/12/小結軟件測試既是軟件開發(fā)階段的最后一個活動,又是軟件質量保證的最后一項措施。它所用的主要技術是白盒測試和黑盒測試。軟件測試過程可概括為用單元測試保證模塊正確工作,用綜合測試保證模塊集成到一起后正常工作,用確認測試保證軟件需求的滿足,用系統(tǒng)測試保證軟件與其他系統(tǒng)元素合成后達到系統(tǒng)各項性能要求。測試一旦發(fā)現(xiàn)錯誤,必須定位并糾正此錯,即通常所說的排錯(或調試)過程。因此排錯與測試是密不可分的兩個活動。本章介紹了若干軟件測試技術和策略,簡單討論了排錯的過程、方法和支持工具。第十四章軟件測試2022/12/288國防科技大學計算機學院小結軟件測試既是軟件開發(fā)階段的最后一個活動,又是軟件質量保證謝謝2022/12/289國防科技大學計算機學院謝謝2022/12/189國防科技大學計算機學院2022/12/290國防科技大學計算機學院2022/12/190國防科技大學計算機學院
軟件工程
SoftwareEngineering
國防科技大學計算機學院2004.07齊治昌教授,譚慶平教授,寧洪教授,董威博士2022/12/291國防科技大學計算機學院
軟件工程
第十四章軟件測試盡管軟件質量保證是貫穿軟件開發(fā)全過程的活動,但最關鍵的步驟是軟件測試,軟件測試是對軟件規(guī)格說明、軟件設計和編碼的最后復審,目的是在軟件產品交付之前盡可能發(fā)現(xiàn)軟件中潛伏的錯誤。大量統(tǒng)計表明,軟件測試工作量往往占軟件開發(fā)總工作量的40%以上,在極端情況下,甚至可能高達軟件工程其他步驟成本總和的三到五倍。本章重點討論軟件測試的基本概念、關鍵技術和實施策略,指出軟件測試的主要目標、如何設計測試用例(testcases)以及如何組織實施測試活動。2022/12/292國防科技大學計算機學院第十四章軟件測試盡管軟件質量保證是貫穿軟件開發(fā)全過程的活14.1基本概念在測試之前的所有軟件開發(fā)活動中,軟件工程師們致力于具體實現(xiàn),即從事所謂“建設性”的活動。軟件測試人員卻在努力尋求程序中的錯誤。發(fā)現(xiàn)錯誤是為了改正錯誤。測試階段發(fā)現(xiàn)的錯誤越多,交付的軟件質量越高,后期的改正性維護工作越少。因此,測試亦是一項“建設性”活動第十四章軟件測試2022/12/293國防科技大學計算機學院14.1基本概念在測試之前的所有軟件開發(fā)活動中,軟件工程14.1.1軟件測試的目標軟件測試是為了發(fā)現(xiàn)程序中的錯誤。軟件測試的過程亦是程序運行的過程。程序運行需要數(shù)據(jù),為測試設計的數(shù)據(jù)稱測試用例。設計測試用例的原則自然是盡可能暴露錯誤。軟件測試是一個找錯過程。14.1基本概念2022/12/294國防科技大學計算機學院14.1.1軟件測試的目標軟件測試是為了發(fā)現(xiàn)程序中的錯誤軟件測試的目標(續(xù))大型軟件系統(tǒng)的測試分為單元(模塊)測試和綜合測試兩個階段。多數(shù)場合,設計者與測試者共同完成單元測試任務;專門機構負責軟件產品的綜合測試。有時設計人員也加入這個機構。值得指出的是,不能保證通過測試的程序一定正確,測試只能找出程序中的錯誤,而不能證明程序無錯。人們認為,軟件運行期間測試活動從未間斷,只是在軟件交付用戶之后,將由用戶繼續(xù)扮演測試角色而已。14.1基本概念2022/12/295國防科技大學計算機學院軟件測試的目標(續(xù))大型軟件系統(tǒng)的測試分為單元(模塊)測試和14.1.2測試階段的信息流程14.1基本概念2022/12/296國防科技大學計算機學院14.1.2測試階段的信息流程14.1基本概念2022/測試階段的信息流程輸入流分軟件配置和測試配置兩項,軟件配置由需求說明書、設計說明書和源代碼組成;測試配置中包含測試計劃、測試工具、測試用例和期望結果,有時測試配置亦作為軟件配置的一個組成部分。測試人員根據(jù)上述輸入信息測試程序并評價測試結果,當測試結果與期望結果存在差異時,往往程序有錯。此時可采用排錯技術定位錯誤并改正之。通過對測試結果的收集和評價,軟件質量和軟件可靠性的一些定性指標即能逐步確定下來。14.1基本概念2022/12/297國防科技大學計算機學院測試階段的信息流程輸入流分軟件配置和測試配置兩項,軟件配置由14.1.3測試用例和場景的設計任何工程化的產品都有兩種測試方法:一種方法是已知產品應該具有的功能,通過測試檢驗每個功能是否都能正常使用;另一種方法是已知產品內部工作過程,通過測試檢驗產品內部動作是否按照產品規(guī)格說明的規(guī)定正常進行。前者稱為黑盒測試,后者稱為白盒測試。測試用例和測試場景將根據(jù)這兩種測試方法的特性制定。14.1基本概念2022/12/298國防科技大學計算機學院14.1.3測試用例和場景的設計任何工程化的產品都有兩種黑盒測試黑盒測試完全不考慮程序的內部結構和處理過程。測試僅在程序界面上進行。設計測試用例旨在說明:①軟件的功能是否可操作;②程序能否適當?shù)亟邮蛰斎霐?shù)據(jù)并產生正確的輸出結果或在可能的場景中事件驅動的效果是否盡如人意;③能否保持外部信息(如數(shù)據(jù)文件)的完整性。14.1基本概念2022/12/299國防科技大學計算機學院黑盒測試黑盒測試完全不考慮程序的內部結構和處理過程。測試僅在白盒測試白盒測試法密切關注處理細節(jié),針對程序的每一條邏輯路徑都要分別設計測試用例,檢查分枝和循環(huán)的情況。窮舉測試不可取,一般選用少量“最有效”,即最有可能暴露錯誤的路徑進行測試。測試的目的是為了找出錯誤,所以無論采用黑盒法還是白盒法,設計測試用例時總是期望用盡可能少的時間和代價發(fā)現(xiàn)盡可能多的錯誤。14.1基本概念2022/12/2100國防科技大學計算機學院白盒測試白盒測試法密切關注處理細節(jié),針對程序的每一條邏輯路徑例:最多有1014個邏輯路徑,假設每運行一個測試用例平均花費1毫秒,總共需3170年才能窮盡所有測試。14.1基本概念2022/12/2101國防科技大學計算機學院例:最多有1014個邏輯路徑,假設每運行一個測試用例平均花費14.1.4軟件測試的步驟軟件工程的開發(fā)過程和測試過程應該是對應的。第一章圖1.3采用V型圖表示開發(fā)—測試的對應關系,也可以采用圖14.3所示的螺旋型圖表示。每旋轉一圈,測試的范圍加大一次:螺旋中心對應單元測試,它測試源程序的每一模塊;下一步是綜合測試,它測試軟件總體結構;再下一步是確認(驗收)測試,測試軟件是否滿足需求;最后一步是系統(tǒng)測試,檢查軟件與系統(tǒng)中其他元素是否協(xié)調。14.1基本概念2022/12/2102國防科技大學計算機學院14.1.4軟件測試的步驟軟件工程的開發(fā)過程和測試過程應14.2軟件測試技術本節(jié)主要討論當用白盒或黑盒測試法測試軟件時,如何設計測試用例才能達到測試的目的。此外,對自動測試工具也作一些簡單介紹。第十四章軟件測試2022/12/2103國防科技大學計算機學院14.2軟件測試技術本節(jié)主要討論當用白盒或黑盒測試法測試14.2.1白盒測試白盒測試應該根據(jù)程序的控制結構設計測試用例,原則是:①保證模塊中每一獨立的路徑至少執(zhí)行一次;②保證所有判斷的每一分枝至少執(zhí)行一次;③保證每一循環(huán)都在邊界條件和一般條件下至少各執(zhí)行一次;④驗證所有內部數(shù)據(jù)結構的有效性。14.2軟件測試技術2022/12/2104國防科技大學計算機學院14.2.1白盒測試白盒測試應該根據(jù)程序的控制結構設計測1.基本路徑測試基本路徑測試的主要思想是,根據(jù)軟件過程性描述(詳細設計或代碼)中的控制流程確定復雜性度量,然后用此度量定義基本路徑集合,由此導出一組測試用例,它們能保證每個語句至少執(zhí)行一次。為了使用圖論的知識和術語,引入流圖(亦稱程序圖)的概念,流圖即把流程圖中結構化構件改用一般有向圖的表示形式。代表條件判斷的結點稱為謂詞結點。14.2軟件測試技術2022/12/2105國防科技大學計算機學院1.基本路徑測試基本路徑測試的主要思想是,根據(jù)軟件過程性描述結構化構件在流圖中的表示14.2軟件測試技術2022/12/2106國防科技大學計算機學院結構化構件在流圖中的表示14.2軟件測試技術2022/12/例:流程圖14.2軟件測試技術2022/12/2107國防科技大學計算機學院例:流程圖14.2軟件測試技術2022/12/117國防科技例:對應的流圖14.2軟件測試技術2022/12/2108國防科技大學計算機學院例:對應的流圖14.2軟件測試技術2022/12/118國防條件處理若判斷中含復合條件,則需增加謂詞結點。如OR運算的處理。14.2軟件測試技術2022/12/2109國防科技大學計算機學院條件處理若判斷中含復合條件,則需增加謂詞結點。如OR運算的處基本路徑測試的思想基本路徑至少引入一個新語句或者新判斷的程序執(zhí)行通道測試用例的設計方法流程圖==>流圖==>基本路徑==>測試用例14.2軟件測試技術2022/12/2110國防科技大學計算機學院基本路徑測試的思想基本路徑14.2軟件測試技術2022/12Step1
根據(jù)程序的邏輯結構畫出流程圖voidFunc(intnPosX,intnPosY){ while(nPosX>0){ intnSum=nPosX+nPosY; if(nSum>1){ nPosX--;nPosY--; } else{ if(nSum<-1)nPosX-=2; elsenPosX-=4; } } //endofwhile}14.2軟件測試技術2022/12/2111國防科技大學計算機學院Step1根據(jù)程序的邏輯結構畫出流程圖voidFunc(Step1
根據(jù)程序的邏輯結構畫出流程圖14.2軟件測試技術2022/12/2112國防科技大學計算機學院Step1根據(jù)程序的邏輯結構畫出流程圖14.2軟件測試技術Step2
根據(jù)流程圖畫出流圖14.2軟件測試技術2022/12/2113國防科技大學計算機學院Step2根據(jù)流程圖畫出流圖14.2軟件測試技術2022/Step3確定基本路徑的集合基本路徑流圖的Cyclomatic復雜度正好是基本路徑的數(shù)目V(G)=E–N+2V(G)=11-9+2=414.2軟件測試技術2022/12/2114國防科技大學計算機學院Step3確定基本路徑的集合基本路徑14.2軟件測試技術2
Step3確定基本路徑的集合1-111-2,3-4,5-10-1-111-2,3-6-7-9-10-1-111-2,3-6-8-9-10-1-1114.2軟件測試技術2022/12/2115國防科技大學計算機學院 Step3確定基本路徑的集合1-1114.2軟件測試Step4對每條基本路徑設計測試用例對于路徑1–11nPosX取-1,nPosY取任意值1-2,3-4,5-10-1-11nPosX取1,nPosY取1對于路徑1-2,3-6-7-9-10-1–11nPosX取1,nPosY取-11-2,3-6-8-9-10-1-11
nPosX取1,nPosY取-314.2軟件測試技術2022/12/2116國防科技大學計算機學院Step4對每條基本路徑設計測試用例對于路徑1–1112.控制結構測試基本路徑測試是控制結構測試技術的一種,下面介紹其他形式的控制結構測試,它們比基本路徑測試法覆蓋程度更大,進一步提高了白盒測試的質量。14.2軟件測試技術2022/12/2117國防科技大學計算機學院2.控制結構測試基本路徑測試是控制結構測試技術的一種,下條件測試法條件測試主要考慮程序中的條件判斷,以期發(fā)現(xiàn)條件判斷內部的錯誤和程序中其他一些錯誤。程序中“條件”分為簡單條件和復合條件。簡單條件為一個布爾變量或一個關系表達式(可能前綴邏輯非),復合條件由簡單條件通過邏輯運算符(OR、AND、NOT)和括號連接而成。因此條件中可能出現(xiàn)的錯誤類型包括:布爾運算符錯、布爾變量錯、括號錯、關系運算符錯和算術表達式錯。最簡單的條件測試是分支測試。14.2軟件測試技術2022/12/2118國防科技大學計算機學院條件測試法條件測試主要考慮程序中的條件判斷,以期發(fā)現(xiàn)條件判斷分支和關系運算測試法BRO能用少于2n次測試發(fā)現(xiàn)條件中大多數(shù)錯誤,采用該方法的前提是條件中每個布爾變量和關系運算符至多出現(xiàn)一次并無公共變量。BRO方法引入條件約束的概念,含n個簡單條件的復合條件C之約束D表示為(D1,D2,…Dn),Di(0<i≤n)一般為某種符號,它指明簡單條件Ci在C中出現(xiàn)的約束。C的一次執(zhí)行覆蓋約束條件D指,C中出現(xiàn)的每個簡單條件Ci在這次執(zhí)行中都滿足D中對應的約束Di。對于一個布爾表達式,出現(xiàn)約束或為真(t)或為假(f);對于一個關系表達式,出現(xiàn)約束用符號>、<或=表示。14.2軟件測試技術2022/12/2119國防科技大學計算機學院分支和關系運算測試法BRO能用少于2n次測試發(fā)現(xiàn)條件中大多數(shù)數(shù)據(jù)流測試法數(shù)據(jù)流測試法是根據(jù)程序中變量定義和引用的位置選擇測試路徑。為說明數(shù)據(jù)流測試法,假設程序中每個語句都被賦與一個唯一的標號,并且每個函數(shù)都不修改其參數(shù)和全局變量,對以S為標號的語句定義下面兩個集合:DEF(S)={X|語句S中含X的定義}USE(S)={X|語句S中含對X的引用}當S為分支或循環(huán)語句時,DEF集合為空,USE集合由S所含條件確定。如果從語句S到語句S’存在一條路徑并且在S’中不存在X的再定義,則稱在S中定義的X在S’處活躍。14.2軟件測試技術2022/12/2120國防科技大學計算機學院數(shù)據(jù)流測試法數(shù)據(jù)流測試法是根據(jù)程序中變量定義和引用的位置選擇數(shù)據(jù)流測試法(續(xù))定義變量X的定義—引用鏈(DU鏈)為[X,S,S’],其中S,S’為標號,X∈DEF(S)∩USE(S’)且S中定義的X在S’處活躍。一種簡單的數(shù)據(jù)流測試策略即對每條DU鏈至少覆蓋一次,稱為DU測試策略,它對于測試含嵌套IF語句和多重循環(huán)語句的程序特別有效。14.2軟件測試技術2022/12/2121國防科技大學計算機學院數(shù)據(jù)流測試法(續(xù))定義變量X的定義—引用鏈(DU鏈)為[X,循環(huán)測試循環(huán)是大多數(shù)算法的基礎,循環(huán)測試的目的是檢查循環(huán)結構的有效性。循環(huán)分為簡單循環(huán)、并列循環(huán)、嵌套循環(huán)和非結構循環(huán)四類:14.2軟件測試技術2022/12/2122國防科技大學計算機學院循環(huán)測試循環(huán)是大多數(shù)算法的基礎,循環(huán)測試的目的是檢查循環(huán)結構14.2軟件測試技術2022/12/2123國防科技大學計算機學院14.2軟件測試技術2022/12/133國防科技大學計算機循環(huán)測試(續(xù))對于最多為n次的簡單循環(huán),應作下列測試:1)完全跳過循環(huán);2)僅循環(huán)一次;3)循環(huán)兩次;4)循環(huán)m次,m<n;5)分別循環(huán)(n-1)次,n次,n+1次。14.2軟件測試技術2022/12/2124國防科技大學計算機學院循環(huán)測試(續(xù))對于最多為n次的簡單循環(huán),應作下列測試:14循環(huán)測試(續(xù))對于嵌套循環(huán)若生搬硬套簡單循環(huán)的測試策略??赡苁箿y試次數(shù)成幾何級數(shù)增長,減少測試次數(shù)的具體措施包括:1)從最內層循環(huán)開始測試,此時所有外層循環(huán)都取最小值,內層循環(huán)按簡單循環(huán)的測試策略測試;2)由里向外,回退到上一層循環(huán)測試,這層循環(huán)的所有外層循環(huán)仍取最小值,由該層循環(huán)嵌套的那些循環(huán)取一些典型值。3)繼續(xù)向外擴展,直至所有循環(huán)測試完畢。對于并置循環(huán)分兩種情況,若兩個循環(huán)完全獨立,采用簡單循環(huán)的測試策略,反之,若第一循環(huán)的計數(shù)器用作第二循環(huán)的初值,即兩循環(huán)不獨立,需用嵌套循環(huán)測試策略測試。非結構化的循環(huán)需按結構化程序設計的思想首先將程序結構化然后再進行測試。14.2軟件測試技術2022/12/2125國防科技大學計算機學院循環(huán)測試(續(xù))對于嵌套循環(huán)若生搬硬套簡單循環(huán)的測試策略。可能14.2.2黑盒測試黑盒測試旨在測試軟件是否滿足功能要求,它主要診斷下列幾類錯誤:(1)不正確或遺漏的功能;(2)界面錯誤;(3)數(shù)據(jù)結構或外部數(shù)據(jù)庫訪問錯誤;(4)性能錯誤;(5)初始化和終止條件錯誤。值得指出的是,黑盒測試法與白盒測試法不能互相替代,相反兩者應互為補充,在測試的不同階段為發(fā)現(xiàn)不同類型的錯誤而靈活選用。14.2軟件測試技術2022/12/2126國防科技大學計算機學院14.2.2黑盒測試黑盒測試旨在測試軟件是否滿足功能要求,1.等價分類法等價分類法的主要思想是把程序的輸入數(shù)據(jù)集合按輸入條件劃分為若干個等價類,每一等價類相對于輸入條件表示為一組有效或無效的輸入,然后為每一等價類設計一個測試用例,這樣即可大大減小測試的次數(shù)又不丟失發(fā)現(xiàn)錯誤的機會。因此等價分類法的關鍵是根據(jù)輸入數(shù)據(jù)的類型和程序的功能說明劃分等價類。14.2軟件測試技術2022/12/2127國防科技大學計算機學院1.等價分類法等價分類法的主要思想是把程序的輸入數(shù)據(jù)集合按等價分類法常用的一些規(guī)則:(1)如果能為輸入條件指定一個范圍,則可劃分出一個有效的等價類(輸入值落在此范圍內)和兩個無效的等價類(大于最大值的輸入和小于最小值的輸入);(2)如果能為輸入條件指定一個特定值,則可類似地劃分出一個有效等價類和兩個無效等價類;(3)如果能為輸入條件指定一個集合,則可劃分出一個有效等價類(此集合)和一個無效等價類(此集合的補集);(4)如果能為輸入條件指定一個布爾量,則可劃分出一個有效等價類(此布爾量)和一個無效布爾量(此布爾量之非)。14.2軟件測試技術2022/12/2128國防科技大學計算機學院等價分類法常用的一些規(guī)則:14.2軟件測試技術2022/122.邊界值分析法經驗表明,大多數(shù)錯誤都發(fā)生在輸入的邊界值上。為此,專門引入邊界值分析(BoundaryValueAnalysis)技術,旨在選擇測試用例,強迫程序在邊界值上執(zhí)行。BVA技術是對等價分類技術的補充,即在一個等價類中不是任選一個元素作為此等價類的代表進行測試,而是選擇此等價類邊界上的值。此外,采用BVA技術導出測試用例時,不僅要考慮輸入條件,還要考慮輸出的狀態(tài)。14.2軟件測試技術2022/12/2129國防科技大學計算機學院2.邊界值分析法經驗表明,大多數(shù)錯誤都發(fā)生在輸入的邊界值上邊界值分析法采用BVA技術設計測試用例與等價分類法有許多相似之處:1)如果輸入條件指定了由值a,b括起來的一個范圍,那么值a、值b和緊挨a、b左右的值應分別作為測試用例;2)如果輸入條件指定為一組數(shù),那么這組數(shù)中最大者、最小者和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司股權授權合同范本
- 光纖面板采購合同范本
- 商場門店售賣合同范本
- 中華美德頌的演講稿
- 中專生學期個人總結
- 個人賣房委托書
- 分公司注銷合同范本
- 下半年會計工作總結
- 不起訴合同范本
- 代評職稱合同范本
- 一年級上冊生字卡片帶拼音組詞可打印01637
- 汽車行業(yè)集團公司關鍵崗位崗位職責及KPI考核指標
- 心理健康課1 漫步陽光心靈_ppt課件
- 精品紅四川大學信紙?zhí)ь^logo
- 建設項目職業(yè)病防護設施設計專篇編制導則
- C21甾體化合物 (2)
- 船舶安檢缺陷處理建議表籍國內航行海船
- 輻照交聯(lián)電線電纜型號說明
- 雨污水管道溝槽開挖專項施工方案(改)
- 云南省作家協(xié)會入會申請表及說明
- 城軌道交通認知實習任務書及指導書
評論
0/150
提交評論