黑盒測試及其測試實例課件_第1頁
黑盒測試及其測試實例課件_第2頁
黑盒測試及其測試實例課件_第3頁
黑盒測試及其測試實例課件_第4頁
黑盒測試及其測試實例課件_第5頁
已閱讀5頁,還剩149頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

測試的方法與技術(shù)軟件測試的策略和方法靜態(tài)測試方法動態(tài)測試方法人工測試方法計算機(jī)輔助靜態(tài)分析方法白盒測試方法黑盒測試方法1.測試的方法與技術(shù)軟件測試的靜態(tài)測動態(tài)測人工測試方法計算機(jī)輔助

黑盒測試方法是在程序接口上進(jìn)行測試,主要是為了發(fā)現(xiàn)以下錯誤:

是否有不正確或遺漏了的功能?在接口上,輸入能否正確地接受?能否輸出正確的結(jié)果?是否有數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息(例如數(shù)據(jù)文件)訪問錯誤?性能上是否能夠滿足要求?是否有初始化或終止性錯誤?2.黑盒測試方法是在程序接口上進(jìn)行測試,主要是為了發(fā)現(xiàn)以下錯軟件輸入不深入代碼細(xì)節(jié)的測試方法稱為動態(tài)黑盒測試。軟件測試員充當(dāng)客戶來使用。輸出這種方法是把測試對象看做一個黑盒子,測試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能說明。動態(tài)黑盒測試—戴上眼罩測試軟件3.軟件輸入不深入代碼細(xì)節(jié)的測試方法稱為動態(tài)黑盒測試。輸出這種方

1.等價分類法所謂等價分類,就是把所有可能的輸入數(shù)據(jù)(有效的和無效的)劃分成若干個等價類(等價類是指某個輸入域的子集合。在該集合中,各個輸入數(shù)據(jù)對于揭露程序中的錯誤都是等價的)。因此,可以把全部輸入數(shù)據(jù)合理地劃分為若干等價類,在每一個等價類中取一個數(shù)據(jù)作為測試的輸入條件,這樣就可以少量的代表性測試數(shù)據(jù),來取得較好的測試結(jié)果。4.1.等價分類法所謂等價分類,就是把所有可能的Windows計算器程序?qū)嵗治觯?)你測試了1+1,1+2,1+3和1+4之后,還有必要測試1+5和1+6嗎?你能放心地認(rèn)為它們正確嗎?(2)1+15與1+99999999999999999999999999999999有什么區(qū)別呢?(3)測試計算器中“菜單”命令中的復(fù)制功能(單擊復(fù)制命令,在菜單彈出時鍵入c或者C,或者按Ctrl+c,這幾種方法在設(shè)計測試用例時可以縮減為按Ctrl+c組合鍵)注意:在尋找等價類劃分時,考慮把軟件具有相似輸入、相似輸出、相似操作的分在一組,這些組就是等價劃分。5.Windows計算器程序?qū)嵗治鲎⒁猓涸趯ふ业葍r類劃分時,考

是指對于程序的規(guī)格說明來說,是合理的有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用它可以檢驗程序是否實現(xiàn)預(yù)先規(guī)定的功能和性能。

(1)有效等價類

6.是指對于程序的規(guī)格說明來說,是合理的(1)有效等價類

是指對于程序的規(guī)格說明來說,是不合理的、無意義的輸入數(shù)據(jù)構(gòu)成的集合。程序員主要利用這一類測試用例來檢查程序中功能和性能的實現(xiàn)是否不符合規(guī)格說明要求。

(2)無效等價類

7.是指對于程序的規(guī)格說明來說,是不合理(2)無效等價類

劃分等價類不僅要要考慮代表“有效”輸入值的有效等價類,還需考慮代表“無效”輸入值的無效等價類。采用等價分類法要注意以下兩點:

每一無效等價類至少要用一個測試用例,不然就可能漏掉某一類錯誤,但允許若干有效等價類合用同一個測試用例,以便進(jìn)一步減少測試的次數(shù)。

8.劃分等價類不僅要要考慮代表“有效”輸入值采用等價分類法要注如何劃分等價類?有效等價類(合理等價類)無效等價類(不合理等價類)

9.如何劃分等價類?9.劃分等價類的規(guī)則(5個)(1)如果輸入條件規(guī)定了取值范圍,可定義一個有效等價類和兩個無效等價類。例1.1:輸入值是學(xué)生成績,范圍是0~100。0100

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

無效等價類成績<010.劃分等價類的規(guī)則(5個)(1)如果輸入條件規(guī)定了取值范圍, (2)如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了“必須如何”的條件,這時可確立一個有效等價類和一個無效等價類。

例1.2:輸入條件要求:x==5,答案:有效等價類:1個x==5無效等價類:1個:x!=511. (2)如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了“必須(3)在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類。

例1.3:輸入條件要求:x==ture,答案:有效等價類:1個x==ture

無效等價類:1個:x==false12.(3)在輸入條件是一個布爾量的情況下,可確定一個有效等價類和(4)在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個,or關(guān)系),并且程序要對每一個輸入值分別進(jìn)行處理的情況下,可確立n個有效等價類和一無效等價類(and關(guān)系)。

例1.4:輸入條件說明學(xué)歷可為:專科、本科、碩士、博士四種之一。答案:

有效等價類:4個:???、or本科、or碩士、or博士

無效等價類:1個:!??芶nd!本科and!碩士and!博士例如,在教師上崗方案中規(guī)定對教授、副教授、講師和助教分別計算分?jǐn)?shù),做相應(yīng)的處理。因此可以確定4個有效等價類為教授、副教授、講師和助教,一個無效等價類,它是所有不符合以上身分的人員的輸入值的集合。13.(4)在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個,or關(guān)系),并(5)在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下(and關(guān)系),可確立一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則,or關(guān)系)。

例1.5:要求輸入必須滿足年齡>18歲,性別=男,地區(qū)=河南的人。答案:有效等價類:1個:年齡>18歲and性別=男and地區(qū)=河南無效等價類:3個:年齡<=18歲,or性別?。侥校琽r地區(qū)?。胶幽?4.(5)在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下(and關(guān)系),根據(jù)等價類創(chuàng)建測試用例的步驟建立等價類表,列出所有劃分出的等價類:15.根據(jù)等價類創(chuàng)建測試用例的步驟建立等價類表,列出所有劃分出的等(1)為每一個等價類規(guī)定一個唯一編號;(2)設(shè)計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價類,重復(fù)這一步,直到所有的有效等價類都被覆蓋為止;(3)設(shè)計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重復(fù)這一步,直到所有的無效等價類都被覆蓋為止。從劃分出的等價類中按以下原則設(shè)計測試用例:16.(1)為每一個等價類規(guī)定一個唯一編號;從劃分出的等價類中按以常見等價類劃分測試形式針對是否對無效數(shù)據(jù)進(jìn)行測試,可以將等價類測試分為標(biāo)準(zhǔn)等價類測試和健壯等價類測試。標(biāo)準(zhǔn)等價類測試——不考慮無效數(shù)據(jù)值,測試用例使用每個等價類中的一個值。健壯等價類測試——主要的出發(fā)點是考慮了無效等價類。對有效輸入,測試用例從每個有效等價類中取一個值;對無效輸入,一個測試用例有一個無效值,其他值均取有效值。17.常見等價類劃分測試形式針對是否對無效數(shù)據(jù)進(jìn)行測試,可以將等價使用等價類劃分法測試的實例例1三角形問題分析:在多數(shù)情況下,是從輸入域劃分等價類的,但并非不能從被測程序的輸出域反過來定義等價類,事實上,這對于三角形問題卻是最簡單的劃分方法。在三角形問題中,有四種可能的輸出:等邊三角形、等腰三角形、一般三角形和非三角形。利用這些信息能夠確定下列輸出(值域)等價類。R1={〈a,b,c〉:邊為a,b,c的等邊三角形}R2={〈a,b,c〉:邊為a,b,c的等腰三角形}R3={〈a,b,c〉:邊為a,b,c的一般三角形}R4={〈a,b,c〉:邊為a,b,c不能構(gòu)成三角形}標(biāo)準(zhǔn)等價類測試不考慮無效數(shù)據(jù)值,測試用例使用每個等價類中的一個值。18.使用等價類劃分法測試的實例例1三角形問題18.三角形問題的4個標(biāo)準(zhǔn)等價類測試用例19.三角形問題的4個標(biāo)準(zhǔn)等價類測試用例19.三角形問題的7個健壯等價類測試用例20.三角形問題的7個健壯等價類測試用例20.例2:某報表處理系統(tǒng)要求用戶輸入處理報表的日期,日期限制在2005年1月至2009年12月,即系統(tǒng)只能對該段期間內(nèi)的報表進(jìn)行處理,如日期不在此范圍內(nèi),則顯示輸入錯誤信息。系統(tǒng)日期規(guī)定由年、月的6位數(shù)字字符組成,前四位代表年,后兩位代表月。

如何用等價類劃分法設(shè)計測試用例,來測試程序的日期檢查功能?21.例2:某報表處理系統(tǒng)要求用戶輸入處理報表的日期,日期限制在2步驟:第一步:等價類劃分第二步:為有效等價類設(shè)計測試用例。(多個有效等價類可使用一個測試用例)第三步:為每一個無效等價類設(shè)至少設(shè)計一個測試用例22.步驟:第一步:等價類劃分22.第一步:等價類劃分輸入等價類有效等價類無效等價類

報表日期的類型及長度6位數(shù)字字符(1)有非數(shù)字字符(4)少于6個數(shù)字字符(5)多于6個數(shù)字字符(6)年份范圍在2005~2009之間(2)小于2005(7)大于2009(8)月份范圍在1~12之間(3)“報表日期”輸入條件的等價類表小于1(9)大于12(10)23.第一步:等價類劃分輸入等價類有效等價類第二步:為有效等價類設(shè)計測試用例對表中編號為1,2,3的3個有效等價類用一個測試用例覆蓋:

測試數(shù)據(jù)期望結(jié)果覆蓋范圍200705等價類(1)(2)(3)輸入有效24.第二步:為有效等價類設(shè)計測試用例對表中編號為1,2,3測第三步:為每一個無效等價類設(shè)至少設(shè)計一個測試用例

不能出現(xiàn)相同的測試用例

測試數(shù)據(jù)期望結(jié)果覆蓋范圍001MAY等價類(4)輸入無效20065等價類(5)輸入無效2007005等價類(6)輸入無效200405等價類(7)輸入無效201005等價類(8)輸入無效200800等價類(9)輸入無效200613等價類(10)輸入無效

本例的10個等價類至少需要8個測試用例25.第三步:為每一個無效等價類設(shè)至少設(shè)計一個測試用例不能出現(xiàn)相同例3.在某網(wǎng)站申請免費信箱時,要求用戶必須輸入用戶名、密碼及確認(rèn)密碼,對每一項輸入條件的要求如下:用戶名要求為4位以上,16位以下,使用英文字母、數(shù)字、“-”、“_”,并且首字符必須為字母或數(shù)字;密碼要求為6~16位之間,只能使用英文字母、數(shù)字以及“-”、“_”,并且區(qū)分大小寫。分析如下:分析程序的規(guī)格說明,列出等價類表(包括有效等價類和無效等價類),如表4-5所示。26.例3.在某網(wǎng)站申請免費信箱時,要求用戶必須輸入用戶名、密碼及表4-5等價類表27.表4-5等價類表27.根據(jù)上述等價類表,設(shè)計測試用例如表4-6所示。表4-6測試用例28.根據(jù)上述等價類表,設(shè)計測試用例如表4-6所示。表4-6測試?yán)?.保險公司計算保費費率的程序某保險公司的人壽保險的保費計算方式為:投保額×保險費率其中,保險費率依點數(shù)不同而有別,10點及10點以上保險費率為0.6%,10點以下保險費率為0.1%;而點數(shù)又是由投保人的年齡、性別、婚姻狀況和撫養(yǎng)人數(shù)來決定,具體規(guī)則如下:29.例4.保險公司計算保費費率的程序29.(1)分析程序規(guī)格說明中給出和隱含的對輸入條件的要求,列出等價類表(包括有效等價類和無效等價類)。年齡:一位或兩位非零整數(shù),值的有效范圍為1~99性別:一位英文字符,只能取值‘M’或’F’婚姻:字符,只能取值‘已婚’或‘未婚’撫養(yǎng)人數(shù):空白或一位非零整數(shù)(1~9)點數(shù):一位或兩位非零整數(shù),值的范圍為1~99(2)根據(jù)(1)中的等價類表,設(shè)計能覆蓋所有等價類的測試用例。30.(1)分析程序規(guī)格說明中給出和隱含的對輸入條件的要求,列出等31.31.32.32.2.邊界值分析法(BoundaryValueAnalysis)軟件邊界與懸崖很類似測試內(nèi)點測試外點被測試子域33.2.邊界值分析法(BoundaryValueAnaly邊界值分析法與等價類劃分法區(qū)別(1)邊界值分析不是從某等價類中隨便挑一個作為代表,而是使這個等價類的每個邊界都要作為測試條件。(2)邊界值分析不僅考慮輸入條件,還要考慮輸出空間產(chǎn)生的測試情況(NextDate函數(shù)用例)。34.邊界值分析法與等價類劃分法區(qū)別34.

采用邊界值分析法來選擇測試用例,可使得被測程序能在邊界值及其附近運行,從而更有效地暴露出程序中潛藏的錯誤。邊界值分析法35.采用邊界值分析法來選擇測試用例,可使邊界值分析法35.

邊界值分析法邊界值分析法是對等價類劃分方法的補(bǔ)充。人們從長期的測試工作經(jīng)驗得知,大量的錯誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。因此針對各種邊界情況設(shè)計測試用例,可以查出更多的錯誤。邊界值分析的基本思想是把測試的重點放在各個等價類的邊界上,使用在最小值、略小于最小值、略高于最小值、正常值、最大值、略低于最大值和略超過最大值處的值做為測試數(shù)據(jù),并據(jù)此設(shè)計出相應(yīng)的測試用例。36.邊界值分析法邊界值分析法是對等價類劃分方法的補(bǔ)充。36.

比如,在做三角形計算時,要輸入三角形的三個邊長:A、B和C。我們應(yīng)注意到這三個數(shù)值應(yīng)當(dāng)滿足

A>0、B>0、C>0、A+B>C、A+C>B、B+C>A,才能構(gòu)成三角形。但如果把六個不等式中的任何一個大于號“>”錯寫成大于等于號“≥”,那就不能構(gòu)成三角形。問題恰出現(xiàn)在容易被疏忽的邊界附近。37.比如,在做三角形計算時,要輸入三角形的三個邊長:A、B和1:RemCreata10elementintegerarray2:RemInitializeeachelementto-13:Dimdata(10)AsInteger4:DimiAsInteger5:Fori=1To106:data(i)=-17:NextI8:End演示邊界條件缺陷的簡單BASIC程序38.1:RemCreata10element

邊界值設(shè)計原則(1)如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個范圍的邊界的值,以及剛剛超越這個范圍邊界的值作為測試輸入數(shù)據(jù)。例如,如果程序的規(guī)格說明中規(guī)定:“重量在10公斤至50公斤范圍內(nèi)的郵件,其郵費計算公式為…

”。作為測試用例,我們應(yīng)取10及50,還應(yīng)取10.01,49.99,9.99及50.01等。39.邊界值設(shè)計原則(1)如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)(2)如果輸入條件規(guī)定了值的個數(shù),則用最大個數(shù)、最小個數(shù)、比最小個數(shù)少一、比最大個數(shù)多一的數(shù)作為測試數(shù)據(jù)。例如,一個輸入文件應(yīng)包括1-255個記錄,則測試用例可取1和255,還應(yīng)取0及256等。40.(2)如果輸入條件規(guī)定了值的個數(shù),則用最大個數(shù)、最

3.將規(guī)則1和2應(yīng)用于輸出條件,即設(shè)計測試用例使輸出值達(dá)到邊界值及其左右的值。例如,一程序?qū)儆谇閳髾z索系統(tǒng),要求每次”最少顯示1條、最多顯示4條情報摘要”,這時我們應(yīng)考慮的測試用例包括1和4,還應(yīng)包括0和5等。再如,一個學(xué)生成績管理系統(tǒng)規(guī)定,只能查詢95-98級大學(xué)生的各科成績,可以設(shè)計測試用例,使得查詢范圍內(nèi)的某一屆或四屆學(xué)生的學(xué)生成績,還需設(shè)計查詢94級、99級學(xué)生成績的測試用例(不合理輸出等價類)。由于輸出值的邊界不與輸入值的邊界相對應(yīng),所以要檢查輸出值的邊界不一定可能,要產(chǎn)生超出輸出值之外的結(jié)果也不一定能做到,但必要時還需試一試。41.3.將規(guī)則1和2應(yīng)用于輸出條件,即設(shè)計測試用例使輸(4)如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合(如順序文件、線性表等),則應(yīng)選取集合的第一個元素和最后一個元素作為測試用例。

(5)如果程序中使用了一個內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測試用例。

例如,如果程序中定義了一個數(shù)組,其元素下標(biāo)的下界是0,上界是100,那么應(yīng)選擇達(dá)到這個數(shù)組下標(biāo)邊界的值,如0與100,作為測試用例。(6)分析規(guī)格說明,找出其他可能的邊界條件。42.(4)如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合(如順程序中判斷輸入日期(年月)是否有效,假設(shè)使用如下語句:IF(ReportDate<=MaxDate)AND(ReportDate>=MinDate)THEN產(chǎn)生指定日期報表ELSE顯示錯誤信息ENDIF如果將程序中的“<=”誤寫為“<”,則上例的等價類劃分中所有測試用例都不能發(fā)現(xiàn)這一錯誤,采用邊界值分析法的測試用例如下表所示。對上述報表處理系統(tǒng)中的報表日期輸入條件,以下用邊界值分析設(shè)計測試用例。43.程序中判斷輸入日期(年月)是否有效,假設(shè)使用如下語句:I輸入條件報表日期的類型及長度1個數(shù)字字符5個數(shù)字字符7個數(shù)字字符有1個非數(shù)字字符全部是非數(shù)字字符6個數(shù)字字符顯示出錯顯示出錯顯示出錯顯示出錯顯示出錯輸入有效日期范圍月份范圍“報表日期”邊界值分析法測試用例測試用例說明測試數(shù)據(jù)期望結(jié)果選取理由52006520070052008.5MAY---200605月份為1月月份為12月月份<1月份>12200501200512200500200513200501200912200500200913輸入有效輸入有效顯示出錯顯示出錯輸入有效輸入有效顯示出錯顯示出錯在有效范圍邊界上選取數(shù)據(jù)僅有1個合法字符比有效長度少1比有效長度多1只有1個非法字符6個非法字符類型及長度均有效最小日期最大日期剛好小于最小日期剛好大于最大日期最小月份最大月份剛好小于最小月份剛好大于最大月份44.輸入報表日1個數(shù)字字符顯示出錯日期月份“報表日期”邊界值分析

邊界值分析法與等價類劃分法比較

(1)等價分類法的測試數(shù)據(jù)是在各個等價類允許的值域內(nèi)任意選取的,而邊界值分析的測試數(shù)據(jù)必須在邊界值附近選取。(2)一般地說,用邊界值分析法設(shè)計的測試用例比等價分類法的代表性更廣,發(fā)現(xiàn)錯誤的能力也更強(qiáng)。但是對邊界的分析與確定比較復(fù)雜,要求測試人員具有更多的經(jīng)驗和創(chuàng)造性。(3)還需指出,有些包含的邊界情況比較簡單,只需要分析輸入等價類。在有些情況下,除了考察輸入值邊界外,還需要考察輸出值和其他可能存在的邊界。45.45.例:假定被測程序是一個計算x的正弦值sin(x),其輸出具有3個邊界值-1、0、1。在選擇測試用例時,應(yīng)使x的值分別產(chǎn)生上述的3種輸出邊界值,即選取-∏/2、0、∏/2作為x的測試數(shù)據(jù)。46.例:假定被測程序是一個計算x的正弦值sin(x),其輸出具有3.錯誤猜測法

所謂猜測,就是猜測被測程序在哪些地方容易出錯,然后針對可能的薄弱環(huán)節(jié)來設(shè)計測試用例。顯然它比前兩種方法更多地依靠測試人員的直覺與經(jīng)驗。所以一般都先用前兩方法設(shè)計測試用例,然后再用猜測法去補(bǔ)充一些例子作為輔助的手段。錯誤猜測法47.3.錯誤猜測法所謂猜測,就是猜測被測程序在哪些地48.48.錯誤推測法的基本思想是:列舉出程序中所有可能有的錯誤和容易發(fā)生錯誤的特殊情況,根據(jù)它們選擇測試用例。顯然,它比前兩種方法更多地依靠測試人員的直覺和經(jīng)驗。所以,一般都先用前兩種方法設(shè)計測試用例,然后用猜錯法補(bǔ)充一些例子作為輔助手段。根據(jù)經(jīng)驗來設(shè)計測試用例的方法:例如,數(shù)據(jù)測試中的:缺省值空白空值零值無49.錯誤推測法的基本思想是:列舉出程序中所有可能有的錯誤和容易發(fā)又如輸入、輸出數(shù)據(jù)為零是容易發(fā)生錯誤的情況;再如,輸入表格為空或輸入表格只有一行是容易出錯的情況等。例如對于一個排序程序,列出以下幾項需特別測試的情況:(1)輸入表為空。(2)輸入表只含一個元素。(3)輸入表中所有元素均相同。(4)輸入表中已排好序。仍以上述的報表日期為例,在已經(jīng)用等價分類法和邊界值分析發(fā)設(shè)計過測試用例的基礎(chǔ)上,還可用錯誤猜測法補(bǔ)充一些測試用例,例如:報表日期為:“0”漏送“報表日期”年月次序顛倒,例如將“200112”誤輸為“122001”50.又如輸入、輸出數(shù)據(jù)為零是容易發(fā)生錯誤的情況;再如,輸入表4.決策表法

4.1決策表法決策表通常由四個部分組成,如圖4-1所示。條件樁:列出了問題的所有條件,通常認(rèn)為列出的條件的先后次序無關(guān)緊要。動作樁:列出了問題規(guī)定的可能采取的操作,這些操作的排列順序沒有約束。條件項:針對條件樁給出的條件列出所有可能的取值。動作項:與條件項緊密相關(guān),列出在條件項的各組取值情況下應(yīng)該采取的動作。規(guī)則:一種條件取值組合和與其對應(yīng)的動作組合(即判定表中貫穿條件項和動作項的一列)構(gòu)成了判定表中的一個規(guī)則。條件取值組合的數(shù)目就是規(guī)則的數(shù)目。51.4.決策表法4.1決策表法51.圖4-1決策表的組成52.圖4-1決策表的組成52.建立決策表的步驟:①列出條件樁和動作樁。②確定規(guī)則的個數(shù),用來為規(guī)則編號。若有n個原因,由于每個原因可取0或1,故有2的n次方個規(guī)則。③完成所有條件項的填寫。④完成所有動作項的填寫。⑤合并相似規(guī)則,用以對初始決策表進(jìn)行簡化(見書P56)。⑥建立了決策表后,可針對決策表中的每一列有效規(guī)則設(shè)計一個測試用例,用以對程序進(jìn)行黑盒測試。53.建立決策表的步驟:53.決策表最突出的優(yōu)點:能夠?qū)?fù)雜的問題按照各種可能的情況全部列舉出來,簡明并避免遺漏。因此,利用決策表能夠設(shè)計出完整的測試用例集合。運用決策表設(shè)計測試用例,可以將條件理解為輸入,將動作理解為輸出。4.2實例分析舉例:以下列問題為例給出構(gòu)造決策表的具體過程。如果某產(chǎn)品銷售好并且?guī)齑娴?,則增加該產(chǎn)品的生產(chǎn);如果該產(chǎn)品銷售好,但庫存量不低,則繼續(xù)生產(chǎn);若該產(chǎn)品銷售不好,但庫存量低,則繼續(xù)生產(chǎn);若該產(chǎn)品銷售不好,且?guī)齑媪坎坏停瑒t停止生產(chǎn)。54.決策表最突出的優(yōu)點:能夠?qū)?fù)雜的問題按照各種可能的情況全部列表4-2決策表解法如下:確定規(guī)則的個數(shù)。對于本題有2個條件(銷售、庫存),每個條件可以有兩個取值,故有22=4種規(guī)則。列出所有的條件樁和動作樁。填入條件項。填入動作項,得到初始決策表,如表4-2所示。55.表4-2決策表解法如下:55.5.因果圖法

因果圖法是借助圖形來設(shè)計測試用例的一種系統(tǒng)方法。它適用于被測程序具有多種輸入條件,程序的輸出又依賴于輸入條件的各種組合的情況。因果圖是一種簡化了的邏輯圖,它能直觀地表明程序輸入條件(原因)和輸出動作(結(jié)果)之間的相互關(guān)系。5.1因果圖法56.5.因果圖法因果圖法是借助圖形來設(shè)計測試用例的一在等價類劃分方法和邊界值方法中未考慮輸入條件的各種組合,當(dāng)輸入條件比較多時,輸入條件組合的數(shù)目會相當(dāng)大。因果圖法是一種幫助人們系統(tǒng)地選擇一組高效測試用例的方法,它既考慮了輸入條件的組合關(guān)系,又考慮了輸出條件對輸入條件的依賴關(guān)系,即因果關(guān)系,其測試用例發(fā)現(xiàn)錯誤的效率比較高。因果圖方法的特點是:考慮輸入條件的組合關(guān)系;考慮輸出條件對輸入條件的依賴關(guān)系,即因果關(guān)系;測試用例發(fā)現(xiàn)錯誤的效率高;能檢查出功能說明中的某些不一致或遺漏。57.在等價類劃分方法和邊界值方法中未考慮輸入條件的各種組合,當(dāng)輸在因果圖中出現(xiàn)的基本符號在因果圖中使用4種符號分別表示4種因果關(guān)系,如圖5-1所示。用直線連接左右節(jié)點,其中左節(jié)點ci表示輸入狀態(tài)(或稱原因),右節(jié)點ei表示輸出狀態(tài)(或稱結(jié)果)。ci和ei都可取值0或1,0表示某狀態(tài)不出現(xiàn),1表示某狀態(tài)出現(xiàn)。主要的原因和結(jié)果之間的關(guān)系有:

(a)恒等(b)非

(c)或(d)與圖5-1因果圖的基本符號58.在因果圖中出現(xiàn)的基本符號(a)恒圖中左邊的結(jié)點表示原因,右邊的結(jié)點表示結(jié)果原因和結(jié)果之間的關(guān)系有:恒等:若c1=1,則e1=1;若c1=0,則e1=0非:若c1=1,則e1=0;若c1=0,則e1=1或:若c1=1或c2=1或c3=1,則e1=1;否則e1=0與:若c1=c2=c3=1,則e1=1;否則e1=0畫因果圖時原因在左,結(jié)果在右,由上向下排列,并根據(jù)功能說明中規(guī)定的原因和結(jié)果之間的關(guān)系,用上述符號連接起來。必要時還可以引入一些中間結(jié)點。59.圖中左邊的結(jié)點表示原因,右邊的結(jié)點表示結(jié)果59.表示約束條件的符號

為了表示原因與原因之間,結(jié)果與結(jié)果之間可能存在的約束條件,在因果圖中可以附加一些表示約束條件的符號。見圖5-2.圖5-2約束符號60.表示約束條件的符號

為了表示原因與原因之間,結(jié)果與結(jié)果圖中互斥、包含、唯一、要求是對原因的約束,屏蔽是對結(jié)果的約束互斥:表示a、b、c中至多只有一個為1,即不同時為1包含:表示a、b、c中至少有一個為1,即不同時為0唯一:表示a、b、c中有且僅有一個1要求:表示若a=1,則要求b必須為1,即不可出現(xiàn)a=1且b=0屏蔽(強(qiáng)制):表示若a=1,則b必須為0,即不可出現(xiàn)a=1且b=161.圖中互斥、包含、唯一、要求是對原因的約束,屏蔽是對結(jié)果的約束利用因果圖產(chǎn)生測試用例的基本步驟

(1)

分析軟件規(guī)格說明描述中,哪些是原因(即輸入條件或輸入條件的等價類),哪些是結(jié)果(即輸出條件),并給每個原因和結(jié)果賦予一個標(biāo)識符。

(2)

分析軟件規(guī)格說明描述中的語義,找出原因與結(jié)果之間,原因與原因之間對應(yīng)的是什么

關(guān)系?根據(jù)這些關(guān)系,畫出因果圖。

62.利用因果圖產(chǎn)生測試用例的基本步驟(1)分析軟件規(guī)格說明描(3)

由于語法或環(huán)境限制,有些原因與原因之間,原因與結(jié)果之間的組合情況不可能出現(xiàn)。為表明這些特殊情況,在因果圖上用一些記號標(biāo)明約束或限制條件。

(4)

把因果圖轉(zhuǎn)換成決策表。

(5)

把決策表的每一列拿出來作為依據(jù),設(shè)計測試用例。

從因果圖生成的測試用例中包括了所有輸入數(shù)據(jù)的取TRUE與FALSE情況,構(gòu)成的測試用例數(shù)目達(dá)到最少,且測試用例數(shù)目隨輸入數(shù)據(jù)數(shù)目的增加而線性地增加。63.(3)由于語法或環(huán)境限制,有些原因與原因之63.圖5-3因果圖法示例64.圖5-3因果圖法示例64.5.2因果圖法測試用例

某軟件規(guī)格說明中包含這樣的要求:輸入的第一個字符必須是A或B,第二個字符必須是一個數(shù)字,在此情況下進(jìn)行文件的修改;但如果第一個字符不正確,則給出信息L;如果第二個字符不是數(shù)字,則給出信息M。

解法如下:(1)分析程序的規(guī)格說明,列出原因和結(jié)果。原因:C1----第一個字符是AC2----第一個字符是BC3----第二個字符是一個數(shù)字結(jié)果:e1----給出信息L

e2----修改文件

e3----給出信息M(2)將原因和結(jié)果之間的因果關(guān)系用邏輯符號連接起來,得到因果圖,如圖5-4所示。編號為11的中間節(jié)點是導(dǎo)出結(jié)果的進(jìn)一步原因。65.5.2因果圖法測試用例某軟件規(guī)格說明中包含這樣的圖5-4因果圖示例~~66.圖5-4因果圖示例~~66.圖5-5具有E約束的因果圖

因為C1和C2不可能同時為1,即第一個字符不可能既是A又是B,在因果圖上可對其施加E約束,得到具有約束的因果圖,如圖5-5所示?!?7.圖5-5具有E約束的因果圖因為C1和C2不可能同時為1(3)將因果圖轉(zhuǎn)換成決策表,如表5-1所示。(4)設(shè)計測試用例。表5-1中的前兩種情況,因為原因1和原因2不可能同時為1,所以應(yīng)排除這兩種情況。根據(jù)此表,可以設(shè)計出6個測試用例,如表5-2所示。表5-1決策表√68.(3)將因果圖轉(zhuǎn)換成決策表,如表5-1所示。表5-1決策表表5-2測試用例69.表5-2測試用例69.

例2

:某電力公司有A、B、C、D四類收費標(biāo)準(zhǔn),并規(guī)定:居民用電<100度/月按A類收費≥100度/月按B類收費動力用電<10000度/月,非高峰,B類收費≥10000度/月,非高峰,C類收費

<10000度/月,高峰,C類收費≥10000度/月,高峰,D類收費70.例2:某電力公司有A、B、C、D四類收費標(biāo)準(zhǔn),并規(guī)定:7

輸入條件(原因)輸出動作(后果)c1——居民用電e1——按A類收費c2——動力用電e2——按B類收費c3——<100度/月e3——按C類收費c4——<10000度/月e4——按D類收費c5——高峰用電

設(shè)計測試用例的步驟:1.列舉所有存在的輸入條件和輸出結(jié)果。2.根據(jù)輸入條件和輸出條件生成決策表。71.輸入條件(原因)輸出動作(后把因果圖轉(zhuǎn)換為決策表組合條件條件(原因)

動作(結(jié)果)e1e2e3c1c2c31234561-11-0-11---11000010000110c41010c50011e4000110010000測試用例----------72.把因果圖轉(zhuǎn)換為決策表組合條件條件動作e1e2e3c1c2c1列居民電,90度/月A2列居民電,110度/月B3列動力電,非高峰,8000度/月B4列動力電,非高峰,1.2萬度/月C5列動力電,高峰,0.9萬度/月C6列動力電,高峰,1.1萬度/月D

條件測試用例預(yù)期結(jié)果組合(輸入數(shù)據(jù))(輸出動作)3.針對決策表的每一列產(chǎn)生一個測試用例。73.1列居民電,90度/月A條件例3,有一個處理單價為5角錢的飲料自動售貨機(jī)軟件,其規(guī)格說明如下:飲料自動售貨機(jī)允許投入5角或1元的硬幣,用戶可通過“橙汁”和“啤酒”按鈕選擇飲料,售貨機(jī)還裝有一個表示“零錢找完”的指示燈,當(dāng)售貨機(jī)中有零錢找時指示燈暗,當(dāng)售貨機(jī)中無零錢找時指示燈亮。當(dāng)用戶投入5角硬幣并押下“橙汁”或“啤酒”按鈕后,售貨機(jī)送出“橙汁”或“啤酒”。當(dāng)用戶投入1元硬幣并押下“橙汁”或“啤酒”按鈕后,如果售貨機(jī)有零錢找,則送出相應(yīng)的飲料,并退還5角硬幣;如果售貨機(jī)沒有零錢找,則飲料不送出,并且退還1元硬幣。74.例3,有一個處理單價為5角錢的飲料自動售貨機(jī)軟件,其規(guī)格說明(1)分析規(guī)格說明,列出原因和結(jié)果

規(guī)格說明中的紅色部分是輸入條件(原因),藍(lán)色部分是輸出條件(結(jié)果)。由于“售貨機(jī)有零錢找”是在投入1元硬幣時判斷是否能找零錢的依據(jù),所以也可把它看作是一個輸入條件,即原因。與之對應(yīng)的結(jié)果是售貨機(jī)指示燈亮(或暗)。75.(1)分析規(guī)格說明,列出原因和結(jié)果

規(guī)格說明中的紅色部分是76.76.77.77.售貨機(jī)有零錢找投入1元硬幣投入5角硬幣押下橙汁按鈕押下啤酒按鈕78.售貨機(jī)有零錢找投入1元硬幣投入5角硬幣押下橙汁按鈕押下啤酒按6.測試方法的選擇為了最大程度地減少測試遺留的缺陷,同時也為了最大限度地發(fā)現(xiàn)存在的缺陷,在測試實施之前,測試工程師必須確定將要采用的測試策略和測試方法,并以此為依據(jù)制定詳細(xì)的測試方案。通常,一個好的測試策略和測試方法必將給整個測試工作帶來事半功倍的效果。如何才能確定好的測試策略和測試方法呢?通常,在確定測試方法時,應(yīng)該遵循以下原則:根據(jù)程序的重要性和一旦發(fā)生故障將造成的損失來確定測試等級和測試重點。認(rèn)真選擇測試策略,以便能盡可能少地使用測試用例,發(fā)現(xiàn)盡可能多的程序錯誤。因為一次完整的軟件測試過后,如果程序中遺留的錯誤過多并且嚴(yán)重,則表明該次測試是不足的,而測試不足則意味著讓用戶承擔(dān)隱藏錯誤帶來的危險,但測試過度又會帶來資源的浪費。因此,測試需要找到一個平衡點。79.6.測試方法的選擇為了最大程度地減少測試遺留的缺陷以下是各種測試方法選擇的綜合策略,可在實際應(yīng)用過程中參考。首先進(jìn)行等價類劃分,包括輸入條件和輸出條件的等價劃分,將無限測試變成有限測試,這是減少工作量和提高測試效率的最有效方法。在任何情況下都必須使用邊界值分析方法。經(jīng)驗表明用這種方法設(shè)計出測試用例發(fā)現(xiàn)程序錯誤的能力最強(qiáng)。對照程序邏輯,檢查已設(shè)計出的測試用例的邏輯覆蓋程度。如果沒有達(dá)到要求的覆蓋標(biāo)準(zhǔn),應(yīng)當(dāng)再補(bǔ)充足夠的測試用例。如果程序的功能說明中含有輸入條件的組合情況,則應(yīng)在一開始就選用決策表法或者因果圖法。80.以下是各種測試方法選擇的綜合策略,可在實際應(yīng)用過程7.小結(jié)

測試用例的設(shè)計方法不是單獨存在的,具體到每個測試項目里都會用到多種方法,每種類型的軟件有各自的特點,每種測試用例設(shè)計的方法也有各自的特點,針對不同軟件如何利用這些黑盒方法是非常重要的,在實際測試中,往往是綜合使用各種方法才能有效提高測試效率和測試覆蓋度,這就需要認(rèn)真掌握這些方法的原理,積累更多的測試經(jīng)驗,以有效提高測試水平。81.7.小結(jié)81.測試的方法與技術(shù)軟件測試的策略和方法靜態(tài)測試方法動態(tài)測試方法人工測試方法計算機(jī)輔助靜態(tài)分析方法白盒測試方法黑盒測試方法82.測試的方法與技術(shù)軟件測試的靜態(tài)測動態(tài)測人工測試方法計算機(jī)輔助

黑盒測試方法是在程序接口上進(jìn)行測試,主要是為了發(fā)現(xiàn)以下錯誤:

是否有不正確或遺漏了的功能?在接口上,輸入能否正確地接受?能否輸出正確的結(jié)果?是否有數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息(例如數(shù)據(jù)文件)訪問錯誤?性能上是否能夠滿足要求?是否有初始化或終止性錯誤?83.黑盒測試方法是在程序接口上進(jìn)行測試,主要是為了發(fā)現(xiàn)以下錯軟件輸入不深入代碼細(xì)節(jié)的測試方法稱為動態(tài)黑盒測試。軟件測試員充當(dāng)客戶來使用。輸出這種方法是把測試對象看做一個黑盒子,測試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能說明。動態(tài)黑盒測試—戴上眼罩測試軟件84.軟件輸入不深入代碼細(xì)節(jié)的測試方法稱為動態(tài)黑盒測試。輸出這種方

1.等價分類法所謂等價分類,就是把所有可能的輸入數(shù)據(jù)(有效的和無效的)劃分成若干個等價類(等價類是指某個輸入域的子集合。在該集合中,各個輸入數(shù)據(jù)對于揭露程序中的錯誤都是等價的)。因此,可以把全部輸入數(shù)據(jù)合理地劃分為若干等價類,在每一個等價類中取一個數(shù)據(jù)作為測試的輸入條件,這樣就可以少量的代表性測試數(shù)據(jù),來取得較好的測試結(jié)果。85.1.等價分類法所謂等價分類,就是把所有可能的Windows計算器程序?qū)嵗治觯?)你測試了1+1,1+2,1+3和1+4之后,還有必要測試1+5和1+6嗎?你能放心地認(rèn)為它們正確嗎?(2)1+15與1+99999999999999999999999999999999有什么區(qū)別呢?(3)測試計算器中“菜單”命令中的復(fù)制功能(單擊復(fù)制命令,在菜單彈出時鍵入c或者C,或者按Ctrl+c,這幾種方法在設(shè)計測試用例時可以縮減為按Ctrl+c組合鍵)注意:在尋找等價類劃分時,考慮把軟件具有相似輸入、相似輸出、相似操作的分在一組,這些組就是等價劃分。86.Windows計算器程序?qū)嵗治鲎⒁猓涸趯ふ业葍r類劃分時,考

是指對于程序的規(guī)格說明來說,是合理的有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用它可以檢驗程序是否實現(xiàn)預(yù)先規(guī)定的功能和性能。

(1)有效等價類

87.是指對于程序的規(guī)格說明來說,是合理的(1)有效等價類

是指對于程序的規(guī)格說明來說,是不合理的、無意義的輸入數(shù)據(jù)構(gòu)成的集合。程序員主要利用這一類測試用例來檢查程序中功能和性能的實現(xiàn)是否不符合規(guī)格說明要求。

(2)無效等價類

88.是指對于程序的規(guī)格說明來說,是不合理(2)無效等價類

劃分等價類不僅要要考慮代表“有效”輸入值的有效等價類,還需考慮代表“無效”輸入值的無效等價類。采用等價分類法要注意以下兩點:

每一無效等價類至少要用一個測試用例,不然就可能漏掉某一類錯誤,但允許若干有效等價類合用同一個測試用例,以便進(jìn)一步減少測試的次數(shù)。

89.劃分等價類不僅要要考慮代表“有效”輸入值采用等價分類法要注如何劃分等價類?有效等價類(合理等價類)無效等價類(不合理等價類)

90.如何劃分等價類?9.劃分等價類的規(guī)則(5個)(1)如果輸入條件規(guī)定了取值范圍,可定義一個有效等價類和兩個無效等價類。例1.1:輸入值是學(xué)生成績,范圍是0~100。0100

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

無效等價類成績<091.劃分等價類的規(guī)則(5個)(1)如果輸入條件規(guī)定了取值范圍, (2)如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了“必須如何”的條件,這時可確立一個有效等價類和一個無效等價類。

例1.2:輸入條件要求:x==5,答案:有效等價類:1個x==5無效等價類:1個:x!=592. (2)如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了“必須(3)在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類。

例1.3:輸入條件要求:x==ture,答案:有效等價類:1個x==ture

無效等價類:1個:x==false93.(3)在輸入條件是一個布爾量的情況下,可確定一個有效等價類和(4)在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個,or關(guān)系),并且程序要對每一個輸入值分別進(jìn)行處理的情況下,可確立n個有效等價類和一無效等價類(and關(guān)系)。

例1.4:輸入條件說明學(xué)歷可為:專科、本科、碩士、博士四種之一。答案:

有效等價類:4個:???、or本科、or碩士、or博士

無效等價類:1個:!專科and!本科and!碩士and!博士例如,在教師上崗方案中規(guī)定對教授、副教授、講師和助教分別計算分?jǐn)?shù),做相應(yīng)的處理。因此可以確定4個有效等價類為教授、副教授、講師和助教,一個無效等價類,它是所有不符合以上身分的人員的輸入值的集合。94.(4)在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個,or關(guān)系),并(5)在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下(and關(guān)系),可確立一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則,or關(guān)系)。

例1.5:要求輸入必須滿足年齡>18歲,性別=男,地區(qū)=河南的人。答案:有效等價類:1個:年齡>18歲and性別=男and地區(qū)=河南無效等價類:3個:年齡<=18歲,or性別?。侥?,or地區(qū)?。胶幽?5.(5)在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下(and關(guān)系),根據(jù)等價類創(chuàng)建測試用例的步驟建立等價類表,列出所有劃分出的等價類:96.根據(jù)等價類創(chuàng)建測試用例的步驟建立等價類表,列出所有劃分出的等(1)為每一個等價類規(guī)定一個唯一編號;(2)設(shè)計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價類,重復(fù)這一步,直到所有的有效等價類都被覆蓋為止;(3)設(shè)計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重復(fù)這一步,直到所有的無效等價類都被覆蓋為止。從劃分出的等價類中按以下原則設(shè)計測試用例:97.(1)為每一個等價類規(guī)定一個唯一編號;從劃分出的等價類中按以常見等價類劃分測試形式針對是否對無效數(shù)據(jù)進(jìn)行測試,可以將等價類測試分為標(biāo)準(zhǔn)等價類測試和健壯等價類測試。標(biāo)準(zhǔn)等價類測試——不考慮無效數(shù)據(jù)值,測試用例使用每個等價類中的一個值。健壯等價類測試——主要的出發(fā)點是考慮了無效等價類。對有效輸入,測試用例從每個有效等價類中取一個值;對無效輸入,一個測試用例有一個無效值,其他值均取有效值。98.常見等價類劃分測試形式針對是否對無效數(shù)據(jù)進(jìn)行測試,可以將等價使用等價類劃分法測試的實例例1三角形問題分析:在多數(shù)情況下,是從輸入域劃分等價類的,但并非不能從被測程序的輸出域反過來定義等價類,事實上,這對于三角形問題卻是最簡單的劃分方法。在三角形問題中,有四種可能的輸出:等邊三角形、等腰三角形、一般三角形和非三角形。利用這些信息能夠確定下列輸出(值域)等價類。R1={〈a,b,c〉:邊為a,b,c的等邊三角形}R2={〈a,b,c〉:邊為a,b,c的等腰三角形}R3={〈a,b,c〉:邊為a,b,c的一般三角形}R4={〈a,b,c〉:邊為a,b,c不能構(gòu)成三角形}標(biāo)準(zhǔn)等價類測試不考慮無效數(shù)據(jù)值,測試用例使用每個等價類中的一個值。99.使用等價類劃分法測試的實例例1三角形問題18.三角形問題的4個標(biāo)準(zhǔn)等價類測試用例100.三角形問題的4個標(biāo)準(zhǔn)等價類測試用例19.三角形問題的7個健壯等價類測試用例101.三角形問題的7個健壯等價類測試用例20.例2:某報表處理系統(tǒng)要求用戶輸入處理報表的日期,日期限制在2005年1月至2009年12月,即系統(tǒng)只能對該段期間內(nèi)的報表進(jìn)行處理,如日期不在此范圍內(nèi),則顯示輸入錯誤信息。系統(tǒng)日期規(guī)定由年、月的6位數(shù)字字符組成,前四位代表年,后兩位代表月。

如何用等價類劃分法設(shè)計測試用例,來測試程序的日期檢查功能?102.例2:某報表處理系統(tǒng)要求用戶輸入處理報表的日期,日期限制在2步驟:第一步:等價類劃分第二步:為有效等價類設(shè)計測試用例。(多個有效等價類可使用一個測試用例)第三步:為每一個無效等價類設(shè)至少設(shè)計一個測試用例103.步驟:第一步:等價類劃分22.第一步:等價類劃分輸入等價類有效等價類無效等價類

報表日期的類型及長度6位數(shù)字字符(1)有非數(shù)字字符(4)少于6個數(shù)字字符(5)多于6個數(shù)字字符(6)年份范圍在2005~2009之間(2)小于2005(7)大于2009(8)月份范圍在1~12之間(3)“報表日期”輸入條件的等價類表小于1(9)大于12(10)104.第一步:等價類劃分輸入等價類有效等價類第二步:為有效等價類設(shè)計測試用例對表中編號為1,2,3的3個有效等價類用一個測試用例覆蓋:

測試數(shù)據(jù)期望結(jié)果覆蓋范圍200705等價類(1)(2)(3)輸入有效105.第二步:為有效等價類設(shè)計測試用例對表中編號為1,2,3測第三步:為每一個無效等價類設(shè)至少設(shè)計一個測試用例

不能出現(xiàn)相同的測試用例

測試數(shù)據(jù)期望結(jié)果覆蓋范圍001MAY等價類(4)輸入無效20065等價類(5)輸入無效2007005等價類(6)輸入無效200405等價類(7)輸入無效201005等價類(8)輸入無效200800等價類(9)輸入無效200613等價類(10)輸入無效

本例的10個等價類至少需要8個測試用例106.第三步:為每一個無效等價類設(shè)至少設(shè)計一個測試用例不能出現(xiàn)相同例3.在某網(wǎng)站申請免費信箱時,要求用戶必須輸入用戶名、密碼及確認(rèn)密碼,對每一項輸入條件的要求如下:用戶名要求為4位以上,16位以下,使用英文字母、數(shù)字、“-”、“_”,并且首字符必須為字母或數(shù)字;密碼要求為6~16位之間,只能使用英文字母、數(shù)字以及“-”、“_”,并且區(qū)分大小寫。分析如下:分析程序的規(guī)格說明,列出等價類表(包括有效等價類和無效等價類),如表4-5所示。107.例3.在某網(wǎng)站申請免費信箱時,要求用戶必須輸入用戶名、密碼及表4-5等價類表108.表4-5等價類表27.根據(jù)上述等價類表,設(shè)計測試用例如表4-6所示。表4-6測試用例109.根據(jù)上述等價類表,設(shè)計測試用例如表4-6所示。表4-6測試?yán)?.保險公司計算保費費率的程序某保險公司的人壽保險的保費計算方式為:投保額×保險費率其中,保險費率依點數(shù)不同而有別,10點及10點以上保險費率為0.6%,10點以下保險費率為0.1%;而點數(shù)又是由投保人的年齡、性別、婚姻狀況和撫養(yǎng)人數(shù)來決定,具體規(guī)則如下:110.例4.保險公司計算保費費率的程序29.(1)分析程序規(guī)格說明中給出和隱含的對輸入條件的要求,列出等價類表(包括有效等價類和無效等價類)。年齡:一位或兩位非零整數(shù),值的有效范圍為1~99性別:一位英文字符,只能取值‘M’或’F’婚姻:字符,只能取值‘已婚’或‘未婚’撫養(yǎng)人數(shù):空白或一位非零整數(shù)(1~9)點數(shù):一位或兩位非零整數(shù),值的范圍為1~99(2)根據(jù)(1)中的等價類表,設(shè)計能覆蓋所有等價類的測試用例。111.(1)分析程序規(guī)格說明中給出和隱含的對輸入條件的要求,列出等112.31.113.32.2.邊界值分析法(BoundaryValueAnalysis)軟件邊界與懸崖很類似測試內(nèi)點測試外點被測試子域114.2.邊界值分析法(BoundaryValueAnaly邊界值分析法與等價類劃分法區(qū)別(1)邊界值分析不是從某等價類中隨便挑一個作為代表,而是使這個等價類的每個邊界都要作為測試條件。(2)邊界值分析不僅考慮輸入條件,還要考慮輸出空間產(chǎn)生的測試情況(NextDate函數(shù)用例)。115.邊界值分析法與等價類劃分法區(qū)別34.

采用邊界值分析法來選擇測試用例,可使得被測程序能在邊界值及其附近運行,從而更有效地暴露出程序中潛藏的錯誤。邊界值分析法116.采用邊界值分析法來選擇測試用例,可使邊界值分析法35.

邊界值分析法邊界值分析法是對等價類劃分方法的補(bǔ)充。人們從長期的測試工作經(jīng)驗得知,大量的錯誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。因此針對各種邊界情況設(shè)計測試用例,可以查出更多的錯誤。邊界值分析的基本思想是把測試的重點放在各個等價類的邊界上,使用在最小值、略小于最小值、略高于最小值、正常值、最大值、略低于最大值和略超過最大值處的值做為測試數(shù)據(jù),并據(jù)此設(shè)計出相應(yīng)的測試用例。117.邊界值分析法邊界值分析法是對等價類劃分方法的補(bǔ)充。36.

比如,在做三角形計算時,要輸入三角形的三個邊長:A、B和C。我們應(yīng)注意到這三個數(shù)值應(yīng)當(dāng)滿足

A>0、B>0、C>0、A+B>C、A+C>B、B+C>A,才能構(gòu)成三角形。但如果把六個不等式中的任何一個大于號“>”錯寫成大于等于號“≥”,那就不能構(gòu)成三角形。問題恰出現(xiàn)在容易被疏忽的邊界附近。118.比如,在做三角形計算時,要輸入三角形的三個邊長:A、B和1:RemCreata10elementintegerarray2:RemInitializeeachelementto-13:Dimdata(10)AsInteger4:DimiAsInteger5:Fori=1To106:data(i)=-17:NextI8:End演示邊界條件缺陷的簡單BASIC程序119.1:RemCreata10element

邊界值設(shè)計原則(1)如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個范圍的邊界的值,以及剛剛超越這個范圍邊界的值作為測試輸入數(shù)據(jù)。例如,如果程序的規(guī)格說明中規(guī)定:“重量在10公斤至50公斤范圍內(nèi)的郵件,其郵費計算公式為…

”。作為測試用例,我們應(yīng)取10及50,還應(yīng)取10.01,49.99,9.99及50.01等。120.邊界值設(shè)計原則(1)如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)(2)如果輸入條件規(guī)定了值的個數(shù),則用最大個數(shù)、最小個數(shù)、比最小個數(shù)少一、比最大個數(shù)多一的數(shù)作為測試數(shù)據(jù)。例如,一個輸入文件應(yīng)包括1-255個記錄,則測試用例可取1和255,還應(yīng)取0及256等。121.(2)如果輸入條件規(guī)定了值的個數(shù),則用最大個數(shù)、最

3.將規(guī)則1和2應(yīng)用于輸出條件,即設(shè)計測試用例使輸出值達(dá)到邊界值及其左右的值。例如,一程序?qū)儆谇閳髾z索系統(tǒng),要求每次”最少顯示1條、最多顯示4條情報摘要”,這時我們應(yīng)考慮的測試用例包括1和4,還應(yīng)包括0和5等。再如,一個學(xué)生成績管理系統(tǒng)規(guī)定,只能查詢95-98級大學(xué)生的各科成績,可以設(shè)計測試用例,使得查詢范圍內(nèi)的某一屆或四屆學(xué)生的學(xué)生成績,還需設(shè)計查詢94級、99級學(xué)生成績的測試用例(不合理輸出等價類)。由于輸出值的邊界不與輸入值的邊界相對應(yīng),所以要檢查輸出值的邊界不一定可能,要產(chǎn)生超出輸出值之外的結(jié)果也不一定能做到,但必要時還需試一試。122.3.將規(guī)則1和2應(yīng)用于輸出條件,即設(shè)計測試用例使輸(4)如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合(如順序文件、線性表等),則應(yīng)選取集合的第一個元素和最后一個元素作為測試用例。

(5)如果程序中使用了一個內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測試用例。

例如,如果程序中定義了一個數(shù)組,其元素下標(biāo)的下界是0,上界是100,那么應(yīng)選擇達(dá)到這個數(shù)組下標(biāo)邊界的值,如0與100,作為測試用例。(6)分析規(guī)格說明,找出其他可能的邊界條件。123.(4)如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合(如順程序中判斷輸入日期(年月)是否有效,假設(shè)使用如下語句:IF(ReportDate<=MaxDate)AND(ReportDate>=MinDate)THEN產(chǎn)生指定日期報表ELSE顯示錯誤信息ENDIF如果將程序中的“<=”誤寫為“<”,則上例的等價類劃分中所有測試用例都不能發(fā)現(xiàn)這一錯誤,采用邊界值分析法的測試用例如下表所示。對上述報表處理系統(tǒng)中的報表日期輸入條件,以下用邊界值分析設(shè)計測試用例。124.程序中判斷輸入日期(年月)是否有效,假設(shè)使用如下語句:I輸入條件報表日期的類型及長度1個數(shù)字字符5個數(shù)字字符7個數(shù)字字符有1個非數(shù)字字符全部是非數(shù)字字符6個數(shù)字字符顯示出錯顯示出錯顯示出錯顯示出錯顯示出錯輸入有效日期范圍月份范圍“報表日期”邊界值分析法測試用例測試用例說明測試數(shù)據(jù)期望結(jié)果選取理由52006520070052008.5MAY---200605月份為1月月份為12月月份<1月份>12200501200512200500200513200501200912200500200913輸入有效輸入有效顯示出錯顯示出錯輸入有效輸入有效顯示出錯顯示出錯在有效范圍邊界上選取數(shù)據(jù)僅有1個合法字符比有效長度少1比有效長度多1只有1個非法字符6個非法字符類型及長度均有效最小日期最大日期剛好小于最小日期剛好大于最大日期最小月份最大月份剛好小于最小月份剛好大于最大月份125.輸入報表日1個數(shù)字字符顯示出錯日期月份“報表日期”邊界值分析

邊界值分析法與等價類劃分法比較

(1)等價分類法的測試數(shù)據(jù)是在各個等價類允許的值域內(nèi)任意選取的,而邊界值分析的測試數(shù)據(jù)必須在邊界值附近選取。(2)一般地說,用邊界值分析法設(shè)計的測試用例比等價分類法的代表性更廣,發(fā)現(xiàn)錯誤的能力也更強(qiáng)。但是對邊界的分析與確定比較復(fù)雜,要求測試人員具有更多的經(jīng)驗和創(chuàng)造性。(3)還需指出,有些包含的邊界情況比較簡單,只需要分析輸入等價類。在有些情況下,除了考察輸入值邊界外,還需要考察輸出值和其他可能存在的邊界。126.45.例:假定被測程序是一個計算x的正弦值sin(x),其輸出具有3個邊界值-1、0、1。在選擇測試用例時,應(yīng)使x的值分別產(chǎn)生上述的3種輸出邊界值,即選取-∏/2、0、∏/2作為x的測試數(shù)據(jù)。127.例:假定被測程序是一個計算x的正弦值sin(x),其輸出具有3.錯誤猜測法

所謂猜測,就是猜測被測程序在哪些地方容易出錯,然后針對可能的薄弱環(huán)節(jié)來設(shè)計測試用例。顯然它比前兩種方法更多地依靠測試人員的直覺與經(jīng)驗。所以一般都先用前兩方法設(shè)計測試用例,然后再用猜測法去補(bǔ)充一些例子作為輔助的手段。錯誤猜測法128.3.錯誤猜測法所謂猜測,就是猜測被測程序在哪些地129.48.錯誤推測法的基本思想是:列舉出程序中所有可能有的錯誤和容易發(fā)生錯誤的特殊情況,根據(jù)它們選擇測試用例。顯然,它比前兩種方法更多地依靠測試人員的直覺和經(jīng)驗。所以,一般都先用前兩種方法設(shè)計測試用例,然后用猜錯法補(bǔ)充一些例子作為輔助手段。根據(jù)經(jīng)驗來設(shè)計測試用例的方法:例如,數(shù)據(jù)測試中的:缺省值空白空值零值無130.錯誤推測法的基本思想是:列舉出程序中所有可能有的錯誤和容易發(fā)又如輸入、輸出數(shù)據(jù)為零是容易發(fā)生錯誤的情況;再如,輸入表格為空或輸入表格只有一行是容易出錯的情況等。例如對于一個排序程序,列出以下幾項需特別測試的情況:(1)輸入表為空。(2)輸入表只含一個元素。(3)輸入表中所有元素均相同。(4)輸入表中已排好序。仍以上述的報表日期為例,在已經(jīng)用等價分類法和邊界值分析發(fā)設(shè)計過測試用例的基礎(chǔ)上,還可用錯誤猜測法補(bǔ)充一些測試用例,例如:報表日期為:“0”漏送“報表日期”年月次序顛倒,例如將“200112”誤輸為“122001”131.又如輸入、輸出數(shù)據(jù)為零是容易發(fā)生錯誤的情況;再如,輸入表4.決策表法

4.1決策表法決策表通常由四個部分組成,如圖4-1所示。條件樁:列出了問題的所有條件,通常認(rèn)為列出的條件的先后次序無關(guān)緊要。動作樁:列出了問題規(guī)定的可能采取的操作,這些操作的排列順序沒有約束。條件項:針對條件樁給出的條件列出所有可能的取值。動作項:與條件項緊密相關(guān),列出在條件項的各組取值情況下應(yīng)該采取的動作。規(guī)則:一種條件取值組合和與其對應(yīng)的動作組合(即判定表中貫穿條件項和動作項的一列)構(gòu)成了判定表中的一個規(guī)則。條件取值組合的數(shù)目就是規(guī)則的數(shù)目。132.4.決策表法4.1決策表法51.圖4-1決策表的組成133.圖4-1決策表的組成52.建立決策表的步驟:①列出條件樁和動作樁。②確定規(guī)則的個數(shù),用來為規(guī)則編號。若有n個原因,由于每個原因可取0或1,故有2的n次方個規(guī)則。③完成所有條件項的填寫。④完成所有動作項的填寫。⑤合并相似規(guī)則,用以對初始決策表進(jìn)行簡化(見書P56)。⑥建立了決策表后,可針對決策表中的每一列有效規(guī)則設(shè)計一個測試用例,用以對程序進(jìn)行黑盒測試。134.建立決策表的步驟:53.決策表最突出的優(yōu)點:能夠?qū)?fù)雜的問題按照各種可能的情況全部列舉出來,簡明并避免遺漏。因此,利用決策表能夠設(shè)計出完整的測試用例集合。運用決策表設(shè)計測試用例,可以將條件理解為輸入,將動作理解為輸出。4.2實例分析舉例:以下列問題為例給出構(gòu)造決策表的具體過程。如果某產(chǎn)品銷售好并且?guī)齑娴?,則增加該產(chǎn)品的生產(chǎn);如果該產(chǎn)品銷售好,但庫存量不低,則繼續(xù)生產(chǎn);若該產(chǎn)品銷售不好,但庫存量低,則繼續(xù)生產(chǎn);若該產(chǎn)品銷售不好,且?guī)齑媪坎坏?,則停止生產(chǎn)。135.決策表最突出的優(yōu)點:能夠?qū)?fù)雜的問題按照各種可能的情況全部列表4-2決策表解法如下:確定規(guī)則的個數(shù)。對于本題有2個條件(銷售、庫存),每個條件可以有兩個取值,故有22=4種規(guī)則。列出所有的條件樁和動作樁。填入條件項。填入動作項,得到初始決策表,如表4-2所示。136.表4-2決策表解法如下:55.5.因果圖法

因果圖法是借助圖形來設(shè)計測試用例的一種系統(tǒng)方法。它適用于被測程序具有多種輸入條件,程序的輸出又依賴于輸入條件的各種組合的情況。因果圖是一種簡化了的邏輯圖,它能直觀地表明程序輸入條件(原因)和輸出動作(結(jié)果)之間的相互關(guān)系。5.1因果圖法137.5.因果圖法因果圖法是借助圖形來設(shè)計測試用例的一在等價類劃分方法和邊界值方法中未考慮輸入條件的各種組合,當(dāng)輸入條件比較多時,輸入條件組合的數(shù)目會相當(dāng)大。因果圖法是一種幫助人們系統(tǒng)地選擇一組高效測試用例的方法,它既考慮了輸入條件的組合關(guān)系,又考慮了輸出條件對輸入條件的依賴關(guān)系,即因果關(guān)系,其測試用例發(fā)現(xiàn)錯誤的效率比較高。因果圖方法的特點是:考慮輸入條件的組合關(guān)系;考慮輸出條件對輸入條件的依賴關(guān)系,即因果關(guān)系;測試用例發(fā)現(xiàn)錯誤的效率高;能檢查出功能說明中的某些不一致或遺漏。138.在等價類劃分方法和邊界值方法中未考慮輸入條件的各種組合,當(dāng)輸在因果圖中出現(xiàn)的基本符號在因果圖中使用4種符號分別表示4種因果關(guān)系,如圖5-1所示。用直線連接左右節(jié)點,其中左節(jié)點ci表示輸入狀態(tài)(或稱原因),右節(jié)點ei表示輸出狀態(tài)(或稱結(jié)果)。ci和ei都可取值0或1,0表示某狀態(tài)不出現(xiàn),1表示某狀態(tài)出現(xiàn)。主要的原因和結(jié)果之間的關(guān)系有:

(a)恒等(b)非

(c)或(d)與圖5-1因果圖的基本符號139.在因果圖中出現(xiàn)的基本符號(a)恒圖中左邊的結(jié)點表示原因,右邊的結(jié)點表示結(jié)果原因和結(jié)果之間的關(guān)系有:恒等:若c1=1,則e1=1;若c1=0,則e1=0非:若c1=1,則e1=0;若c1=0,則e1=1或:若c1=1或c2=1或c3=1,則e1=1;否則e1=0與:若c1=c2=c3=1,則e1=1;否則e1=0畫因果圖時原因在左,結(jié)果在右,由上向下排列,并根據(jù)功能說明中規(guī)定的原因和結(jié)果之間的關(guān)系,用上述符號連接起來。必要時還可以引入一些中間結(jié)點。140.圖中左邊的結(jié)點表示原因,右邊的結(jié)點表示結(jié)果59.表示約束條件的符號

為了表示原因與原因之間,結(jié)果與結(jié)果之間可能存在的約束條件,在因果圖中可以附加一些表示約束條件的符號。見圖5-2.圖5-2約束符號141.表示約束條件的符號

為了表示原因與原因之間,結(jié)果與結(jié)果圖中互斥、包含、唯一、要求是對原因的約束,屏蔽是對結(jié)果的約束互斥:表示a、b、c中至多只有一個為1,即

溫馨提示

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

評論

0/150

提交評論