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

下載本文檔

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

文檔簡介

軟件測試基礎(chǔ)測試方法1第1頁,共79頁,2023年,2月20日,星期日第三章軟件測試基本技術(shù)1軟件測試技術(shù)概述2白盒測試技術(shù)3黑盒測試技術(shù)2第2頁,共79頁,2023年,2月20日,星期日1軟件測試技術(shù)概述根據(jù)G.J.Myers觀點--軟件測試的目的:

軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程一個好的測試能夠在第一時間發(fā)現(xiàn)程序中存在的錯誤一個好的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤的測試。軟件測試是質(zhì)量控制的重要手段,保證客戶拿到或用戶使用高質(zhì)量的軟件產(chǎn)品3第3頁,共79頁,2023年,2月20日,星期日1)軟件測試方法分類根據(jù)測試對象在測試過程中是否發(fā)生狀態(tài)變化:動態(tài)測試和靜態(tài)測試根據(jù)對測試對象了解的程度(按哲學(xué)觀點):黑盒測試和白盒測試4第4頁,共79頁,2023年,2月20日,星期日測試方法黑盒子和白盒子靜態(tài)的和動態(tài)的文檔、代碼審查數(shù)據(jù)輸入邊界條件法等價劃分、數(shù)據(jù)流程圖狀態(tài)變換圖邏輯路徑法5第5頁,共79頁,2023年,2月20日,星期日黑盒子和白盒子功能測試數(shù)據(jù)驅(qū)動測試結(jié)構(gòu)測試邏輯驅(qū)動測試

客戶需求事件驅(qū)動輸入輸出6第6頁,共79頁,2023年,2月20日,星期日2)黑盒測試法(black-boxtesting)概念:也稱功能測試或數(shù)據(jù)驅(qū)動測試。不關(guān)心程序內(nèi)部結(jié)構(gòu),用于驗證產(chǎn)品所應(yīng)具有的功能是否實現(xiàn),每個功能是否都能正常使用,是否滿足用戶的要求。測試范圍:針對程序接口和用戶界面進行測試,只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息,并且保持外部信息的完整性。用途:主要用于軟件確認(rèn)測試。方法:等價類劃分、邊界值分析、錯誤推測法、因果圖。7第7頁,共79頁,2023年,2月20日,星期日是否有不正確或遺漏了的功能;在接口上,能否正確地接受輸入數(shù)據(jù),能否產(chǎn)生正確的輸出信息;訪問外部信息是否滿足要求;性能上是否滿足要求;界面是否錯誤,是否不美觀;初始化和終止錯誤。發(fā)現(xiàn)問題類型8第8頁,共79頁,2023年,2月20日,星期日3)白盒測試法(white-boxtesting)概念:也稱結(jié)構(gòu)測試或邏輯驅(qū)動測試。已知產(chǎn)品內(nèi)部工作流程,清楚軟件程序的結(jié)構(gòu)和語句,按照程序內(nèi)部的結(jié)構(gòu)測試程序。要求對程序的結(jié)構(gòu)特性做到一定程度的覆蓋,對所有邏輯路徑進行測試,并檢驗內(nèi)部控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)是否有錯。測試范圍:測試程序內(nèi)部的變量狀態(tài)、邏輯結(jié)構(gòu)、運行路徑等,檢驗程序中的每條通路是否能按預(yù)定要求正確工作,檢查程序內(nèi)部動作或運行是否符合設(shè)計規(guī)格要求,所有內(nèi)部成分是否按規(guī)定正常進行。用途:主要用于軟件驗證測試。方法:邏輯覆蓋、循環(huán)覆蓋和基本路徑測試。9第9頁,共79頁,2023年,2月20日,星期日白盒測試原則和說明原則:保證每個模塊中所有獨立路徑至少被使用一次;對所有邏輯值均測試為真值和假值;在上下邊界及可操作范圍內(nèi)運行所有循環(huán);檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)以確保其有效性。說明:窮舉路徑測試絕不能查出程序違反了設(shè)計規(guī)范,即程序在實現(xiàn)一個不是用戶需要的功能;窮舉路徑測試不可能查出程序中因遺漏路徑而出錯;窮舉路徑測試可能發(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的錯誤。10第10頁,共79頁,2023年,2月20日,星期日4)靜態(tài)的和動態(tài)的測試主持人作者記錄員列席人員內(nèi)審員技術(shù)專業(yè)人員用戶代表不正式正式互審

走讀審查會議運行程序11第11頁,共79頁,2023年,2月20日,星期日靜態(tài)測試概念:靜態(tài)測試就是靜態(tài)分析,對模塊的源代碼進行研讀,查找錯誤或收集一些度量數(shù)據(jù),不需要對代碼進行編譯和仿真運行。測試范圍:軟件產(chǎn)品的設(shè)計規(guī)格說明書的審查,程序代碼的閱讀、審查等。方法:人工檢測和計算機輔助靜態(tài)分析手段進行檢測。只進行特性分析。人工檢測:人工審查或評審軟件。偏重于編碼風(fēng)格、質(zhì)量的檢驗。可有效發(fā)現(xiàn)邏輯設(shè)計和編碼錯誤。計算機輔助靜態(tài)分析:利用靜態(tài)分析工具對被測程序進行特性分析,從程序中提取一些信息,以便檢查程序邏輯的各種缺陷和可疑的程序構(gòu)造。12第12頁,共79頁,2023年,2月20日,星期日動態(tài)測試概念:動態(tài)測試是通過觀察代碼運行時的動作來提供執(zhí)行跟蹤、時間分析,以及測試覆蓋度方面的信息。它通過實際運行程序發(fā)現(xiàn)錯誤。測試范圍:通過有效的測試用例,對應(yīng)的輸入/輸出關(guān)系來分析被測程序的運行情況。13第13頁,共79頁,2023年,2月20日,星期日5)自動測試和隨機測試手工模擬用戶操作自動測試:通過工具自動執(zhí)行軟件的測試。隨機測試:完全模擬客戶進行隨意的操作。14第14頁,共79頁,2023年,2月20日,星期日6)驗證和確認(rèn)(V&V)

Verification:Arewebuildingtheproductright?是否正確地構(gòu)造了軟件?即是否正確地做事,驗證開發(fā)過程是否遵守已定義好的內(nèi)容。驗證產(chǎn)品滿足規(guī)格設(shè)計說明書的一致性Validation:Arewebuildingtherightproduct?

是否構(gòu)造了正是用戶所需要的軟件?即是否正在做正確的事。驗證產(chǎn)品所實現(xiàn)的功能是否滿足用戶的需求15第15頁,共79頁,2023年,2月20日,星期日2白盒測試技術(shù)概念:

白盒測試也稱為結(jié)構(gòu)測試或邏輯驅(qū)動測試,把程序看作一個透明的盒子,測試程序的代碼書寫結(jié)構(gòu)和邏輯問題。測試對象:源程序。檢查內(nèi)容:對程序模塊的所有獨立的執(zhí)行路徑至少要測試一次對所有邏輯判斷,取真或假的兩種情況至少要測試一次對程序進行邊界檢查檢驗內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。16第16頁,共79頁,2023年,2月20日,星期日白盒測試用例的設(shè)計方法邏輯覆蓋:以程序的內(nèi)部邏輯結(jié)構(gòu)為基礎(chǔ),分為語句覆蓋、判定覆蓋、判定-條件覆蓋、條件組合覆蓋等基本路徑測試:在程序控制流程的基礎(chǔ)上,分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計測試用例。白盒測試分類:靜態(tài)測試和動態(tài)測試。17第17頁,共79頁,2023年,2月20日,星期日白盒測試用例注意事項由于測試路徑可能非常多,以及時間和資源問題,選出足夠多的路徑測試由于深入到程序編碼,通常開發(fā)人員協(xié)助測試人員書寫白盒測試用例18第18頁,共79頁,2023年,2月20日,星期日1)靜態(tài)測試靜態(tài)測試技術(shù):不運行被測試程序,對代碼通過檢查、閱讀進行分析。三步曲:走查(WalkThrough)審查(Inspection)評審(Review)最常見的靜態(tài)測試是找出源代碼的語法錯誤。19第19頁,共79頁,2023年,2月20日,星期日編碼的標(biāo)準(zhǔn)和規(guī)范標(biāo)準(zhǔn):建立起來必須遵守的規(guī)則。規(guī)范:建議最佳做法,推薦更好方式。實施標(biāo)準(zhǔn)和規(guī)范的原因:可靠性。可讀性和可維護性。可移植性。20第20頁,共79頁,2023年,2月20日,星期日(一)代碼檢查法代碼檢查法主要是通過桌面檢查、代碼審查和走查方式,對以下內(nèi)容進行檢查:檢查代碼和設(shè)計的一致性代碼的可讀性以及對軟件設(shè)計標(biāo)準(zhǔn)的遵循情況代碼邏輯表達(dá)的正確性代碼結(jié)構(gòu)的合理性程序中不安全、不明確和模糊的部分編程風(fēng)格方面的問題等21第21頁,共79頁,2023年,2月20日,星期日(1)走查(WalkThrough)定義:采用講解、討論和模擬運行的方式進行的查找錯誤的活動。注意:引導(dǎo)小組成員在走查前通讀設(shè)計和編碼。限時,避免跑題。發(fā)現(xiàn)問題適當(dāng)記錄,避免現(xiàn)場修改。檢查要點是代碼是否符合標(biāo)準(zhǔn)和規(guī)范,是否有邏輯錯誤。22第22頁,共79頁,2023年,2月20日,星期日(2)審查(Inspection)定義:采用講解、提問方式進行,一般有正式的計劃、流程和結(jié)果。主要方法采用缺陷檢查表。注意:以會議形式,制定會議目標(biāo)、流程和規(guī)則,結(jié)束后要編寫報告。按缺陷檢查表逐項檢查。發(fā)現(xiàn)問題適當(dāng)記錄,避免現(xiàn)場修改。發(fā)現(xiàn)重大缺陷,改正后會議需要重開。檢查要點是缺陷檢查表,所以該表要根據(jù)項目不同不斷積累完善。23第23頁,共79頁,2023年,2月20日,星期日走查與審查的比較走查審查準(zhǔn)備通讀設(shè)計和編碼應(yīng)準(zhǔn)備好需求描述文檔、程序設(shè)計文檔、程序的源代碼清單、代碼編碼標(biāo)準(zhǔn)和代碼缺陷檢查表形式非正式會議正式會議參加人員開發(fā)人員為主項目組成員包括測試人員主要技術(shù)方法無缺陷檢查表注意事項限時、不要現(xiàn)場修改代碼限時、不要現(xiàn)場修改代碼生成文檔會議記錄靜態(tài)分析錯誤報告目標(biāo)代碼標(biāo)準(zhǔn)規(guī)范,無邏輯錯誤代碼標(biāo)準(zhǔn)規(guī)范,無邏輯錯誤24第24頁,共79頁,2023年,2月20日,星期日(3)評審(Review)定義:通常在審查會后進行,審查小組根據(jù)記錄和報告進行評估。注意:充分審查了所規(guī)定的代碼,并且全部編碼準(zhǔn)則被遵守。審查中發(fā)現(xiàn)的錯誤已全部修改。25第25頁,共79頁,2023年,2月20日,星期日(二)靜態(tài)結(jié)構(gòu)分析法

在靜態(tà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)系圖等各種圖形、圖表,清晰地標(biāo)識整個軟件的組成結(jié)構(gòu)。采用方法:通過生成各種圖表,來幫助對源程序的靜態(tài)分析靜態(tài)錯誤分析表達(dá)式分析接口分析26第26頁,共79頁,2023年,2月20日,星期日2)程序插樁概念:程序插樁是借助向被測程序中插入一些操作,來實現(xiàn)測試目的的方法,即向源程序中添加一些語句,實現(xiàn)對程序語句的執(zhí)行、變量的變化等情況進行檢查。設(shè)計插樁程序時需要考慮的問題:探測哪些信息?在程序的什么部位設(shè)置探測點?需要設(shè)置多少個探測點?如何在程序中特定部位插入某些用以判斷變量特性的語句?27第27頁,共79頁,2023年,2月20日,星期日3)邏輯覆蓋(1)語句覆蓋(點覆蓋)

至少每個語句應(yīng)該執(zhí)行一次。(2)判定覆蓋--分支覆蓋(邊覆蓋)

每個語句必須至少執(zhí)行一次,而且每個判定的可能的結(jié)果都應(yīng)該至少執(zhí)行一次。(3)條件覆蓋

不僅每個語句至少執(zhí)行一次,而且使判定表達(dá)式中的每個條件都取到各種可能的結(jié)果。

注:滿足條件覆蓋,不一定滿足判定覆蓋。28第28頁,共79頁,2023年,2月20日,星期日(4)判定/條件覆蓋

選取足夠多的測試數(shù)據(jù),使得判定表達(dá)式中的每個條件中都取到各種可能的值,而且每個判定表達(dá)式也都取到各種可能的結(jié)果。(5)條件組合覆蓋

選取足夠多的測試數(shù)據(jù),使得每個判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。(6)路徑覆蓋

選取足夠多的測試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)行一次。29第29頁,共79頁,2023年,2月20日,星期日4)測試覆蓋準(zhǔn)則錯誤敏感測試用例分析(ESTCA)準(zhǔn)則例子:if(l≥0)theni=j…錯寫成:if(l>0)theni=j…Foster通過大量的實驗確定了程序中謂詞最容易出錯的部分,得到了一套錯誤敏感測試用例分析ESTCA(ErrorSensitiveTestCasesAnalysis)規(guī)則:30第30頁,共79頁,2023年,2月20日,星期日規(guī)則1:對于ArelB(其中rel可以是"<","="和">")型的分支謂詞,應(yīng)適當(dāng)?shù)剡x擇A與B的值,使得測試執(zhí)行到該分支語句時,A<B、A=B和A>B的情況分別出現(xiàn)一次。規(guī)則2:對于Arelc(其中rel可以是"<",或">",A是變量,c是常量)型的分支謂詞,當(dāng)rel是"<"時,應(yīng)適當(dāng)?shù)剡x擇A的值,使得:

A=c-M其中,M是距c最小的機器容許的整數(shù),若A和c均為整形時,M=1。同樣當(dāng)rel是">"時,應(yīng)適當(dāng)?shù)剡x擇A的值,使得:A=c+M其中,M是距c最小的機器容許的整數(shù),若A和c均為整形時,M=1。規(guī)則3:對外部輸入變量賦值,使其在每一測試用例中具有不同的值與符號,并與同一組測試用例中其他變量的值與符號不一致。31第31頁,共79頁,2023年,2月20日,星期日5)基本路徑測試法概念:在程序控制流圖的基礎(chǔ)上,通過分析控制構(gòu)造的環(huán)路復(fù)雜性導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計測試用例的方法。設(shè)計出的測試用例要保證在測試中程序的每個可執(zhí)行語句至少執(zhí)行一次。包括5個方面:程序流程圖計算程序環(huán)境復(fù)雜性導(dǎo)出測試用例準(zhǔn)備測試用例圖形矩陣32第32頁,共79頁,2023年,2月20日,星期日6)其它白盒測試法(1)域測試是一種基于程序結(jié)構(gòu)的測試方法。

Howden對程序錯誤分類:域錯誤、計算錯誤和丟失錯誤。

域錯誤:每條執(zhí)行路徑對應(yīng)于輸入域的一類情況,若程序的控制流有錯誤,對應(yīng)某一特定輸入可能執(zhí)行的是一條錯誤路徑,這種錯誤稱為路徑錯誤,也叫域錯誤。計算錯誤:如果對于特定輸入執(zhí)行的是正確路徑,但由于賦值語句的錯誤致使輸出結(jié)果不正確,則稱為計算型錯誤。丟失錯誤:程序中某處少了一個判定謂詞而引起的丟失路徑錯誤。33第33頁,共79頁,2023年,2月20日,星期日(2)符號測試符號測試的基本思想:允許程序不僅僅輸入具體的數(shù)值數(shù)據(jù),也可以輸入符號值。所謂的符號值可以是基本符號變量值,也可以是這些符號變量值的一個表達(dá)式。(3)Z路徑覆蓋概念:簡化循環(huán)意義下的路徑覆蓋為Z路徑覆蓋。所謂的循環(huán)簡化是指限制循環(huán)的次數(shù)。無論循環(huán)的形式和實際執(zhí)行循環(huán)的次數(shù)是多少,只考慮循環(huán)一次和零次兩種情況。(4)程序變異程序變異是一種錯誤驅(qū)動測試。34第34頁,共79頁,2023年,2月20日,星期日7)循環(huán)測試

循環(huán)測試是一種白盒測試技術(shù),注重于循環(huán)構(gòu)造的有效性。循環(huán)結(jié)構(gòu)測試用例的設(shè)計循環(huán)可以劃分為以下幾種模式:35第35頁,共79頁,2023年,2月20日,星期日簡單循環(huán)的測試用例設(shè)計:

下列測試集用于簡單循環(huán),其中n是允許通過循環(huán)的最大次數(shù)。整個跳過循環(huán);只有一次通過循環(huán);兩次通過循環(huán);

m次通過循環(huán),其中m<n;

n-1,n+1次通過循環(huán)。36第36頁,共79頁,2023年,2月20日,星期日例子

有這樣一個子程序,其中包含一個如下程序流程圖所示的循環(huán),請給出對該程序中循環(huán)過程進行測試的測試用例。

i>10i=1YNi=i+2測試內(nèi)容測試用例備注整個跳過循環(huán)只有一次通過循環(huán)兩次通過循環(huán)m次通過循環(huán),其中m<5n-1次通過循環(huán)n+1次通過循環(huán)i=11i=10i=7i=5i=3i=03次通過循環(huán)4次通過循環(huán)37第37頁,共79頁,2023年,2月20日,星期日嵌套循環(huán)的測試用例設(shè)計:

如果將簡單循環(huán)的測試方法用于嵌套循環(huán),可能的測試數(shù)就會隨嵌套層數(shù)成幾何級增加,這會導(dǎo)致不實際的測試數(shù)目,下面是一種減少測試數(shù)的方法:從最內(nèi)層循環(huán)開始,將其它循環(huán)設(shè)置為最小值;對最內(nèi)層循環(huán)使用簡單循環(huán),而使外層循環(huán)的迭代參數(shù)(即循環(huán)計數(shù))最小,并為范圍外或排除的值增加其它測試;由內(nèi)向外構(gòu)造下幾個循環(huán)的測試,但其它的外層循環(huán)為最小值,并使其它的嵌套循環(huán)為“典型”值;繼續(xù)直到測試所有的循環(huán)。38第38頁,共79頁,2023年,2月20日,星期日其他循環(huán)的測試用例設(shè)計:

串接循環(huán):

如果串接循環(huán)的循環(huán)都彼此獨立,可使用嵌套的策略測試。但是如果兩個循環(huán)串接起來,而第一個循環(huán)是第二個循環(huán)的初始值,則這兩個循環(huán)并不是獨立的。如果循環(huán)不獨立,則推薦使用的嵌套循環(huán)的方法進行測試。無結(jié)構(gòu)循環(huán):不能測試,盡量重新設(shè)計給結(jié)構(gòu)化的程序結(jié)構(gòu)后再進行測試。39第39頁,共79頁,2023年,2月20日,星期日8)白盒測試應(yīng)用策略

在測試中,應(yīng)盡量先使用工具進行靜態(tài)結(jié)構(gòu)分析。測試中可采取先靜態(tài)后動態(tài)的組合方式;利用靜態(tài)分析的結(jié)果作為引導(dǎo)覆蓋率測試是白盒測試的重點;在不同的測試結(jié)點,測試的重點不同。40第40頁,共79頁,2023年,2月20日,星期日3黑盒測試技術(shù)概念:黑盒測試也稱數(shù)據(jù)驅(qū)動測試,在測試時,把程序視為一個黑盒子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,測試者在程序接口處進行測試。說明:黑盒測試著眼于程序外部結(jié)構(gòu),不考慮內(nèi)部邏輯結(jié)構(gòu),只針對軟件界面和軟件功能進行測試。黑盒測試的依據(jù)是規(guī)格說明書和用戶手冊。軟件驗證:按照規(guī)格說明書中對軟件功能的描述,對照軟件在測試中的表現(xiàn)所進行的測試稱為軟件驗證。軟件審核:以用戶手冊等對外公布的文件為依據(jù)進行的測試稱為軟件審核。41第41頁,共79頁,2023年,2月20日,星期日黑盒測試概念發(fā)現(xiàn)的錯誤類型:模塊中是否有功能遺漏或者邏輯錯誤模塊接口是否存在問題性能上是否滿足要求功能測試方法:等價類劃分邊界值分析法錯誤推測法因果法功能圖法分類:功能測試和非功能測試非功能測試方法:性能測試、強度測試、兼容性測試、配置測試、安全測試42第42頁,共79頁,2023年,2月20日,星期日功能測試

功能測試的目的和內(nèi)容

程序安裝、啟動正常,有相應(yīng)的提示框、錯誤提示等每項功能符合實際要求系統(tǒng)的界面清晰、美觀菜單、按鈕操作正常、靈活,能處理一些異常操作能接受正確的數(shù)據(jù)輸入,對異常數(shù)據(jù)的輸入可以進行提示、容錯處理等數(shù)據(jù)的輸出結(jié)果準(zhǔn)確,格式清晰,可以保存和讀取功能邏輯清楚,符合使用者習(xí)慣系統(tǒng)的各種狀態(tài)按照業(yè)務(wù)流程而變化,并保持穩(wěn)定支持各種應(yīng)用的環(huán)境能配合多種硬件周邊設(shè)備軟件升級后,能繼續(xù)支持舊版本的數(shù)據(jù)與外部應(yīng)用系統(tǒng)的接口有效歸結(jié)為:界面、數(shù)據(jù)、操作、邏輯、接口幾個方面。43第43頁,共79頁,2023年,2月20日,星期日功能測試的方法

等價類劃分法邊界值分析法錯誤推測法因果圖法組合分析法我要測試所有的功能44第44頁,共79頁,2023年,2月20日,星期日1)等價類劃分方法概念:將所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分(子集),然后從每個子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測試用例。過程:

分類(等價類劃分):等價類是指某個輸入域的子集合,在該子集合中,各個輸入數(shù)據(jù)對于揭露程序中的錯誤都是等效的,他們具有等價特性。分類就是將輸入域按照具有相同特性或者類似功能進行劃分。在分析需求規(guī)格說明的基礎(chǔ)上劃分等價類,列出等價類表。

抽象:在各個子類中抽象出相同特性并用實例來表征這個特性。將程序可能的輸入數(shù)據(jù)分成若干個子集,從每個子集選取一個代表性的數(shù)據(jù)作為測試用例。45第45頁,共79頁,2023年,2月20日,星期日等價類劃分:等價類的分類:有效等價類和無效等價類。有效等價類:是有意義的、合理的輸入數(shù)據(jù),可以檢查程序是否實現(xiàn)了規(guī)格說明中所規(guī)定的功能和性能。無效等價類:與有效等價類的意義相反,即不滿足程序輸入要求或者無效的輸入數(shù)據(jù)構(gòu)成的集合。注意:

設(shè)計測試用例時,要同時考慮這兩種等價類。因為軟件不僅要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗。這樣的測試才能確保軟件具有更高的可靠性。46第46頁,共79頁,2023年,2月20日,星期日確定等價類的方式在輸入條件規(guī)定了取值范圍或值的個數(shù)的情況下,則可以確立一個有效等價類和兩個無效等價類;在輸入條件規(guī)定了輸入值的集合或者規(guī)定了“必須如何”的條件的情況下,可以確立一個有效等價類和一個無效等價類;在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類;在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個),并且程序要對每一個輸入值分別處理的情況下,可確立n個有效等價類和一個無效等價類;在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則)。47第47頁,共79頁,2023年,2月20日,星期日根據(jù)等價類創(chuàng)建測試用例的步驟建立等價類表,列出所有劃分出的等價類:輸入條件有效等價類無效等價類………………為每個等價類規(guī)定一個唯一的編號;設(shè)計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價類。重復(fù)這一步,最后使得所有有效等價類均被測試用例所覆蓋;設(shè)計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋的無效等價類。重復(fù)這一步使所有無效等價類均被覆蓋。48第48頁,共79頁,2023年,2月20日,星期日案例研究1:根據(jù)輸入判斷三角形的形狀測試場景:一個程序讀入3個整數(shù),把這三個數(shù)值看作一個三角形的3條邊的長度值。這個程序要打印出信息,說明這個三角形是不等邊的、是等腰的、還是等邊的。確定輸入數(shù)據(jù)與三角形形狀的關(guān)系:設(shè)三角形的3條邊分別為A,B,C。如果它們能夠構(gòu)成三角形的3條邊,必須滿足:A>0,B>0,C>0,且A+B>C,B+C>A,A+C>B;如果是等腰的,還要判斷A=B,或B=C,或A=C;如果是等邊的,則需判斷是否A=B,且B=C,且A=C。49第49頁,共79頁,2023年,2月20日,星期日案例研究1:判斷三角形的形狀(續(xù)1)創(chuàng)建等價類表:輸入條件有效等價類無效等價類是否三角形的三條邊(A>0),(1)(B>0),(2)(C>0),(3)(A+B>C),(4)(B+C>A),(5)(A+C>B),(6)(A≤0),(7)(B≤0),(8)(C≤0),(9)(A+B≤C),(10)(B+C≤A),(11)(A+C≤B),(12)是否等腰三角形(A=B),(13)(B=C),(14)(C=A),(15)(A≠B)and(B≠C)and(C≠A)(16)是否等邊三角形(A=B)and(B=C)and(C=A)(17)(A≠B),(18)(B≠C),(19)(C≠A),(20)50第50頁,共79頁,2023年,2月20日,星期日案例研究1:判斷三角形的形狀(續(xù)2)確定等價類輸入數(shù)據(jù):序號【A,B,C】覆蓋等價類輸出1【3,4,5】(1),(2),(3),(4),(5),(6)一般三角形2【0,1,2】(7)不能構(gòu)成三角形3【1,0,2】(8)4【1,2,0】(9)5【1,2,3】(10)6【1,3,2】(11)7【3,1,2】(12)8【3,3,4】(1),(2),(3),(4),(5),(6),(13)等腰三角形9【3,4,4】(1),(2),(3),(4),(5),(6),(14)10【3,4,3】(1),(2),(3),(4),(5),(6),(15)11【3,4,5】(1),(2),(3),(4),(5),(6),(16)非等腰三角形12【3,3,3】(1),(2),(3),(4),(5),(6),(17)是等邊三角形13【3,4,4】(1),(2),(3),(4),(5),(6),(14),(18)非等邊三角形14【3,4,3】(1),(2),(3),(4),(5),(6),(15),(19)15【3,3,4】(1),(2),(3),(4),(5),(6),(13),(20)51第51頁,共79頁,2023年,2月20日,星期日案例研究2:測試用戶登錄對話框的功能測試場景:在各種輸入條件下,測試程序的登錄對話框功能。用戶名和密碼的規(guī)則如下:用戶名長度為6至10位(含6位和10位)用戶名由字符(a-z、A-Z)和數(shù)字(0-9)組成不能為空、空格和特殊字符密碼規(guī)則同用戶名規(guī)則

52第52頁,共79頁,2023年,2月20日,星期日案例研究2:登錄對話框的功能(續(xù)1)確定輸入數(shù)據(jù)的情形:操作步驟預(yù)期結(jié)果輸入正確的用戶名和口令(均為6位),點擊[OK]按鈕進入系統(tǒng)輸入正確的用戶名和口令(均為10位),點擊[OK]按鈕進入系統(tǒng)輸入正確的用戶名和口令(均為6至8位之間),……進入系統(tǒng)用戶名為空,……提示輸入用戶名不能進入系統(tǒng)用戶名為空格,……提示無效用戶名不能進入系統(tǒng)用戶名小于6位,……提示用戶名太短不能進入系統(tǒng)……………………53第53頁,共79頁,2023年,2月20日,星期日案例研究2:登錄對話框的功能(續(xù)2)確定具體的輸入數(shù)據(jù):“用戶名”“口令”“預(yù)期結(jié)果”說明“user10”“pass10”進入系統(tǒng)正確的用戶名和口令(6位)“user789”“pass789”進入系統(tǒng)正確的用戶名和口令(7-9位)“user000010”“pass000010”進入系統(tǒng)正確的用戶名和口令(10位)“”“pass”提示輸入用戶名不能進入系統(tǒng)用戶名為空“空格”“pass”提示無效用戶名不能進入系統(tǒng)用戶名為空格“user”“userpass”提示用戶名太短不能進入系統(tǒng)用戶名小于6位“user0000011”“userpass”提示用戶名太長不能進入系統(tǒng)用戶名大于10位………………………………………………54第54頁,共79頁,2023年,2月20日,星期日等價類劃分法劃分好等價類測試:防止遺漏測試案例。55第55頁,共79頁,2023年,2月20日,星期日例子有一系統(tǒng),要求用戶輸入日期,假設(shè)日期限制在2000年1月至2020年12月,如果用戶輸入的日期不在這個范圍內(nèi),則顯示出錯信息,并且系統(tǒng)規(guī)定日期由年月的6位數(shù)字組成,前4位代表年,后2位代表月,請用等價類劃分法進行分類與測試,并分別給出相應(yīng)的測試用例。輸入合理等價類不合理等價類日期1、6位數(shù)字字符2、有非數(shù)字字符3、少于6個數(shù)字字符4、多于6個數(shù)字字符年份范圍5、在2000-2020之間6、小于20007、大于2020月份范圍8、在1-12之間9、等于010、大于1256第56頁,共79頁,2023年,2月20日,星期日測試用例序號用例1、5、8234679102007052007A20072007052019990520210520070020071357第57頁,共79頁,2023年,2月20日,星期日2)邊界值分析方法概念:程序的很多錯誤發(fā)生在輸入或輸出范圍的邊界上,因此針對各種邊界情況設(shè)置測試用例,可以發(fā)現(xiàn)不少程序缺陷。因此邊界值分析法是對輸入的邊界值進行測試。與等價類劃分方法的區(qū)別:邊界值分析不是從某個等價類中隨便挑選一個作為代表,而是使這個等價類的每個邊界都要作為測試條件。設(shè)計方法:確定邊界情況(輸入或輸出等價類的邊界)選取正好等于、剛剛大于或剛剛小于邊界值作為測試數(shù)據(jù)58第58頁,共79頁,2023年,2月20日,星期日確定邊界值的方式(原則)如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個范圍的邊界的值,以及剛剛超越這個范圍邊界的值作為測試輸入數(shù)據(jù)。如果輸入條件規(guī)定了值的個數(shù),則用最大個數(shù)、最小個數(shù)、比最小個數(shù)少一、比最大個數(shù)多一的數(shù)作為測試數(shù)據(jù)。如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,則應(yīng)選取集合的第一個元素和最后一個元素作為測試用例。如果程序中使用了一個內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測試用例。分析規(guī)格說明,找出其他可能的邊界條件。59第59頁,共79頁,2023年,2月20日,星期日邊界值分析法例如:測試一個排序程序的邊界值分析法的例子,其邊界條件有:排序序列為空;排序序列僅有一個數(shù)據(jù);排序序列為滿,用猜錯法補充一下測試用例;排序序列已經(jīng)按要求排好序;排序序列的順序與要求的順序恰好相反;排序序列中的所有數(shù)據(jù)全部相等。因為錯誤最容易發(fā)生在邊界值附近,所以邊界值分析法對于多變量函數(shù)的測試很有效,尤其是對于像C/C++數(shù)據(jù)類型要求不是很嚴(yán)格的語言有利。60第60頁,共79頁,2023年,2月20日,星期日輸入范圍測試用例年份范圍在2000-2020之間199905、200005、200105201905、202005、202105月份范圍在1-12之間200700、200701、200702200711、200712、200713整體200001-202012199912、200001、200002202011、202012、202101有一系統(tǒng),要求用戶輸入日期,假設(shè)日期限制在2000年1月至2020年12月,如果用戶輸入的日期不在這個范圍內(nèi),則顯示出錯信息,并且系統(tǒng)規(guī)定日期由年月的6位數(shù)字組成,前4位代表年,后2位代表月,請用邊界值法進行分類與測試,并分別給出相應(yīng)的測試用例。61第61頁,共79頁,2023年,2月20日,星期日3)錯誤推測法概念:基于經(jīng)驗和直覺推測程序中所有可能存在的各種錯誤,從而有針對性地設(shè)計測試用例?;舅枷耄毫信e程序中所有可能出現(xiàn)的錯誤和容易發(fā)現(xiàn)錯誤的地方,根據(jù)他們來選擇和設(shè)計測試用例。62第62頁,共79頁,2023年,2月20日,星期日發(fā)現(xiàn)程序經(jīng)常出現(xiàn)的錯誤的方法:單元測試中發(fā)現(xiàn)的模塊錯誤;產(chǎn)品的以前版本曾經(jīng)發(fā)現(xiàn)的錯誤;輸入數(shù)據(jù)為0或字符為空;當(dāng)軟件要求輸入時(比如在文本框中),不是沒有輸入正確的信息,而是根本沒有輸入任何內(nèi)容,單單按了Enter鍵;這種情況在產(chǎn)品說明書中常常忽視,程序員也可能經(jīng)常遺忘,但是在實際使用中卻時有發(fā)生。程序員總會習(xí)慣性的認(rèn)為用戶要么輸入信息,不管是看起來合法的或非法的信息,要不就會選擇Cancel鍵放棄輸入。63第63頁,共79頁,2023年,2月20日,星期日錯誤推測法這個錯誤到底在哪?錯誤推測法是測試者根據(jù)經(jīng)驗、知識和直覺來發(fā)現(xiàn)軟件錯誤。64第64頁,共79頁,2023年,2月20日,星期日4)因果圖法測試用例設(shè)計概念:多種輸入條件的組合,產(chǎn)生多種結(jié)果設(shè)計測試用例。設(shè)計方法:分析軟件規(guī)格說明文檔描述的哪些是原因(輸入條件),哪些是結(jié)果(輸出條件),給每個原因和結(jié)果賦予一個標(biāo)示符找出原因與結(jié)果,原因與原因之間的對應(yīng)關(guān)系,劃出因果圖在因果圖上標(biāo)上哪些不可能發(fā)生的因果關(guān)系,表明約束或限制條件根據(jù)因果圖,創(chuàng)建判定表,將復(fù)雜的邏輯關(guān)系和多種條件組合很具體明確的表示出來把判定表的每一行作為依據(jù)設(shè)計測試用例。65第65頁,共79頁,2023年,2月20日,星期日因果圖法例:某個軟件規(guī)格說明中包含以下要求:第一列字符必須是A或B,第二個字符必須是一個數(shù)字,在此情況下進行文件的修改;但如果第一列字符不正確,則輸出信息L;如果第二列字符不是數(shù)字,則給出信息M。66第66頁,共79頁,2023年,2月20日,星期日因果圖法混凝土強度為什么不足?67第67頁,共79頁,2023年,2月20日,星期日5)測試場景法設(shè)計測試用例現(xiàn)在的軟件幾乎都是用事件觸發(fā)來控制流程的,事件觸發(fā)時的情景便形成了場景,而同一事件不同的觸發(fā)順序和處理結(jié)果就形成事件流。這種在軟件設(shè)計方面的思想也可引入到軟件測試中,可以比較生動地描繪出事件觸發(fā)時的情景,有利于測試設(shè)計者設(shè)計測試用例,同時使測試用例更容易理解和執(zhí)行。68第68頁,共79頁,2023年,2月20日,星期日測試場景法(1)基本流和備選流基本流:采用直黑線表示,是經(jīng)過用例的最簡單的路徑

溫馨提示

  • 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

提交評論