




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟測基礎理論軟件測試方法內容復習軟件的定義軟件測試的定義軟件的生命周期軟件測試的生命周期一條缺陷報告包括哪些主要內容一條用例包括哪些主要內容測試計劃包括哪些內容V模型缺陷的管理流程軟件測試的相關原則軟件測試的分類軟件測試可按照不同的角度,有不同的分類方法。按照開發階段劃分——單元測試、集成測試、確認測試、系統測試和驗收測試。按照測試實施組織劃分——開發方測試、用戶測試和第三方測試。按照測試技術劃分——白盒測試、黑盒測試和灰盒測試。按照測試方式劃分——靜態測試和動態測試、手工測試、自動測試。按照測試目的劃分——功能測試、健壯性測試、性能測試、壓力測試、用戶界面測試、可靠性測試、安全性測試、文檔測試、恢復測試、兼容性測試等、冒煙測試、回歸測試、安裝測試。2.1軟件測試方法概述2.2靜態測試與動態測試2.3黑盒測試2.4白盒測試2.5黑盒測試與白盒測試比較小結第2章軟件測試方法軟件測試的策略和方法靜態測試方法動態測試方法人工測試方法計算機輔助靜態分析方法白盒測試方法黑盒測試方法2.1軟件測試方法概述1.從是否需要執行被測軟件的角度分類靜態測試——通過對被測程序的靜態審查,發現代碼中潛在的錯誤。它一般用人工方式脫機完成,故亦稱人工測試或代碼評審(CodeReview);也可借助于靜態分析器在機器上以自動方式進行檢查,但不要求程序本身在機器上運行。動態測試——使用和運行被測軟件,通常意義上的測試。動態測試的對象必須是能夠由計算機真正運行的被測試的程序,它包含黑盒測試和白盒測試。
2.從軟件測試用例設計方法的角度分類黑盒測試——從用戶角度出發的測試,又稱為功能測試、數據驅動測試和基于規格說明的測試。
把被測試程序當作一個黑盒,忽略程序內部的結構的特性,測試者在只知道該程序輸入和輸出之間的關系或程序功能的情況下,依靠能夠反映這一關系和程序功能需求規格的說明書,來確定測試用例和推斷測試結果的正確性。白盒測試——基于產品的內部結構來進行測試,又稱為結構測試,邏輯驅動測試或基于程序的測試。主要檢查內部操作是否按規定執行,軟件各個部分功能是否得到充分利用,即根據被測程序的內部結構設計測試用例,測試者需要預先了解被測試程序的結構。3.從軟件測試的策略和過程的角度分類。單元測試——針對每個單元的測試,它確保每個模塊能正常工作,主要采用白盒測試方法,用以發現內部錯誤。集成測試——對已測試過的模塊進行組裝后的測試,主要檢驗與軟件設計相關的程序結構問題。主要采用黑盒測試和白盒測試兩種方法,來驗證多個單元模塊集成到一起后是否能夠協調工作。確認測試——檢驗所開發的軟件能否滿足所有功能和性能需求的最后手段,通常采用黑盒測試方法。系統測試——是檢測被測軟件與系統的其他部分的協調性,通常采用黑盒測試方法。驗收測試——是軟件產品質量的最后一關,主要從用戶的角度著手,其參與者主要是用戶和少量的程序開發人員,通常采用黑盒測試方法。2.1軟件測試方法概述2.2靜態測試與動態測試2.3黑盒測試2.4白盒測試2.5黑盒測試與白盒測試比較小結第2章軟件測試方法根據程序是否運行而分。2.2靜態測試與動態測試靜態方法的主要特征是對軟件進行分析、檢查和審閱,不實際運行被測試的軟件。因此,靜態方法常稱為“分析”,靜態分析是對被測程序進行特性分析的一些方法的總稱。所謂靜態分析,就是不需要執行所測試的程序,而只是通過掃描程序正文,對程序的數據流和控制流等信息進行分析,找出系統的缺陷,得出測試報告。通過靜態測試,可找出30~70%的邏輯設計錯誤。2.2.1靜態測試靜態測試包括:代碼檢查靜態結構分析代碼質量度量它可以由人工進行,充分發揮人的邏輯思維優勢,也可以借助軟件工具自動進行。靜態測試的內容:軟件配置(需求規格說明書、軟件設計說明書、源程序等)做檢查和審閱,包括:是否符合標準和規范;通過結構分析、流圖分析、符號執行指出軟件缺陷;
動態方法是通過運行軟件來檢驗軟件的動態行為和運行結果的正確性。
動態測試是真正運行被測程序,在執行過程中,通過輸入有效的測試用例,對其輸入與輸出的對應關系進行分析,以達到檢測的目的。兩個基本要素:被測試程序、測試數據(測試用例)2.2.2動態測試動態測試方法的基本步驟:選取定義域的有效值,或選取定義域外的無效值;對已選取值決定預期的結果;用選取值執行程序;執行結果與預期的結果相比,不吻合則說明程序有錯。不同的測試方法各自的目標和側重點不一樣,在實際工作中要將靜態測試和動態測試結合起來,以達到更加完美的效果。在動態測試中,又可有基于程序結構的白盒測試(或稱為覆蓋測試)和基于功能的黑盒測試。2.1軟件測試方法概述2.2靜態測試與動態測試2.3黑盒測試2.4白盒測試2.5黑盒測試與白盒測試比較小結第2章軟件測試方法黑盒測試(Black-boxTesting)又稱為功能測試、數據驅動測試和基于規格說明的測試。2.3.1黑盒測試方法概述2.3黑盒測試方法軟件輸入輸出“黑盒”可理解為程序或軟件裝在一個漆黑的盒子里,故盒子內的程序內部結構和內部特性對測試人員是不可見的,只明確要做到什么。測試人員根據軟件的需求規格說明書設計測試用例,依靠被測程序輸入和輸出之間的關系或程序的功能設計,對程序功能和程序接口進行測試。黑盒測試是從用戶角度出發進行的測試。很明顯,如果外部特性本身有問題或規格說明書的規定有誤,用黑盒測試方法是發現不了的。黑盒測試主要是為了發現以下錯誤:是否有不正確或遺漏了的功能;在接口上,輸入能否正確地接受,能否輸出正確的結果;是否有數據結構錯誤或外部信息(例如數據文件)訪問錯誤;性能上是否能夠滿足要求;是否有初始化或終止性錯誤。黑盒測試的優點:黑盒測試不考慮軟件的具體實現過程,當在軟件實現的過程發生變化時,測試用例仍然可以使用;黑盒測試用例的設計可以和軟件實現同時進行,這樣能夠壓縮總的開發時間,從而加快了軟件測試與開發的速度。黑盒測試不僅能夠找到大多數其他測試方法無法發現的錯誤,而且一些外購軟件、參數化軟件包以及某些自動生成的軟件,由于無法得到源程序,在一些情況下只能選擇黑盒測試。黑盒測試的局限性:從程序的界面上進行測試,有時難以查找出錯誤的具體原因和位置;無法發現需求規格說明本身存在的問題。典型的黑盒測試方法包括主要包括等價類劃分法、邊界值分析法、錯誤推測法、因果圖法、決策表表法、正交試驗法、場景法等。這些方法是比較實用的,在項目中采用什么方法,在設計具體的測試方案時自然要針對開發項目的特點對設計方法進行適當的選擇。1.等價類劃分法概述
等價類劃分法是把所有可能的輸入數據,即程序的輸入域劃分成若干部分(子集),然后從每一個子集中選取少數具有代表性的數據作為測試用例。2.3.2等價類劃分法等價類是被測程序輸入域的一個子集合,該輸入集合中的數據對于揭露程序中的錯誤是都是等效的,它們具有等價特性,所有等價類的并集就是整個輸入域。對某等價類中的代表值的測試就相當于對等價類中所有值的測試。如果某一類中的一個例子發現了錯誤,這一等價類中的其他例子也能發現同樣的錯誤;如果某一類中的一個例子沒有發現錯誤,則這一類中的其他例子也不會查出錯誤。使用等價類劃分法時,應仔細分析需求規格說明書來劃分等價類。軟件不能只接收合理有效的數據,也要具有處理異常數據的功能,因此,等價類又分為有效等價類和無效等價類。有效等價類是指該等價類中的輸入數據是符合需求規格說明的。利用有效等價類可以檢驗程序是否滿足規格說明所規定的功能和性能。無效等價類是指該等價類中的數據是違反需求規格說明的。利用無效等價類可以檢驗程序異常情況的處理。有效等價類和無效等價類都是使用等價類法時所必需的。使用等價類劃分法設計測試用例步驟:首先必須在分析需求規格說明的基礎上劃分等價類;然后建立等價類表,列出所有劃分出的等價類;再根據已列出的等價類表,按以下步驟確定測試用例:為每一個等價類規定一個唯一的編號;設計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價類,重復這個過程,直至所有的有效等價類均被測試用例所覆蓋;設計一個新的測試用例,使其僅覆蓋一個無效等價類,重復這個過程,直至所有的無效等價類均被測試用例所覆蓋。劃分等價類的規則:
(1)如果輸入條件規定了取值范圍,可定義一個有效等價類和兩個無效等價類。例如,
輸入值是學生成績,范圍是0~1000100
有效等價類0≤成績≤100無效等價類成績>100無效等價類
成績<0(2)如果輸入條件代表集合的某個元素,則可定義一個有效等價類和一個無效等價類。例如,程序要進行平方根函數的運算,則“≥0”的數為有效等價類,“<0”的數為無效等價類。(3)如規定了輸入數據的一組值,且程序對不同輸入值做不同處理,則每個允許的輸入值是一個有效等價類,并有一個無效等價類(所有不允許的輸入值的集合)。例如,說明學歷輸入條件可為:??啤⒈究?、碩士、博士四種之一,則分別取這四個值作為四個有效等價類,把四種學歷之外的任何學歷作為無效等價類。以三角形問題為例,輸入條件是:三個數,分別作為三角形的三條邊都是整數取值范圍在1~100之間認真分析上述的輸入條件,可以得出相關的等價類表(包括有效等價類和無效等價類),如下表所示。2.常見等價類劃分形式(1)標準等價類測試標準等價類測試不考慮無效數據值,測試用例使用每個等價類中的一個值。通常,標準等價類測試用例的數量和最大等價類中元素的數目相等。(2)健壯等價類測試健壯等價類測試主要考慮了無效等價類。對有效輸入,測試用例從每個有效等價類中取一個值;對無效輸入,一個測試用例有一個無效值,其他值均取有效值。健壯等價類測試存在兩個問題:需要花費精力定義無效測試用例的期望輸出;對強類型的語言沒有必要考慮無效的輸入
。(3)對等區間劃分它將被測對象的輸入/輸出劃分成一些區間,被測軟件對一個特定區間的任何值都是等價的。形成測試區間的數據不只是函數/過程的參數,也可以是程序可以訪問的全局變量、系統資源等,這些變量或資源可以是以時間形式存在的數據,或以狀態形式存在的輸入/輸出序列。對等區間劃分假定位于單個區間的所有值對測試都是對等的,應為每個區間的一個值設計一個測試用例。【例】某報表處理系統要求用戶輸入處理報表的日期,日期限制在2003年1月至2008年12月,即系統只能對該段期間內的報表進行處理,如日期不在此范圍內,則顯示輸入錯誤信息。系統日期規定由年、月的6位數字字符組成,前四位代表年,后兩位代表月。如何用等價類劃分法設計測試用例,來測試程序的日期檢查功能?第一步:等價類劃分“報表日期”輸入條件的等價類表第二步:為有效等價類設計測試用例對表中編號為1,2,3的3個有效等價類用一個測試用例覆蓋:(1)6位數字字符(2)年在2003~2008之間(3)月在1~12之間第三步:為每一個無效等價類設至少設計一個測試用例不能出現相同的測試用例1.邊界值分析法概述大量的測試實踐表明,很多錯誤是發生在輸入或輸出數據范圍的邊界上。因而針對各種邊界情況設計測試用例,有利于揭露程序中的錯誤。
如判斷三角形類型的例子中,若此3條邊能構成一個普通的三角形,必須滿足A>0、B>0、C>0、A+B>C、B+C>A、A+C>B,對于等價類A>0,其邊界是A=0,可針對此邊界設計測試用例,以驗證程序在A=0時的輸出是否正確,若A=0時程序的輸出仍為普通三角形,則說明程序中存在錯誤。2.3.3邊界值分析法邊界值分析法與等價類劃分法區別:(1)邊界值分析不是從某等價類中隨便挑一個作為代表,而是使這個等價類的每個邊界都要作為測試條件。著重測試的邊界情況(2)邊界值分析不僅考慮輸入條件,還要考慮輸出空間產生的測試情況邊界值分析法(BVA)是一種對等價類劃分法的補充。使用邊界值分析法時,應針對等于、剛好大于或剛好小于各輸入等價類和輸出等價類邊界值的情況設計測試用例。如果在懸崖峭壁邊可以自信地安全行走,平地就不在話下。
如果軟件在能力達到極限時能夠運行,那么在正常情況下就不會出什么問題。軟件邊界與懸崖很類似應用邊界值分析法設計測試用例應遵循的原則:如果輸入條件規定了值的范圍,則應該選取剛達到這個范圍的邊界值,以及剛剛超過這個范圍邊界的值。如果輸入條件規定了值的個數,則用最大個數、最小個數、比最小個數少1、比最大個數多1的數。根據規格說明的每一個輸出條件,分別使用以上兩個原則。如果程序的規格說明給出的輸入域或者輸出域是有序集合(如有序表、順序文件等),則應選取集合的第一個元素和最后一個元素。如果程序中使用了一個內部數據結構,則應當選擇這個內部數據結構的邊界值作為測試用例。分析規格說明,找出其他可能的邊界條件。邊界值分析法是對輸入的邊界值進行測試。在測試用例設計中,需要對輸入的條件進行分析并且找出其中的邊界值條件,應當選取正好等于、剛剛大于或剛剛小于邊界的值作為測試數據,而不是選取等價類中的典型值或任意值作為測試數據。2.邊界條件與次邊界條件提出邊界條件時應注意:測試臨近邊界的合法數據,以及剛超過邊界的非法數據。越界測試:對于最大值簡單地加1或很小的數對于最小值簡單地減1或很小的數在多數情況下,邊界值條件是基于應用程序的功能設計而需要考慮的因素,可以從軟件的規格說明或常識中得到,也是最終用戶通常最容易發現問題的。然而,在測試用例設計過程中,某些邊界值條件是不需要呈現給用戶的,或者說用戶是很難注意到這些問題,但這些邊界條件同時確實屬于檢驗范疇內的邊界條件,稱為內部邊界值條件或次邊界值條件。主要有下面幾種:如果軟件測試問題包含確定的邊界,那么數據類型可能是:數值字符位置數量速度地址尺寸……還要考慮數據類型的特征:第一個/最后一個最小值/最大值開始/完成空/滿最慢/最快相鄰/最遠超過/在內……位、字節、字、千、兆、吉、太ASCII和Unicode3.邊界值分析法測試用例
以三角形問題為例,要求輸入三個整數a、b、c,分別作為三角形的三條邊,取值范圍在1~100之間,判斷由三條邊構成的三角形類型為等邊三角形、等腰三角形、一般三角形(包括直角三角形)以及非三角形。如表2-9所示給出了邊界值分析測試用例。表2-9邊界值分析測試用例“報表日期”邊界值分析法測試用例2.3.4決策表法1.決策表法概述在一些數據處理問題中,某些操作是否實施依賴于多個邏輯條件的取值。在這些邏輯條件取值的組合所構成的多種情況下,分別執行不同的操作。決策表是分析和表達多個邏輯條件下執行不同操作情況的工具,能表示輸入條件的組合以及與每一輸入組合相對應的動作組合。可以把復雜邏輯關系和多種條件組合的情況表達的比較明確。決策表通常由四部分組成條件樁條件項動作樁動作項規則列出了問題的所有可能的條件,條件的先后次序無關緊要。列出了問題規定的可能采取的操作,這些操作的排列順序沒有約束。針對條件樁給出的條件列出所有的條件取值組合。有若干個條件項,每一條件項為一個條件取值組合。與條件項緊密相關,列出在條件項的各組取值情況下應該采取的動作。動作項的數目與條件項相等。一種條件取值組合和與其對應的動作組合(即判定表中貫穿條件項和動作項的一列)構成了判定表中的一個規則。條件取值組合的數目就是規則的數目。根據軟件規格說明,建立決策表的步驟如下:確定規則的個數。假如有n個條件,每個條件有兩個取值(由于每個原因可取0或1),故有2n種規則;列出所有的條件樁和動作樁;填入條件項;填入動作項,得到初始決策表;化簡。合并相似規則(相同動作)。在簡化并得到最終決策表后,只要選擇適當的輸入,使決策表每一列的輸入條件得到滿足即可生成測試用例。以下列問題為例給出構造決策表的具體過程。如果某產品銷售好并且庫存低,則增加該產品的生產;如果該產品銷售好,但庫存量不低,則繼續生產;若該產品銷售不好,但庫存量低,則繼續生產;若該產品銷售不好,且庫存量不低,則停止生產。確定規則的個數。有2個條件(銷售、庫存),故有22=4種規則。列出所有的條件樁和動作樁。填入條件項。填入動作項,得到初始決策表,如下表所示。2.決策表法的應用決策表能夠將復雜的問題按照各種可能的情況全部列舉出來,因此能夠設計出完整的測試用例集合。條件——輸入動作——輸出分析如下:確定規則的個數。三角形問題的決策表有4個條件,每個條件可以取兩個值(真值和假值),所以應該有24=16種規則。列出所有條件樁和動作樁。以三角形問題為例,要求輸入三個整數a、b、c,分別作為三角形的三條邊,取值范圍在1~100之間,判斷由三條邊構成的三角形類型為等邊三角形、等腰三角形、一般三角形(包括直角三角形)以及非三角形。填寫條件項。填寫動作項,從而得到初始決策表。簡化決策表。合并相似規則后得到三角形問題的簡化決策表。根據決簡化后的決策表,可設計如下測試用例:2.3.5因果圖法1.因果圖法等價類劃分法、邊界值分析法在對輸入條件的考慮中,并未重視輸入條件的組合和各個輸入條件之間的相互制約關系。當輸入存在若干種可能的組合時,相應能產生多個動作,因此,必須對這些組合加以考慮,測試程序在某種輸入組合的情況下能否完成規格說明書中預先規定的功能。因果圖是一種描述輸入條件的組合及每種組合對應的輸出的圖形化工具。可在因果圖的基礎上設計測試用例。它適合于檢查程序輸入條件的各種情況的組合。在因果圖中使用4種符號分別表示4種因果關系。用直線連接左右節點,其中左節點Ci表示輸入狀態(或稱原因),右節點ei表示輸出狀態(或稱結果)。Ci和ei都可取值0或1,0表示某狀態不出現,1表示某狀態出現。表示恒等。若C1是1,則e1也是1;若C1是0,則e1為0。表示非。若C1是1,則e1是0;若C1是0,則e1為1。表示或。若C1或C2或C3是1,則e1是1;若C1、C2、C3全為0,則e1為0。表示與。若C1和C2都是1,則e1是1;只要C1、C2、C3中有一個為0,則e1為0。在實際問題中,輸入狀態相互之間還可能存在某些依賴關系,我們稱之為約束。例如,某些輸入條件不可能同時出現。輸出狀態之間也往往存在約束,在因果圖中,以特定的符號標明這些約束。表示E約束(異)。a和b中最多有一個可能為1,即a和b不能同時為1。表示I約束(或)。a、b和c中至少有一個必須是1,即a、b和c不能同時為0。表示O約束(唯一)。a和b中必須有一個且僅有一個為1。表示R約束(要求)。a是1時,b必須是1,即a是1時,b不能是0。對輸出條件的約束只有M約束。M約束(強制):若結果a是1,則結果b強制為0。因果圖法最終要生成決策表。因果圖法生成測試用例的步驟:分析出等價類輸入與輸入輸入與輸出軟件規格說明書將對應的輸入與輸入之間,輸入與輸出之間的關系連接起來,并且將其中不可能的組合情況標注成約束或者限制條件,形成因果圖。將決策表的每一列作為依據,設計測試用例。2.因果圖法測試用例某軟件規格說明中包含這樣的要求:輸入的第一個字符必須是A或B,第二個字符必須是一個數字,在此情況下進行文件的修改;但如果第一個字符不正確,則給出信息L;如果第二個字符不是數字,則給出信息M。(1)分析程序的規格說明,列出原因和結果。原因:C1----第一個字符是AC2----第一個字符是BC3----第二個字符是一個數字結果:e1----給出信息L
e2----修改文件
e3----給出信息M(2)將原因和結果之間的因果關系用邏輯符號連接起來,得到因果圖。因為C1和C2不可能同時為1,即第一個字符不可能既是A又是B,在因果圖上可對其施加E約束,得到具有約束的因果圖。(3)將因果圖轉換成決策表。(4)設計測試用例。因為C1和C2不可能同時為1,所以排除決策表中同時為1的情況,可以設計出6個測試用例。黑盒測試法除此之外,還有錯誤推測法、正交試驗法、場景法、功能圖法等。錯誤推測法:根據經驗、直覺和預感來進行測試。缺省值、空白、空值、零值、無輸入條件正交試驗設計方法:從大量的試驗數據中挑選適量的、有代表性的數據,從而合理安排測試的一種試驗設計方法。它能縮減測試用例數目。場景法:運用場景來對系統的功能點或業務流程的描述,從而提高測試效果。一般包含基本流和備用流,從一個流程開始,通過描述經過的路徑來確定的過程,經過遍歷所有的基本流和備用流來完成整個場景。2.3.6各種黑盒測試方法的選擇在測試實施之前,必須確定將要采用的黑盒測試策略和方法,并以此為依據制定詳細的測試方案。確定黑盒測試方法時應該遵循以下原則:根據程序的重要性和一旦發生故障將造成的損失程度來確定測試等級和測試重點。認真選擇測試策略,以便能盡可能少地使用測試用例,發現盡可能多的程序錯誤。測試需要找到一個平衡點。黑盒測試方法的綜合使用策略:(1)首先進行等價類劃分,包括輸入條件和輸出條件的等價劃分,將無限測試變成有限測試。等價類劃分也常是邊界值方法的基礎。(2)在任何情況下都必須使用邊界值分析方法。經驗表明用這種方法設計出的測試用例發現程序錯誤的能力最強。(3)測試人員可以根據經驗用錯誤推測法追加一些測試用例。(4)如果程序的功能說明中含有輸入條件的組合情況,則可選用因果圖法和判定表法。(5)對于參數配置類的軟件,要用正交試驗法選擇較少的組合方式達到最佳效果。(6)對于業務流清晰的系統,可以利用場景法。2.1軟件測試方法概述2.2靜態測試與動態測試2.3黑盒測試2.4白盒測試2.5黑盒測試與白盒測試比較小結第2章軟件測試方法2.4白盒測試白盒測試也稱作結構測試、邏輯驅動測試、開盒測試、玻璃盒測試、基于覆蓋的測試。“白盒”將程序形象地比喻為放在一個透明的盒子里,故測試人員了解被測程序的內部結構。測試人員利用程序的內部邏輯結構和相關信息設計測試用例,對程序的內部結構和每條路徑進行測試,力求提高測試覆蓋率;檢驗內部動作是否按照規格說明書的規定正常進行。例如:一個執行20次的循環的小程序。包含的不同執行路徑數達520條,對每一條路徑進行測試需要1毫秒,假定一年工作365×24小時,要想把所有路徑測試完,需3170年。白盒方法和黑盒方法一樣,也不能做到窮舉測試。對一個具有多重選擇和循環嵌套的程序,不同的路徑數目可能是天文數字。所以,當程序中有循環時,覆蓋每條路徑是不可能的,要設計出覆蓋程度較高的或覆蓋最有代表性的路徑的測試用例。在白盒測試中,測試人員必須在仔細研究程序的內部結構的基礎上,從數量極大的可用測試用例中精心挑選盡可能少的測試用例,來覆蓋程序的內部結構。白盒測試的主要方法有邏輯覆蓋、基本路徑測試等,主要用于軟件驗證。白盒測試方法的分類:靜態測試方法代碼檢查法、靜態結構分析法、代碼質量度量法動態測試方法邏輯覆蓋法、基本路徑測試法、控制結構測試、程序插裝等主要檢查代碼和設計的一致性,代碼是否遵循標準,代碼的可讀性,代碼的邏輯正確性,代碼結構的合理性等。代碼檢查應在編譯和動態測試之前進行,并且應盡早進行。包括桌面檢查、代碼審查和走查等。主要以圖形的方式表現程序的內部結構,供測試人員分析。通過使用測試工具分析程序源代碼的系統結構、數據結構、數據接口、內部控制邏輯等內部結構,生成函數調用關系圖、模塊控制流圖、內部文件調用關系圖、子程序表、宏和函數參數表等各類圖形圖表,以清晰地表示程序的內部結構,供測試人員對其進行分析,進而查找程序中的錯誤。根據ISO/IEC9126國際標準的定義,對軟件質量的功能性、可靠性、可用性、效率、可維護性、可移植性六個方面構造軟件的靜態質量度量模型,通過量化的數據評估被測程序的質量。2.4.1邏輯覆蓋測試邏輯覆蓋是以程序內部的邏輯結構為基礎的設計測試用例的技術。要求測試者完全了解程序的結構和處理過程,按照程序內部的邏輯測試,檢驗程序中的每條通路是否都能按預定要求正確工作。常用的邏輯覆蓋測試方法有:語句覆蓋、判定覆蓋、條件覆蓋、“判定-條件”覆蓋、條件組合覆蓋及路徑覆蓋。假設有如下程序段:IF((A>1)AND(B=0))
THENX=X/AIF((A=2)OR(X>1))
THENX=X+1a、b、c、d、e是控制流程圖上的若干程序點。1.語句覆蓋:設計足夠多的測試用例,使被測程序中的每條可執行語句至少執行一次。在上述程序段中若要做到語句覆蓋,程序的執行路徑應是ace,為此可設計如下的測試用例:A=2,B=0,X=4。注意:A、B、X的值這里為輸入值,嚴格說來,測試用例還應包括預期輸出,在此省略,下同。思考:1、第一個判定的運算符“AND”錯成運算符“OR”或是第二個判定中的運算符“OR”錯成運算符“AND”,仍使用上面的測試用例,路徑是怎么樣的?2、第二個條件語句中X>1誤寫成X>0,路徑是怎么樣的?程序仍將按流程圖上的路徑ace執行,上述測試用例也不能發現錯誤!語句覆蓋是比較弱的覆蓋標準。2.判定覆蓋:設計足夠的測使用例,使程序中的每個判定至少都獲得一次“真”和“假”值,或者說使得程序中的每一個取“真”分支和取“假”分支至少經歷一次,也稱為分支覆蓋。若要實現判定覆蓋,則需覆蓋ace和abd兩條路徑,或覆蓋acd和abe兩條路徑,可設計如下兩組測試用例:A=2,B=0,X=3(覆蓋路徑ace)A=1,B=0,X=1(覆蓋路徑abd)測試用例:A=2B=0X=3A=1B=0X=1但是如果程序段中的第2個判定條件X>1如果錯寫為X<1,使用上述測試用例,照樣能按原路徑執行(abe),而不影響結果。也就是說,只達到判定覆蓋仍無法確定判斷內部條件的錯誤。注意:上述兩組測試用例不僅滿足了判定覆蓋,同時還做到了語句覆蓋。所以,若實現了判定覆蓋,則必然實現了語句覆蓋。從這一點看“判定覆蓋”比“語句覆蓋”更強一些。3.條件覆蓋:指設計若干個測試用例,使每個判定中的每個條件的可能取值至少出現一次。兩個判定中共有4個條件。條件覆蓋應使以下8種結果成立:A>1,A≤1,B=0,B≠0,A=2,A≠2,X>1,X≤1為覆蓋這8種結果,可設計如下兩組測試用例:A=2,B=0,X=4(覆蓋A>1、B=0、A=2、X>1,執行路徑ace)A=1,B=1,X=1(覆蓋A≤1、B≠0、A≠2、X≤1,執行路徑abd)兩個測試用例A=2B=0X=4和A=1B=1X=1在覆蓋了4個條件的8種情況的同時,把兩個判斷的4個分支b、c、d和e也覆蓋了。是否可以說,達到了條件覆蓋,也就必然實現了判定覆蓋呢?假定使用測試用例A=1B=0X=3和A=2B=1X=1可以看出,覆蓋了條件的測試用例不一定能覆蓋分支。事實上,它只覆蓋了4個分支中的兩個(b和e)。判定覆蓋卻只關心整個判定表達式的值。4.判定—條件覆蓋:設計足夠的測使用例,使得判定中每個條件的所有可能(真/假)至少出現一次,并且每個判定本身的判定結果(真/假)也至少出現一次。若要實現判定—條件覆蓋,可設計如下兩組測試用例:A=2,B=0,X=4(執行路徑ace)A=1,B=1,X=1(執行路徑abd)若實現了判定—條件覆蓋,則必然也實現了判定覆蓋和條件覆蓋。從表面上看上述兩組測試可以滿足覆蓋圖中的4個判斷分支和8個條件取值。但是它們正好是為了滿足條件覆蓋的測試用例,而第1組測試用例也是語句覆蓋的測試用例,若第二個判斷表達式中的條件“A=2ORX>1”錯寫成了“A=2ORX<1”,當A=2的測試為真的時候,是不可能發現這個邏輯錯誤的。原因在于含有AND和OR的邏輯表達式中,某些條件將抑制其他條件,如邏輯條件表達式AANDB,如果A為“假”,則整個表達式的值為“假”,這個表達式中另外的幾個條件就不起作用了,所以就不再檢查條件B了,這樣B中的錯誤就發現不了。5.條件組合覆蓋:設計足夠的測試用例,使得每個判定中條件的各種可能組合都至少出現一次。
在上面的例子中的每個判定包含有兩個條件,這兩個條件在判定中有8種可能的組合:1)A>1,B=0 記為T1,T22)A>1,B≠0記為T1,F23)A≤1,B=0記為F1,T24)A≤1,B≠0記為F1,F25)A=2,X>1 記為T3,T46)A=2,X≤1記為T3,F47)A≠2,X>1記為F3,T48)A≠2,X≤1記為F3,F44個測試用例,用以覆蓋8種條件組合在條件組合覆蓋中:對某被測程序,若實現了條件組合覆蓋,則一定實現了判定覆蓋、條件覆蓋及判定—條件覆蓋。但條件組合覆蓋不一定能覆蓋程序中的每條路徑。上述4組測試用例就沒有覆蓋到路徑acd。6.路徑覆蓋:設計足夠的測試用例,覆蓋被測程序中所有可能的路徑。設計以下測試用例,覆蓋四條路徑:2.4.2路徑分析測試在實際應用中,一個不太復雜的程序可能會出現多重循環嵌套,那么其路徑數可能就是一個非常大的數字,所以必須將測試的路徑數目壓縮到一定范圍內。為解決這一難題,可以采用基本路徑測試方法,它也是一種白盒測試技術。基本路徑測試是在程序的流圖基礎上,確定程序的環路復雜性,導出基本路徑的集合,進而在其基礎上設計測試用例,這些測試用例能覆蓋到程序中的每條可執行語句。2.4.2.1流圖流圖也稱為程序圖,實際上就是一個有向圖,就是把程序流程圖中每個處理符號都看作一個結點,原來聯結不同處理符號間的流程線看作連接不同結點的有向弧。它僅僅描繪程序的控制流程,完全不表現對數據的具體操作以及分支或循環的具體條件。通常稱程序圖中開始點后面的結點為入口點,稱停止點前面的結點為出口點。1.控制流圖的特點具有唯一入口節點(源節點),表示程序段的開始語句;具有唯一出口節點(匯節點),表示程序段的結束語句;結點由帶有標號的圓圈表示,表示一個或多個無分支的源程序語句。控制邊由帶箭頭的直線或弧表示,代表控制流的方向。在流圖中一條邊必須終止于一個結點。由邊和結點圍成的面積稱為區域,當計算區域數時應該包括圖外部未被圍起來的那個區域。用任何方法表示的過程設計結果,都可以翻譯成流圖。程序流程圖中的一個順序的處理框序列和一個菱形判定框,可以映射成流圖中的一個結點。當過程設計中包含復合條件時,即條件中包含了一個或多個布爾運算符(OR,AND,NOR),生成流圖的方法稍微復雜一些。應該把復合條件分解為若干個簡單條件,每個簡單條件對應流圖中一個結點。包含條件的結點稱為判定節點,從每個判定結點引出兩條或多條邊。2.程序環路復雜性
程序的環路復雜性又稱為圈復雜性,是一種描述程序邏輯復雜度的標準。在進行基本路徑測試時,確定了程序的環路復雜性,則可在其基礎上確定程序基本路徑集合的獨立路徑數目,這個數目是確保程序中每條可執行語句至少執行一次的測試用例數目的最小值。可用下述3種方法中的任何一種來計算環形復雜度。(1)流圖中的區域數等于環形復雜度。(2)流圖G的環形復雜度:V(G)=E–N+2,
其中,E是流圖中邊的條數,N是結點數。(3)流圖G的環形復雜度:V(G)=P+1,
其中,P是流圖中判定結點的數目例如要對軟件測試課程成績進行統計。連續輸入學生成績,最后以負分結束。規定成績在60分以下的為不及格、60分以上為及格、80分以上為優秀。該程序統計并輸出不及格、及格、優秀的人數及總人數。算出該程序的環路復雜度。開始S,S1,S2,S30輸入XX≥0?X≥60?X≥80?S1=S1+1S2=S2+1S3=S3+1S=S+1輸出S,S1,S2,S3結束sabc1defghc2c3FFFTTT(a)程序流程圖sabc1c2edc3fghend1234567891011121314R1R2R3入口點出口點(b)程序圖弧數m=14,結點數n=12,則有V(G)=m-n+2=14-12+2=4程序圖中的區域數為4,所以V(G)=4。判定結點的數目P是3,則V(G)=P+1=3+1=4。2.4.2.2獨立路徑測試對于一個較為復雜的程序要做到完全的路徑覆蓋測試是不可能實現的。獨立路徑測試就是對所有獨立路徑進行測試,也就是說檢驗了程序的每一條語句,從而達到語句覆蓋。獨立路徑是一條含有以前未處理的語句或判斷的路徑。在流圖中,獨立路徑表現為至少含有一條其他獨立路徑中均沒有的邊的路徑。使用獨立路徑測試的步驟:(1)根據程序代碼或程序流程圖,畫出相應的程序圖。(2)計算程序圖的環路復雜度。(3)確定只包含獨立路徑的基本路徑集。⑷設計測試用例,保證基本路徑集合中每條路徑的執行。環路復雜度V(G)為4。因此對應的一組獨立路徑是:路徑1:S—a—b—c1—d—end路徑2:S—a—b—c1—c2—e—h—b—c1—d—end路徑3:S—a—b—c1—c2—c3—f—h—b—c1—d—end路徑4:S—a—b—c1—c2—c3—g—h—b—c1—d—end開始S,S1,S2,S30輸入XX≥0?X≥60?X≥80?S1=S1+1S2=S2+1S3=S3+1S=S+1輸出S,S1,S2,S3結束sabc1defghc2c3FFFTTT(a)程序流程圖sabc1c2edc3fghend1234567891011121314R1R2R3入口點出口點(b)程序圖下面通過一個C語言程序實例來具體說明獨立路徑測試的設計流程。1 main()2 {3 intnum1=0,num2=0,score=100;4 inti;5 charstr;6 scanf(“%d,%c\n”,&i,&str);7 while(i<5)8 {9 if(str=’T’)10 num1++;11 elseif(str=’F’)12 {13 score=score-10;14 num2++;15 }16 i++;17 }printf(“num1=%d,num2=%d,score=%d\n”,num1,num2,score);19 }1.導出程序控制流圖2.求出程序環形復雜度公式1:V(G)=10-8+2=4公式2:V(G)=3+1=4公式3:V(G)=4因此,控制流圖G的環形復雜度是4。就是說至少需要4條獨立路徑組成基本路徑集合,并由此得到能夠覆蓋所有程序語句的測試用例。3.設計測試用例根據上面環形復雜度的計算結果,源程序的基本路徑集合中有4條獨立路徑:path1:7->18path2:7->9->10->16->7->18path3:7->9->11->15->16->7->18path4:7->9->11->13->14->15->16->7->18根據上述4條獨立路徑,設計了測試用例。測試用例中的4個測試用例作為程序輸入數據,能夠遍歷這4條獨立路徑。對于源程序中的循環體,測試用例中的輸入數據使其執行零次或一次。注意:環路復雜度V(G)可導出程序基本集合中的獨立路徑條數,從該基本集合導出的測試用例可以保證程序中的每條語句至少執行一次,而且每個條件在執行時都將分別取真、假兩種值。這是確保程序中每個執行語句至少執行一次所必需的測試用例數目的上界。一條新的路徑必須包含一條新邊,V(G)是構
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025公司租車合同協議范本
- 逾期賠償協議書
- 聘請教官協議書
- 空調促銷協議書
- 草原解除協議書
- 股權兌換協議書
- 聯合租賃協議書
- 股份明確協議書
- 籃球球員協議書
- 約定變更協議書
- 商務談判經典案例全案(56個案例)
- 《環境影響評價》全套教學課件
- 《公路橋涵施工技術規范》JTG-T3650-2020培訓
- 2024年天津市單位職工勞動合同(三篇)
- 2024秋期國家開放大學??啤兑簤号c氣壓傳動》一平臺在線形考(形考任務+實驗報告)試題及答案
- 膽石癥病人的護理
- 四川省成都市2024年小升初英語試卷(含答案)
- 建筑施工安全生產標準化指導圖冊
- 渠道襯砌施工方案(渠道預制混凝土塊)
- 2024年新課標高考政治真題試卷含答案
- 02S515排水檢查井圖集
評論
0/150
提交評論