第3天 軟件測試方法_第1頁
第3天 軟件測試方法_第2頁
第3天 軟件測試方法_第3頁
第3天 軟件測試方法_第4頁
第3天 軟件測試方法_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟測基礎(chǔ)理論軟件測試方法內(nèi)容復習軟件的定義軟件測試的定義軟件的生命周期軟件測試的生命周期一條缺陷報告包括哪些主要內(nèi)容一條用例包括哪些主要內(nèi)容測試計劃包括哪些內(nèi)容V模型缺陷的管理流程軟件測試的相關(guān)原則軟件測試的分類軟件測試可按照不同的角度,有不同的分類方法。按照開發(fā)階段劃分——單元測試、集成測試、確認測試、系統(tǒng)測試和驗收測試。按照測試實施組織劃分——開發(fā)方測試、用戶測試和第三方測試。按照測試技術(shù)劃分——白盒測試、黑盒測試和灰盒測試。按照測試方式劃分——靜態(tài)測試和動態(tài)測試、手工測試、自動測試。按照測試目的劃分——功能測試、健壯性測試、性能測試、壓力測試、用戶界面測試、可靠性測試、安全性測試、文檔測試、恢復測試、兼容性測試等、冒煙測試、回歸測試、安裝測試。2.1軟件測試方法概述2.2靜態(tài)測試與動態(tài)測試2.3黑盒測試2.4白盒測試2.5黑盒測試與白盒測試比較小結(jié)第2章軟件測試方法軟件測試的策略和方法靜態(tài)測試方法動態(tài)測試方法人工測試方法計算機輔助靜態(tài)分析方法白盒測試方法黑盒測試方法2.1軟件測試方法概述1.從是否需要執(zhí)行被測軟件的角度分類靜態(tài)測試——通過對被測程序的靜態(tài)審查,發(fā)現(xiàn)代碼中潛在的錯誤。它一般用人工方式脫機完成,故亦稱人工測試或代碼評審(CodeReview);也可借助于靜態(tài)分析器在機器上以自動方式進行檢查,但不要求程序本身在機器上運行。動態(tài)測試——使用和運行被測軟件,通常意義上的測試。動態(tài)測試的對象必須是能夠由計算機真正運行的被測試的程序,它包含黑盒測試和白盒測試。

2.從軟件測試用例設(shè)計方法的角度分類黑盒測試——從用戶角度出發(fā)的測試,又稱為功能測試、數(shù)據(jù)驅(qū)動測試和基于規(guī)格說明的測試。

把被測試程序當作一個黑盒,忽略程序內(nèi)部的結(jié)構(gòu)的特性,測試者在只知道該程序輸入和輸出之間的關(guān)系或程序功能的情況下,依靠能夠反映這一關(guān)系和程序功能需求規(guī)格的說明書,來確定測試用例和推斷測試結(jié)果的正確性。白盒測試——基于產(chǎn)品的內(nèi)部結(jié)構(gòu)來進行測試,又稱為結(jié)構(gòu)測試,邏輯驅(qū)動測試或基于程序的測試。主要檢查內(nèi)部操作是否按規(guī)定執(zhí)行,軟件各個部分功能是否得到充分利用,即根據(jù)被測程序的內(nèi)部結(jié)構(gòu)設(shè)計測試用例,測試者需要預(yù)先了解被測試程序的結(jié)構(gòu)。3.從軟件測試的策略和過程的角度分類。單元測試——針對每個單元的測試,它確保每個模塊能正常工作,主要采用白盒測試方法,用以發(fā)現(xiàn)內(nèi)部錯誤。集成測試——對已測試過的模塊進行組裝后的測試,主要檢驗與軟件設(shè)計相關(guān)的程序結(jié)構(gòu)問題。主要采用黑盒測試和白盒測試兩種方法,來驗證多個單元模塊集成到一起后是否能夠協(xié)調(diào)工作。確認測試——檢驗所開發(fā)的軟件能否滿足所有功能和性能需求的最后手段,通常采用黑盒測試方法。系統(tǒng)測試——是檢測被測軟件與系統(tǒng)的其他部分的協(xié)調(diào)性,通常采用黑盒測試方法。驗收測試——是軟件產(chǎn)品質(zhì)量的最后一關(guān),主要從用戶的角度著手,其參與者主要是用戶和少量的程序開發(fā)人員,通常采用黑盒測試方法。2.1軟件測試方法概述2.2靜態(tài)測試與動態(tài)測試2.3黑盒測試2.4白盒測試2.5黑盒測試與白盒測試比較小結(jié)第2章軟件測試方法根據(jù)程序是否運行而分。2.2靜態(tài)測試與動態(tài)測試靜態(tài)方法的主要特征是對軟件進行分析、檢查和審閱,不實際運行被測試的軟件。因此,靜態(tài)方法常稱為“分析”,靜態(tài)分析是對被測程序進行特性分析的一些方法的總稱。所謂靜態(tài)分析,就是不需要執(zhí)行所測試的程序,而只是通過掃描程序正文,對程序的數(shù)據(jù)流和控制流等信息進行分析,找出系統(tǒng)的缺陷,得出測試報告。通過靜態(tài)測試,可找出30~70%的邏輯設(shè)計錯誤。2.2.1靜態(tài)測試靜態(tài)測試包括:代碼檢查靜態(tài)結(jié)構(gòu)分析代碼質(zhì)量度量它可以由人工進行,充分發(fā)揮人的邏輯思維優(yōu)勢,也可以借助軟件工具自動進行。靜態(tài)測試的內(nèi)容:軟件配置(需求規(guī)格說明書、軟件設(shè)計說明書、源程序等)做檢查和審閱,包括:是否符合標準和規(guī)范;通過結(jié)構(gòu)分析、流圖分析、符號執(zhí)行指出軟件缺陷;

動態(tài)方法是通過運行軟件來檢驗軟件的動態(tài)行為和運行結(jié)果的正確性。

動態(tài)測試是真正運行被測程序,在執(zhí)行過程中,通過輸入有效的測試用例,對其輸入與輸出的對應(yīng)關(guān)系進行分析,以達到檢測的目的。兩個基本要素:被測試程序、測試數(shù)據(jù)(測試用例)2.2.2動態(tài)測試動態(tài)測試方法的基本步驟:選取定義域的有效值,或選取定義域外的無效值;對已選取值決定預(yù)期的結(jié)果;用選取值執(zhí)行程序;執(zhí)行結(jié)果與預(yù)期的結(jié)果相比,不吻合則說明程序有錯。不同的測試方法各自的目標和側(cè)重點不一樣,在實際工作中要將靜態(tài)測試和動態(tài)測試結(jié)合起來,以達到更加完美的效果。在動態(tài)測試中,又可有基于程序結(jié)構(gòu)的白盒測試(或稱為覆蓋測試)和基于功能的黑盒測試。2.1軟件測試方法概述2.2靜態(tài)測試與動態(tài)測試2.3黑盒測試2.4白盒測試2.5黑盒測試與白盒測試比較小結(jié)第2章軟件測試方法黑盒測試(Black-boxTesting)又稱為功能測試、數(shù)據(jù)驅(qū)動測試和基于規(guī)格說明的測試。2.3.1黑盒測試方法概述2.3黑盒測試方法軟件輸入輸出“黑盒”可理解為程序或軟件裝在一個漆黑的盒子里,故盒子內(nèi)的程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性對測試人員是不可見的,只明確要做到什么。測試人員根據(jù)軟件的需求規(guī)格說明書設(shè)計測試用例,依靠被測程序輸入和輸出之間的關(guān)系或程序的功能設(shè)計,對程序功能和程序接口進行測試。黑盒測試是從用戶角度出發(fā)進行的測試。很明顯,如果外部特性本身有問題或規(guī)格說明書的規(guī)定有誤,用黑盒測試方法是發(fā)現(xiàn)不了的。黑盒測試主要是為了發(fā)現(xiàn)以下錯誤:是否有不正確或遺漏了的功能;在接口上,輸入能否正確地接受,能否輸出正確的結(jié)果;是否有數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息(例如數(shù)據(jù)文件)訪問錯誤;性能上是否能夠滿足要求;是否有初始化或終止性錯誤。黑盒測試的優(yōu)點:黑盒測試不考慮軟件的具體實現(xiàn)過程,當在軟件實現(xiàn)的過程發(fā)生變化時,測試用例仍然可以使用;黑盒測試用例的設(shè)計可以和軟件實現(xiàn)同時進行,這樣能夠壓縮總的開發(fā)時間,從而加快了軟件測試與開發(fā)的速度。黑盒測試不僅能夠找到大多數(shù)其他測試方法無法發(fā)現(xiàn)的錯誤,而且一些外購軟件、參數(shù)化軟件包以及某些自動生成的軟件,由于無法得到源程序,在一些情況下只能選擇黑盒測試。黑盒測試的局限性:從程序的界面上進行測試,有時難以查找出錯誤的具體原因和位置;無法發(fā)現(xiàn)需求規(guī)格說明本身存在的問題。典型的黑盒測試方法包括主要包括等價類劃分法、邊界值分析法、錯誤推測法、因果圖法、決策表表法、正交試驗法、場景法等。這些方法是比較實用的,在項目中采用什么方法,在設(shè)計具體的測試方案時自然要針對開發(fā)項目的特點對設(shè)計方法進行適當?shù)倪x擇。1.等價類劃分法概述

等價類劃分法是把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分(子集),然后從每一個子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測試用例。2.3.2等價類劃分法等價類是被測程序輸入域的一個子集合,該輸入集合中的數(shù)據(jù)對于揭露程序中的錯誤是都是等效的,它們具有等價特性,所有等價類的并集就是整個輸入域。對某等價類中的代表值的測試就相當于對等價類中所有值的測試。如果某一類中的一個例子發(fā)現(xiàn)了錯誤,這一等價類中的其他例子也能發(fā)現(xiàn)同樣的錯誤;如果某一類中的一個例子沒有發(fā)現(xiàn)錯誤,則這一類中的其他例子也不會查出錯誤。使用等價類劃分法時,應(yīng)仔細分析需求規(guī)格說明書來劃分等價類。軟件不能只接收合理有效的數(shù)據(jù),也要具有處理異常數(shù)據(jù)的功能,因此,等價類又分為有效等價類和無效等價類。有效等價類是指該等價類中的輸入數(shù)據(jù)是符合需求規(guī)格說明的。利用有效等價類可以檢驗程序是否滿足規(guī)格說明所規(guī)定的功能和性能。無效等價類是指該等價類中的數(shù)據(jù)是違反需求規(guī)格說明的。利用無效等價類可以檢驗程序異常情況的處理。有效等價類和無效等價類都是使用等價類法時所必需的。使用等價類劃分法設(shè)計測試用例步驟:首先必須在分析需求規(guī)格說明的基礎(chǔ)上劃分等價類;然后建立等價類表,列出所有劃分出的等價類;再根據(jù)已列出的等價類表,按以下步驟確定測試用例:為每一個等價類規(guī)定一個唯一的編號;設(shè)計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價類,重復這個過程,直至所有的有效等價類均被測試用例所覆蓋;設(shè)計一個新的測試用例,使其僅覆蓋一個無效等價類,重復這個過程,直至所有的無效等價類均被測試用例所覆蓋。劃分等價類的規(guī)則:

(1)如果輸入條件規(guī)定了取值范圍,可定義一個有效等價類和兩個無效等價類。例如,

輸入值是學生成績,范圍是0~1000100

有效等價類0≤成績≤100無效等價類成績>100無效等價類

成績<0(2)如果輸入條件代表集合的某個元素,則可定義一個有效等價類和一個無效等價類。例如,程序要進行平方根函數(shù)的運算,則“≥0”的數(shù)為有效等價類,“<0”的數(shù)為無效等價類。(3)如規(guī)定了輸入數(shù)據(jù)的一組值,且程序?qū)Σ煌斎胫底霾煌幚?,則每個允許的輸入值是一個有效等價類,并有一個無效等價類(所有不允許的輸入值的集合)。例如,說明學歷輸入條件可為:專科、本科、碩士、博士四種之一,則分別取這四個值作為四個有效等價類,把四種學歷之外的任何學歷作為無效等價類。以三角形問題為例,輸入條件是:三個數(shù),分別作為三角形的三條邊都是整數(shù)取值范圍在1~100之間認真分析上述的輸入條件,可以得出相關(guān)的等價類表(包括有效等價類和無效等價類),如下表所示。2.常見等價類劃分形式(1)標準等價類測試標準等價類測試不考慮無效數(shù)據(jù)值,測試用例使用每個等價類中的一個值。通常,標準等價類測試用例的數(shù)量和最大等價類中元素的數(shù)目相等。(2)健壯等價類測試健壯等價類測試主要考慮了無效等價類。對有效輸入,測試用例從每個有效等價類中取一個值;對無效輸入,一個測試用例有一個無效值,其他值均取有效值。健壯等價類測試存在兩個問題:需要花費精力定義無效測試用例的期望輸出;對強類型的語言沒有必要考慮無效的輸入

。(3)對等區(qū)間劃分它將被測對象的輸入/輸出劃分成一些區(qū)間,被測軟件對一個特定區(qū)間的任何值都是等價的。形成測試區(qū)間的數(shù)據(jù)不只是函數(shù)/過程的參數(shù),也可以是程序可以訪問的全局變量、系統(tǒng)資源等,這些變量或資源可以是以時間形式存在的數(shù)據(jù),或以狀態(tài)形式存在的輸入/輸出序列。對等區(qū)間劃分假定位于單個區(qū)間的所有值對測試都是對等的,應(yīng)為每個區(qū)間的一個值設(shè)計一個測試用例?!纠磕硤蟊硖幚硐到y(tǒng)要求用戶輸入處理報表的日期,日期限制在2003年1月至2008年12月,即系統(tǒng)只能對該段期間內(nèi)的報表進行處理,如日期不在此范圍內(nèi),則顯示輸入錯誤信息。系統(tǒng)日期規(guī)定由年、月的6位數(shù)字字符組成,前四位代表年,后兩位代表月。如何用等價類劃分法設(shè)計測試用例,來測試程序的日期檢查功能?第一步:等價類劃分“報表日期”輸入條件的等價類表第二步:為有效等價類設(shè)計測試用例對表中編號為1,2,3的3個有效等價類用一個測試用例覆蓋:(1)6位數(shù)字字符(2)年在2003~2008之間(3)月在1~12之間第三步:為每一個無效等價類設(shè)至少設(shè)計一個測試用例不能出現(xiàn)相同的測試用例1.邊界值分析法概述大量的測試實踐表明,很多錯誤是發(fā)生在輸入或輸出數(shù)據(jù)范圍的邊界上。因而針對各種邊界情況設(shè)計測試用例,有利于揭露程序中的錯誤。

如判斷三角形類型的例子中,若此3條邊能構(gòu)成一個普通的三角形,必須滿足A>0、B>0、C>0、A+B>C、B+C>A、A+C>B,對于等價類A>0,其邊界是A=0,可針對此邊界設(shè)計測試用例,以驗證程序在A=0時的輸出是否正確,若A=0時程序的輸出仍為普通三角形,則說明程序中存在錯誤。2.3.3邊界值分析法邊界值分析法與等價類劃分法區(qū)別:(1)邊界值分析不是從某等價類中隨便挑一個作為代表,而是使這個等價類的每個邊界都要作為測試條件。著重測試的邊界情況(2)邊界值分析不僅考慮輸入條件,還要考慮輸出空間產(chǎn)生的測試情況邊界值分析法(BVA)是一種對等價類劃分法的補充。使用邊界值分析法時,應(yīng)針對等于、剛好大于或剛好小于各輸入等價類和輸出等價類邊界值的情況設(shè)計測試用例。如果在懸崖峭壁邊可以自信地安全行走,平地就不在話下。

如果軟件在能力達到極限時能夠運行,那么在正常情況下就不會出什么問題。軟件邊界與懸崖很類似應(yīng)用邊界值分析法設(shè)計測試用例應(yīng)遵循的原則:如果輸入條件規(guī)定了值的范圍,則應(yīng)該選取剛達到這個范圍的邊界值,以及剛剛超過這個范圍邊界的值。如果輸入條件規(guī)定了值的個數(shù),則用最大個數(shù)、最小個數(shù)、比最小個數(shù)少1、比最大個數(shù)多1的數(shù)。根據(jù)規(guī)格說明的每一個輸出條件,分別使用以上兩個原則。如果程序的規(guī)格說明給出的輸入域或者輸出域是有序集合(如有序表、順序文件等),則應(yīng)選取集合的第一個元素和最后一個元素。如果程序中使用了一個內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當選擇這個內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界值作為測試用例。分析規(guī)格說明,找出其他可能的邊界條件。邊界值分析法是對輸入的邊界值進行測試。在測試用例設(shè)計中,需要對輸入的條件進行分析并且找出其中的邊界值條件,應(yīng)當選取正好等于、剛剛大于或剛剛小于邊界的值作為測試數(shù)據(jù),而不是選取等價類中的典型值或任意值作為測試數(shù)據(jù)。2.邊界條件與次邊界條件提出邊界條件時應(yīng)注意:測試臨近邊界的合法數(shù)據(jù),以及剛超過邊界的非法數(shù)據(jù)。越界測試:對于最大值簡單地加1或很小的數(shù)對于最小值簡單地減1或很小的數(shù)在多數(shù)情況下,邊界值條件是基于應(yīng)用程序的功能設(shè)計而需要考慮的因素,可以從軟件的規(guī)格說明或常識中得到,也是最終用戶通常最容易發(fā)現(xiàn)問題的。然而,在測試用例設(shè)計過程中,某些邊界值條件是不需要呈現(xiàn)給用戶的,或者說用戶是很難注意到這些問題,但這些邊界條件同時確實屬于檢驗范疇內(nèi)的邊界條件,稱為內(nèi)部邊界值條件或次邊界值條件。主要有下面幾種:如果軟件測試問題包含確定的邊界,那么數(shù)據(jù)類型可能是:數(shù)值字符位置數(shù)量速度地址尺寸……還要考慮數(shù)據(jù)類型的特征:第一個/最后一個最小值/最大值開始/完成空/滿最慢/最快相鄰/最遠超過/在內(nèi)……位、字節(jié)、字、千、兆、吉、太ASCII和Unicode3.邊界值分析法測試用例

以三角形問題為例,要求輸入三個整數(shù)a、b、c,分別作為三角形的三條邊,取值范圍在1~100之間,判斷由三條邊構(gòu)成的三角形類型為等邊三角形、等腰三角形、一般三角形(包括直角三角形)以及非三角形。如表2-9所示給出了邊界值分析測試用例。表2-9邊界值分析測試用例“報表日期”邊界值分析法測試用例2.3.4決策表法1.決策表法概述在一些數(shù)據(jù)處理問題中,某些操作是否實施依賴于多個邏輯條件的取值。在這些邏輯條件取值的組合所構(gòu)成的多種情況下,分別執(zhí)行不同的操作。決策表是分析和表達多個邏輯條件下執(zhí)行不同操作情況的工具,能表示輸入條件的組合以及與每一輸入組合相對應(yīng)的動作組合??梢园褟碗s邏輯關(guān)系和多種條件組合的情況表達的比較明確。決策表通常由四部分組成條件樁條件項動作樁動作項規(guī)則列出了問題的所有可能的條件,條件的先后次序無關(guān)緊要。列出了問題規(guī)定的可能采取的操作,這些操作的排列順序沒有約束。針對條件樁給出的條件列出所有的條件取值組合。有若干個條件項,每一條件項為一個條件取值組合。與條件項緊密相關(guān),列出在條件項的各組取值情況下應(yīng)該采取的動作。動作項的數(shù)目與條件項相等。一種條件取值組合和與其對應(yīng)的動作組合(即判定表中貫穿條件項和動作項的一列)構(gòu)成了判定表中的一個規(guī)則。條件取值組合的數(shù)目就是規(guī)則的數(shù)目。根據(jù)軟件規(guī)格說明,建立決策表的步驟如下:確定規(guī)則的個數(shù)。假如有n個條件,每個條件有兩個取值(由于每個原因可取0或1),故有2n種規(guī)則;列出所有的條件樁和動作樁;填入條件項;填入動作項,得到初始決策表;化簡。合并相似規(guī)則(相同動作)。在簡化并得到最終決策表后,只要選擇適當?shù)妮斎耄箾Q策表每一列的輸入條件得到滿足即可生成測試用例。以下列問題為例給出構(gòu)造決策表的具體過程。如果某產(chǎn)品銷售好并且?guī)齑娴停瑒t增加該產(chǎn)品的生產(chǎn);如果該產(chǎn)品銷售好,但庫存量不低,則繼續(xù)生產(chǎn);若該產(chǎn)品銷售不好,但庫存量低,則繼續(xù)生產(chǎn);若該產(chǎn)品銷售不好,且?guī)齑媪坎坏?,則停止生產(chǎn)。確定規(guī)則的個數(shù)。有2個條件(銷售、庫存),故有22=4種規(guī)則。列出所有的條件樁和動作樁。填入條件項。填入動作項,得到初始決策表,如下表所示。2.決策表法的應(yīng)用決策表能夠?qū)碗s的問題按照各種可能的情況全部列舉出來,因此能夠設(shè)計出完整的測試用例集合。條件——輸入動作——輸出分析如下:確定規(guī)則的個數(shù)。三角形問題的決策表有4個條件,每個條件可以取兩個值(真值和假值),所以應(yīng)該有24=16種規(guī)則。列出所有條件樁和動作樁。以三角形問題為例,要求輸入三個整數(shù)a、b、c,分別作為三角形的三條邊,取值范圍在1~100之間,判斷由三條邊構(gòu)成的三角形類型為等邊三角形、等腰三角形、一般三角形(包括直角三角形)以及非三角形。填寫條件項。填寫動作項,從而得到初始決策表。簡化決策表。合并相似規(guī)則后得到三角形問題的簡化決策表。根據(jù)決簡化后的決策表,可設(shè)計如下測試用例:2.3.5因果圖法1.因果圖法等價類劃分法、邊界值分析法在對輸入條件的考慮中,并未重視輸入條件的組合和各個輸入條件之間的相互制約關(guān)系。當輸入存在若干種可能的組合時,相應(yīng)能產(chǎn)生多個動作,因此,必須對這些組合加以考慮,測試程序在某種輸入組合的情況下能否完成規(guī)格說明書中預(yù)先規(guī)定的功能。因果圖是一種描述輸入條件的組合及每種組合對應(yīng)的輸出的圖形化工具??稍谝蚬麍D的基礎(chǔ)上設(shè)計測試用例。它適合于檢查程序輸入條件的各種情況的組合。在因果圖中使用4種符號分別表示4種因果關(guān)系。用直線連接左右節(jié)點,其中左節(jié)點Ci表示輸入狀態(tài)(或稱原因),右節(jié)點ei表示輸出狀態(tài)(或稱結(jié)果)。Ci和ei都可取值0或1,0表示某狀態(tài)不出現(xiàn),1表示某狀態(tài)出現(xiàn)。表示恒等。若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。在實際問題中,輸入狀態(tài)相互之間還可能存在某些依賴關(guān)系,我們稱之為約束。例如,某些輸入條件不可能同時出現(xiàn)。輸出狀態(tài)之間也往往存在約束,在因果圖中,以特定的符號標明這些約束。表示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約束(強制):若結(jié)果a是1,則結(jié)果b強制為0。因果圖法最終要生成決策表。因果圖法生成測試用例的步驟:分析出等價類輸入與輸入輸入與輸出軟件規(guī)格說明書將對應(yīng)的輸入與輸入之間,輸入與輸出之間的關(guān)系連接起來,并且將其中不可能的組合情況標注成約束或者限制條件,形成因果圖。將決策表的每一列作為依據(jù),設(shè)計測試用例。2.因果圖法測試用例某軟件規(guī)格說明中包含這樣的要求:輸入的第一個字符必須是A或B,第二個字符必須是一個數(shù)字,在此情況下進行文件的修改;但如果第一個字符不正確,則給出信息L;如果第二個字符不是數(shù)字,則給出信息M。(1)分析程序的規(guī)格說明,列出原因和結(jié)果。原因:C1----第一個字符是AC2----第一個字符是BC3----第二個字符是一個數(shù)字結(jié)果:e1----給出信息L

e2----修改文件

e3----給出信息M(2)將原因和結(jié)果之間的因果關(guān)系用邏輯符號連接起來,得到因果圖。因為C1和C2不可能同時為1,即第一個字符不可能既是A又是B,在因果圖上可對其施加E約束,得到具有約束的因果圖。(3)將因果圖轉(zhuǎn)換成決策表。(4)設(shè)計測試用例。因為C1和C2不可能同時為1,所以排除決策表中同時為1的情況,可以設(shè)計出6個測試用例。黑盒測試法除此之外,還有錯誤推測法、正交試驗法、場景法、功能圖法等。錯誤推測法:根據(jù)經(jīng)驗、直覺和預(yù)感來進行測試。缺省值、空白、空值、零值、無輸入條件正交試驗設(shè)計方法:從大量的試驗數(shù)據(jù)中挑選適量的、有代表性的數(shù)據(jù),從而合理安排測試的一種試驗設(shè)計方法。它能縮減測試用例數(shù)目。場景法:運用場景來對系統(tǒng)的功能點或業(yè)務(wù)流程的描述,從而提高測試效果。一般包含基本流和備用流,從一個流程開始,通過描述經(jīng)過的路徑來確定的過程,經(jīng)過遍歷所有的基本流和備用流來完成整個場景。2.3.6各種黑盒測試方法的選擇在測試實施之前,必須確定將要采用的黑盒測試策略和方法,并以此為依據(jù)制定詳細的測試方案。確定黑盒測試方法時應(yīng)該遵循以下原則:根據(jù)程序的重要性和一旦發(fā)生故障將造成的損失程度來確定測試等級和測試重點。認真選擇測試策略,以便能盡可能少地使用測試用例,發(fā)現(xiàn)盡可能多的程序錯誤。測試需要找到一個平衡點。黑盒測試方法的綜合使用策略:(1)首先進行等價類劃分,包括輸入條件和輸出條件的等價劃分,將無限測試變成有限測試。等價類劃分也常是邊界值方法的基礎(chǔ)。(2)在任何情況下都必須使用邊界值分析方法。經(jīng)驗表明用這種方法設(shè)計出的測試用例發(fā)現(xiàn)程序錯誤的能力最強。(3)測試人員可以根據(jù)經(jīng)驗用錯誤推測法追加一些測試用例。(4)如果程序的功能說明中含有輸入條件的組合情況,則可選用因果圖法和判定表法。(5)對于參數(shù)配置類的軟件,要用正交試驗法選擇較少的組合方式達到最佳效果。(6)對于業(yè)務(wù)流清晰的系統(tǒng),可以利用場景法。2.1軟件測試方法概述2.2靜態(tài)測試與動態(tài)測試2.3黑盒測試2.4白盒測試2.5黑盒測試與白盒測試比較小結(jié)第2章軟件測試方法2.4白盒測試白盒測試也稱作結(jié)構(gòu)測試、邏輯驅(qū)動測試、開盒測試、玻璃盒測試、基于覆蓋的測試?!鞍缀小睂⒊绦蛐蜗蟮乇扔鳛榉旁谝粋€透明的盒子里,故測試人員了解被測程序的內(nèi)部結(jié)構(gòu)。測試人員利用程序的內(nèi)部邏輯結(jié)構(gòu)和相關(guān)信息設(shè)計測試用例,對程序的內(nèi)部結(jié)構(gòu)和每條路徑進行測試,力求提高測試覆蓋率;檢驗內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進行。例如:一個執(zhí)行20次的循環(huán)的小程序。包含的不同執(zhí)行路徑數(shù)達520條,對每一條路徑進行測試需要1毫秒,假定一年工作365×24小時,要想把所有路徑測試完,需3170年。白盒方法和黑盒方法一樣,也不能做到窮舉測試。對一個具有多重選擇和循環(huán)嵌套的程序,不同的路徑數(shù)目可能是天文數(shù)字。所以,當程序中有循環(huán)時,覆蓋每條路徑是不可能的,要設(shè)計出覆蓋程度較高的或覆蓋最有代表性的路徑的測試用例。在白盒測試中,測試人員必須在仔細研究程序的內(nèi)部結(jié)構(gòu)的基礎(chǔ)上,從數(shù)量極大的可用測試用例中精心挑選盡可能少的測試用例,來覆蓋程序的內(nèi)部結(jié)構(gòu)。白盒測試的主要方法有邏輯覆蓋、基本路徑測試等,主要用于軟件驗證。白盒測試方法的分類:靜態(tài)測試方法代碼檢查法、靜態(tài)結(jié)構(gòu)分析法、代碼質(zhì)量度量法動態(tài)測試方法邏輯覆蓋法、基本路徑測試法、控制結(jié)構(gòu)測試、程序插裝等主要檢查代碼和設(shè)計的一致性,代碼是否遵循標準,代碼的可讀性,代碼的邏輯正確性,代碼結(jié)構(gòu)的合理性等。代碼檢查應(yīng)在編譯和動態(tài)測試之前進行,并且應(yīng)盡早進行。包括桌面檢查、代碼審查和走查等。主要以圖形的方式表現(xiàn)程序的內(nèi)部結(jié)構(gòu),供測試人員分析。通過使用測試工具分析程序源代碼的系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)接口、內(nèi)部控制邏輯等內(nèi)部結(jié)構(gòu),生成函數(shù)調(diào)用關(guān)系圖、模塊控制流圖、內(nèi)部文件調(diào)用關(guān)系圖、子程序表、宏和函數(shù)參數(shù)表等各類圖形圖表,以清晰地表示程序的內(nèi)部結(jié)構(gòu),供測試人員對其進行分析,進而查找程序中的錯誤。根據(jù)ISO/IEC9126國際標準的定義,對軟件質(zhì)量的功能性、可靠性、可用性、效率、可維護性、可移植性六個方面構(gòu)造軟件的靜態(tài)質(zhì)量度量模型,通過量化的數(shù)據(jù)評估被測程序的質(zhì)量。2.4.1邏輯覆蓋測試邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計測試用例的技術(shù)。要求測試者完全了解程序的結(jié)構(gòu)和處理過程,按照程序內(nèi)部的邏輯測試,檢驗程序中的每條通路是否都能按預(yù)定要求正確工作。常用的邏輯覆蓋測試方法有:語句覆蓋、判定覆蓋、條件覆蓋、“判定-條件”覆蓋、條件組合覆蓋及路徑覆蓋。假設(shè)有如下程序段:IF((A>1)AND(B=0))

THENX=X/AIF((A=2)OR(X>1))

THENX=X+1a、b、c、d、e是控制流程圖上的若干程序點。1.語句覆蓋:設(shè)計足夠多的測試用例,使被測程序中的每條可執(zhí)行語句至少執(zhí)行一次。在上述程序段中若要做到語句覆蓋,程序的執(zhí)行路徑應(yīng)是ace,為此可設(shè)計如下的測試用例:A=2,B=0,X=4。注意:A、B、X的值這里為輸入值,嚴格說來,測試用例還應(yīng)包括預(yù)期輸出,在此省略,下同。思考:1、第一個判定的運算符“AND”錯成運算符“OR”或是第二個判定中的運算符“OR”錯成運算符“AND”,仍使用上面的測試用例,路徑是怎么樣的?2、第二個條件語句中X>1誤寫成X>0,路徑是怎么樣的?程序仍將按流程圖上的路徑ace執(zhí)行,上述測試用例也不能發(fā)現(xiàn)錯誤!語句覆蓋是比較弱的覆蓋標準。2.判定覆蓋:設(shè)計足夠的測使用例,使程序中的每個判定至少都獲得一次“真”和“假”值,或者說使得程序中的每一個取“真”分支和取“假”分支至少經(jīng)歷一次,也稱為分支覆蓋。若要實現(xiàn)判定覆蓋,則需覆蓋ace和abd兩條路徑,或覆蓋acd和abe兩條路徑,可設(shè)計如下兩組測試用例: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,使用上述測試用例,照樣能按原路徑執(zhí)行(abe),而不影響結(jié)果。也就是說,只達到判定覆蓋仍無法確定判斷內(nèi)部條件的錯誤。注意:上述兩組測試用例不僅滿足了判定覆蓋,同時還做到了語句覆蓋。所以,若實現(xiàn)了判定覆蓋,則必然實現(xiàn)了語句覆蓋。從這一點看“判定覆蓋”比“語句覆蓋”更強一些。3.條件覆蓋:指設(shè)計若干個測試用例,使每個判定中的每個條件的可能取值至少出現(xiàn)一次。兩個判定中共有4個條件。條件覆蓋應(yīng)使以下8種結(jié)果成立:A>1,A≤1,B=0,B≠0,A=2,A≠2,X>1,X≤1為覆蓋這8種結(jié)果,可設(shè)計如下兩組測試用例:A=2,B=0,X=4(覆蓋A>1、B=0、A=2、X>1,執(zhí)行路徑ace)A=1,B=1,X=1(覆蓋A≤1、B≠0、A≠2、X≤1,執(zhí)行路徑abd)兩個測試用例A=2B=0X=4和A=1B=1X=1在覆蓋了4個條件的8種情況的同時,把兩個判斷的4個分支b、c、d和e也覆蓋了。是否可以說,達到了條件覆蓋,也就必然實現(xiàn)了判定覆蓋呢?假定使用測試用例A=1B=0X=3和A=2B=1X=1可以看出,覆蓋了條件的測試用例不一定能覆蓋分支。事實上,它只覆蓋了4個分支中的兩個(b和e)。判定覆蓋卻只關(guān)心整個判定表達式的值。4.判定—條件覆蓋:設(shè)計足夠的測使用例,使得判定中每個條件的所有可能(真/假)至少出現(xiàn)一次,并且每個判定本身的判定結(jié)果(真/假)也至少出現(xiàn)一次。若要實現(xiàn)判定—條件覆蓋,可設(shè)計如下兩組測試用例:A=2,B=0,X=4(執(zhí)行路徑ace)A=1,B=1,X=1(執(zhí)行路徑abd)若實現(xiàn)了判定—條件覆蓋,則必然也實現(xiàn)了判定覆蓋和條件覆蓋。從表面上看上述兩組測試可以滿足覆蓋圖中的4個判斷分支和8個條件取值。但是它們正好是為了滿足條件覆蓋的測試用例,而第1組測試用例也是語句覆蓋的測試用例,若第二個判斷表達式中的條件“A=2ORX>1”錯寫成了“A=2ORX<1”,當A=2的測試為真的時候,是不可能發(fā)現(xiàn)這個邏輯錯誤的。原因在于含有AND和OR的邏輯表達式中,某些條件將抑制其他條件,如邏輯條件表達式AANDB,如果A為“假”,則整個表達式的值為“假”,這個表達式中另外的幾個條件就不起作用了,所以就不再檢查條件B了,這樣B中的錯誤就發(fā)現(xiàn)不了。5.條件組合覆蓋:設(shè)計足夠的測試用例,使得每個判定中條件的各種可能組合都至少出現(xiàn)一次。

在上面的例子中的每個判定包含有兩個條件,這兩個條件在判定中有8種可能的組合:1)A>1,B=0 記為T1,T22)A>1,B≠0記為T1,F(xiàn)23)A≤1,B=0記為F1,T24)A≤1,B≠0記為F1,F(xiàn)25)A=2,X>1 記為T3,T46)A=2,X≤1記為T3,F(xiàn)47)A≠2,X>1記為F3,T48)A≠2,X≤1記為F3,F(xiàn)44個測試用例,用以覆蓋8種條件組合在條件組合覆蓋中:對某被測程序,若實現(xiàn)了條件組合覆蓋,則一定實現(xiàn)了判定覆蓋、條件覆蓋及判定—條件覆蓋。但條件組合覆蓋不一定能覆蓋程序中的每條路徑。上述4組測試用例就沒有覆蓋到路徑acd。6.路徑覆蓋:設(shè)計足夠的測試用例,覆蓋被測程序中所有可能的路徑。設(shè)計以下測試用例,覆蓋四條路徑:2.4.2路徑分析測試在實際應(yīng)用中,一個不太復雜的程序可能會出現(xiàn)多重循環(huán)嵌套,那么其路徑數(shù)可能就是一個非常大的數(shù)字,所以必須將測試的路徑數(shù)目壓縮到一定范圍內(nèi)。為解決這一難題,可以采用基本路徑測試方法,它也是一種白盒測試技術(shù)?;韭窂綔y試是在程序的流圖基礎(chǔ)上,確定程序的環(huán)路復雜性,導出基本路徑的集合,進而在其基礎(chǔ)上設(shè)計測試用例,這些測試用例能覆蓋到程序中的每條可執(zhí)行語句。2.4.2.1流圖流圖也稱為程序圖,實際上就是一個有向圖,就是把程序流程圖中每個處理符號都看作一個結(jié)點,原來聯(lián)結(jié)不同處理符號間的流程線看作連接不同結(jié)點的有向弧。它僅僅描繪程序的控制流程,完全不表現(xiàn)對數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。通常稱程序圖中開始點后面的結(jié)點為入口點,稱停止點前面的結(jié)點為出口點。1.控制流圖的特點具有唯一入口節(jié)點(源節(jié)點),表示程序段的開始語句;具有唯一出口節(jié)點(匯節(jié)點),表示程序段的結(jié)束語句;結(jié)點由帶有標號的圓圈表示,表示一個或多個無分支的源程序語句。控制邊由帶箭頭的直線或弧表示,代表控制流的方向。在流圖中一條邊必須終止于一個結(jié)點。由邊和結(jié)點圍成的面積稱為區(qū)域,當計算區(qū)域數(shù)時應(yīng)該包括圖外部未被圍起來的那個區(qū)域。用任何方法表示的過程設(shè)計結(jié)果,都可以翻譯成流圖。程序流程圖中的一個順序的處理框序列和一個菱形判定框,可以映射成流圖中的一個結(jié)點。當過程設(shè)計中包含復合條件時,即條件中包含了一個或多個布爾運算符(OR,AND,NOR),生成流圖的方法稍微復雜一些。應(yīng)該把復合條件分解為若干個簡單條件,每個簡單條件對應(yīng)流圖中一個結(jié)點。包含條件的結(jié)點稱為判定節(jié)點,從每個判定結(jié)點引出兩條或多條邊。2.程序環(huán)路復雜性

程序的環(huán)路復雜性又稱為圈復雜性,是一種描述程序邏輯復雜度的標準。在進行基本路徑測試時,確定了程序的環(huán)路復雜性,則可在其基礎(chǔ)上確定程序基本路徑集合的獨立路徑數(shù)目,這個數(shù)目是確保程序中每條可執(zhí)行語句至少執(zhí)行一次的測試用例數(shù)目的最小值??捎孟率?種方法中的任何一種來計算環(huán)形復雜度。(1)流圖中的區(qū)域數(shù)等于環(huán)形復雜度。(2)流圖G的環(huán)形復雜度:V(G)=E–N+2,

其中,E是流圖中邊的條數(shù),N是結(jié)點數(shù)。(3)流圖G的環(huán)形復雜度:V(G)=P+1,

其中,P是流圖中判定結(jié)點的數(shù)目例如要對軟件測試課程成績進行統(tǒng)計。連續(xù)輸入學生成績,最后以負分結(jié)束。規(guī)定成績在60分以下的為不及格、60分以上為及格、80分以上為優(yōu)秀。該程序統(tǒng)計并輸出不及格、及格、優(yōu)秀的人數(shù)及總?cè)藬?shù)。算出該程序的環(huán)路復雜度。開始S,S1,S2,S30輸入XX≥0?X≥60?X≥80?S1=S1+1S2=S2+1S3=S3+1S=S+1輸出S,S1,S2,S3結(jié)束sabc1defghc2c3FFFTTT(a)程序流程圖sabc1c2edc3fghend1234567891011121314R1R2R3入口點出口點(b)程序圖弧數(shù)m=14,結(jié)點數(shù)n=12,則有V(G)=m-n+2=14-12+2=4程序圖中的區(qū)域數(shù)為4,所以V(G)=4。判定結(jié)點的數(shù)目P是3,則V(G)=P+1=3+1=4。2.4.2.2獨立路徑測試對于一個較為復雜的程序要做到完全的路徑覆蓋測試是不可能實現(xiàn)的。獨立路徑測試就是對所有獨立路徑進行測試,也就是說檢驗了程序的每一條語句,從而達到語句覆蓋。獨立路徑是一條含有以前未處理的語句或判斷的路徑。在流圖中,獨立路徑表現(xiàn)為至少含有一條其他獨立路徑中均沒有的邊的路徑。使用獨立路徑測試的步驟:(1)根據(jù)程序代碼或程序流程圖,畫出相應(yīng)的程序圖。(2)計算程序圖的環(huán)路復雜度。(3)確定只包含獨立路徑的基本路徑集。⑷設(shè)計測試用例,保證基本路徑集合中每條路徑的執(zhí)行。環(huán)路復雜度V(G)為4。因此對應(yīng)的一組獨立路徑是:路徑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結(jié)束sabc1defghc2c3FFFTTT(a)程序流程圖sabc1c2edc3fghend1234567891011121314R1R2R3入口點出口點(b)程序圖下面通過一個C語言程序?qū)嵗齺砭唧w說明獨立路徑測試的設(shè)計流程。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.求出程序環(huán)形復雜度公式1:V(G)=10-8+2=4公式2:V(G)=3+1=4公式3:V(G)=4因此,控制流圖G的環(huán)形復雜度是4。就是說至少需要4條獨立路徑組成基本路徑集合,并由此得到能夠覆蓋所有程序語句的測試用例。3.設(shè)計測試用例根據(jù)上面環(huán)形復雜度的計算結(jié)果,源程序的基本路徑集合中有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根據(jù)上述4條獨立路徑,設(shè)計了測試用例。測試用例中的4個測試用例作為程序輸入數(shù)據(jù),能夠遍歷這4條獨立路徑。對于源程序中的循環(huán)體,測試用例中的輸入數(shù)據(jù)使其執(zhí)行零次或一次。注意:環(huán)路復雜度V(G)可導出程序基本集合中的獨立路徑條數(shù),從該基本集合導出的測試用例可以保證程序中的每條語句至少執(zhí)行一次,而且每個條件在執(zhí)行時都將分別取真、假兩種值。這是確保程序中每個執(zhí)行語句至少執(zhí)行一次所必需的測試用例數(shù)目的上界。一條新的路徑必須包含一條新邊,V(G)是構(gòu)

溫馨提示

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

評論

0/150

提交評論