軟件測試-測試用例概述補充_第1頁
軟件測試-測試用例概述補充_第2頁
軟件測試-測試用例概述補充_第3頁
軟件測試-測試用例概述補充_第4頁
軟件測試-測試用例概述補充_第5頁
已閱讀5頁,還剩135頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1測試用例設(shè)計概述測試用例的定義測試用例的重要性好測試用例的特點設(shè)計測試用例的基本準則設(shè)計測試用例的著眼點測試用例的編寫標(biāo)準測試用例設(shè)計的誤區(qū)2測試用例設(shè)計概述什么是軟件測試用例(1)測試用例是為特定的目的而設(shè)計的一組測試輸入、執(zhí)行條件和預(yù)期的結(jié)果。(2)測試用例是執(zhí)行的最小實體。3測試用例設(shè)計概述測試用例的重要性(待刪)有效性可復(fù)用性易組織性可評估性可管理性4測試用例設(shè)計概述好測試用例的特點1.完整的完整性是對測試用例最基本的要求,尤其是一些基本功能項上,如果有遺漏,那將是不可原諒的。完整性還體現(xiàn)在臨界測試、壓力測試、性能測試等方面,這方面測試用例也要能夠涉及到。2.準確測試者按照測試用例的輸入一步步測試完成后,要能夠根據(jù)測試用例描述的輸出得出正確的結(jié)論,不能出現(xiàn)模糊不清的語言。3.清晰、簡潔好的測試用例描述清晰,每一步都應(yīng)該有響應(yīng)的作用,有很強的針對性,不應(yīng)該出現(xiàn)一些冗繁無用的操作步驟。測試用例不應(yīng)該太簡單,也不能夠太過復(fù)雜,最大操作步驟最好控制在15步之內(nèi)。5測試用例設(shè)計概述5.可維護性由于軟件開發(fā)過程中需求變更等原因的影響,常常需要對測試用例進行修改、增加、刪除等,以便測試用例符合相應(yīng)測試要求。測試用例應(yīng)具備這方面的功能。6.適當(dāng)性測試例應(yīng)該適合特定的測試環(huán)境以及符合整個團隊的測試水平,如純英語環(huán)境下的測試用例最好使用英文編寫。7.可復(fù)用性要求不同測試者在同樣測試環(huán)境下使用同樣測試用例都能得出相同結(jié)論。6測試用例設(shè)計概述8.其他如可追朔性、可移植性也是對編寫測試用例的一個要求。另外,好的測試用例也是最有可能抓住錯誤的;不重復(fù)、多余的;是一組相似測試用例中最有效的;7測試用例設(shè)計概述設(shè)計測試用例的基本準則測試用例的代表性能夠代表并覆蓋各種合理的和不合理的、合法的和非法的、邊界的和越界的以及極限的輸入數(shù)據(jù)、操作和環(huán)境設(shè)置等。測試結(jié)果的可判定性即測試執(zhí)行結(jié)果的正確性是可判定的,每一個測試用例都應(yīng)有相應(yīng)的期望結(jié)果。測試結(jié)果的可再現(xiàn)性即對同樣的測試用例,系統(tǒng)的執(zhí)行結(jié)果應(yīng)當(dāng)是相同的。8測試用例設(shè)計概述設(shè)計測試用例的著眼點根據(jù)產(chǎn)品規(guī)格,測試基本功能;考慮設(shè)計一般用戶(非專業(yè)人員)的使用方案;考慮設(shè)計稀有或特殊的使用方案;與系統(tǒng)其他組成部分的配合(如FAX和上網(wǎng)可能要用到MODEM,測試中考慮對設(shè)備的共享);考慮特殊情況(如內(nèi)存和硬件的沖突等);設(shè)計極端情況(如內(nèi)存泄漏、破壞性測試等);好的測試用例集能花費最小的代價(人力、物力、財力、時間)做最好的測試。9測試用例設(shè)計概述測試用例的編寫標(biāo)準在ANSI/IEEE829-1983標(biāo)準中列出了和測試設(shè)計相關(guān)的測試用例編寫規(guī)范和模板。標(biāo)準模板中主要元素如下:標(biāo)識符——惟一標(biāo)識每一個測試用例測試項——準確的描述所需要測試的項及其特征測試環(huán)境要求——表征執(zhí)行該測試用例需要的測試環(huán)境輸入標(biāo)準——執(zhí)行測試用例的輸入需求(這些輸入可能包括數(shù)據(jù)、文件或者操作)輸出標(biāo)準——按照指定的環(huán)境和輸入標(biāo)準得到的期望輸出結(jié)果測試用例之間的關(guān)聯(lián)——標(biāo)識該測試用例與其它的測試(或其它測試用例)之間的依賴關(guān)系10測試用例設(shè)計概述測試用例示例:對Windows記事本程序進行測試,選取其中的一個測試項——文件菜單欄的測試:測試對象——記事本程序文件菜單欄(測試用例標(biāo)識10000,下同)所包含的子測試用例描述如下:|------------文件/新建(1001)|------------文件/打開(1002)|------------文件/保存(1003)|------------文件/另存為(1004)|------------文件/頁面設(shè)置(1005)|------------文件/打?。?006)|------------文件/退出(1007)選取其中的一個子測試用例——文件/退出(1007)作為例子,測試用例如下表所示。11字段名稱描

述標(biāo)識符1007測試項記事本程序,“文件”菜單欄中的“文件”|“退出”命令的功能測試測試環(huán)境要求Windows2000Professional中文版輸入標(biāo)準(1)打開記事本程序,不輸入任何字符,單擊“文件”|“退出”命令(2)打開記事本程序,輸入一些字符,不保存文件,單擊“文件”|“退出”命令(3)打開記事本程序,輸入一些字符,保存文件,單擊“文件”|“退出”命令(4)打開一個記事本文件(*.txt),不做任何修改,單擊“文件”|“退出”命令(5)打開一個記事本文件,修改后不保存,單擊“文件”|“退出”命令輸出標(biāo)準(1)記事本未做修改,單擊“文件”|“退出”命令,能正確地退出應(yīng)用程序,無提示信息(2)記事本做修改未保存或者另存,單擊“文件”|“退出”命令,會提示“未定標(biāo)題文件的文字已經(jīng)改變,想保存文件嗎?”單擊“是”,Windows將打開“保存”/“另存為”對話框,單擊“否”,文件將不被保存并退出記事本程序,單擊“取消”將返回記事本窗口測試用例間的關(guān)聯(lián)12測試用例設(shè)計概述下表是另一個測試用例示例(登錄功能測試)該測試用例并未涵蓋所有的非法輸入,如非法輸入中可能會有“user=*,pw=*”的組合,對回車的默認操作,空格輸入,對輸入上溢的處理的處理(可能會跳過身份驗證)等等。如果你有興趣,至少可以再補充5-10條左右的輸入組合(當(dāng)然,如果步驟超過15步,用例的易操作性就降低,可以再創(chuàng)建一個測試用例)。13項目/軟件技術(shù)出口合同網(wǎng)絡(luò)申領(lǐng)系統(tǒng)

(企業(yè)端)程序版本

1.0.25功能模塊名

Login編制人

xxx用例編號-TC-TEP_Login_1編制時間

2002.10.12相關(guān)的用例

功能特性

用戶身份驗證

測試目的

驗證是否輸入合法的信息,允許合法登陸,阻止非法登陸

預(yù)置條件

特殊規(guī)程說明

如數(shù)據(jù)庫訪問權(quán)限

參考信息

需求說明中關(guān)于“登陸”的說明測試數(shù)據(jù)

用戶名=yiyh密碼=114操作步驟

操作描述

數(shù)

據(jù)期望結(jié)果

實際結(jié)果

測試狀態(tài)1輸入用戶名稱,按“登陸”按鈕。用戶名=yiyh,密碼為空顯示警告信息“請輸入用戶名和密碼!”

2輸入密碼,按“登陸”按鈕。用戶名為空,密碼=1顯示警告信息“請輸入用戶名和密碼!”

3輸入用戶名和密碼,按“登陸”按鈕。用戶名=yiyh,密碼=2顯示警告信息“請輸入用戶名和密碼!”

4輸入用戶名和密碼,按“登陸”按鈕。用戶名=xxx,密碼=1顯示警告信息“請輸入用戶名和密碼!”

5輸入用戶名和密碼,按“登陸”按鈕。用戶名=xxx,密碼=2顯示警告信息“請輸入用戶名和密碼!”

6輸入用戶名和密碼,按“登陸”按鈕。用戶名=空,密碼=空顯示警告信息“請輸入用戶名和密碼!”

157輸入用戶名和密碼,按“登陸”按鈕。用戶名=yiyh,密碼=1進入系統(tǒng)頁面。

8輸入用戶名和密碼,按“登陸”按鈕。用戶名=Admin,密碼=admin進入系統(tǒng)維護頁面。

9輸入用戶名和密碼,按“登陸”按鈕。用戶名=yiyh',密碼=1顯示警告信息“請輸入用戶名和密碼!”

10輸入用戶名和密碼,按“登陸”按鈕。用戶名=yiyh,密碼=1'顯示警告信息“請輸入用戶名和密碼!”

11輸入用戶名和密碼,按“重置”按鈕。用戶名=yiyh,密碼=1清空輸入信息

測試人員

開發(fā)人員

16測試用例設(shè)計概述測試用例設(shè)計的誤區(qū)能發(fā)現(xiàn)到目前為止沒有發(fā)現(xiàn)的缺陷的用例是好的用例作為測試實施依據(jù)的測試用例,應(yīng)當(dāng)作一個集合來認識,必須要能完整覆蓋測試需求,而不應(yīng)該針對單個的測試用例去評判好壞。測試用例應(yīng)該詳細記錄所有的操作信息,使一個沒有接觸過系統(tǒng)的人員也能進行測試測試用例維護費用太高,測試資源難保證測試用例設(shè)計是一勞永逸的事情測試用例是動態(tài)的,一旦測試環(huán)境、需求、設(shè)計、實現(xiàn)發(fā)生了變化,測試用例都需要相應(yīng)發(fā)生變化17測試用例設(shè)計概述測試用例不應(yīng)該包含實際的數(shù)據(jù)測試用例是“一組輸入、執(zhí)行條件、預(yù)期結(jié)果”、毫無疑問地應(yīng)該包括清晰的輸入數(shù)據(jù)和預(yù)期輸出,沒有測試數(shù)據(jù)的用例最多只具有指導(dǎo)性的意義,不具有可執(zhí)行性。當(dāng)然,測試用例中包含輸入數(shù)據(jù)會帶來維護、與測試環(huán)境同步之類的問題。測試用例中不需要明顯的驗證手段“預(yù)期結(jié)果”的含義應(yīng)不只是程序的可見行為。例如,對一個訂貨系統(tǒng),輸入訂貨數(shù)據(jù),點擊“確定”按鈕后,系統(tǒng)提示“訂貨成功”,這樣是不是一個完整的用例呢?是不是系統(tǒng)輸出的“訂貨成功”就應(yīng)該作為我們唯一的驗證手段呢?顯然不是。訂貨是否成功還需要查看相應(yīng)的數(shù)據(jù)記錄是否更新,因此,在這樣的一個用例中,還應(yīng)該包含對測試結(jié)果的顯式的驗證手段:在數(shù)據(jù)庫中執(zhí)行查詢語句進行查詢,看查詢結(jié)果是否與預(yù)期的一致。黑盒測試

第四章19本章內(nèi)容●三個被測程序●等價類劃分測試●

邊界值分析●決策表測試●其它黑盒測試方法20本章重點●掌握等價類劃分測試方法●掌握邊界值分析方法●

掌握決策表測試方法●

了解因果圖測試方法黑盒測試是從軟件的外部對軟件實施測試,也常形容為閉著眼睛測試。在實踐中,應(yīng)針對軟件開發(fā)項目的具體特點,選擇適當(dāng)?shù)臏y試方法,有效地解決軟件開發(fā)中的測試問題。21輸入輸出4.1三個被測程序在第四章和第五章,將采用三個例子說明各種單元測試方法。這三個例子是:三角形問題;NextDate函數(shù)——邏輯比較復(fù)雜;雇傭金問題——有代表性;這三個例子合在一起,足可以說明軟件測試人員在單元級別上可能會遇到的大多數(shù)問題。4.1.1三角形問題

三角形問題是軟件測試文獻中使用最廣泛的一個例子。

三角形問題:輸入三個整數(shù)a、b和c分別作為三角形的三條邊,程序判斷由這三條邊構(gòu)成的三角形類型是:等邊三角形、等腰三角形、一般三角形或非三角形(不能構(gòu)成一個三角)。三角形問題之所以復(fù)雜,是因為輸入與輸出之間的關(guān)系比較復(fù)雜。三角形問題可以更詳細地描述為:三角形問題:輸入三個整數(shù)a、b和c分別作為三角形的三條邊,要求a、b和c必須滿足以下條件:Con1.1≤a≤100Con4.a(chǎn)<b+cCon2.1≤b≤100Con5.b<a+cCon3.1≤c≤100Con6.c<a+b如果a、b和c滿足Con1、Con2和Con3,則輸出為四種情況之一:1).如果不滿足條件Con4、Con5和Con6中有一個,則程序輸出為“非三角形”。2).如果三條邊相等,則程序輸出為“等邊三角形”。3).如果恰好有兩條邊相等,則程序輸出為“等腰三角形”。4).如果三條邊都不相等,則程序輸出為“一般三角形”。

4.1.2NextDate函數(shù)

NextDate函數(shù)是一個有三個變量month(月份)、day(日期)和year(年)的函數(shù)。輸出為輸入日期后一天的日期。例如,如果輸入為:2012年10月12日,則NextDate函數(shù)的輸出為:2012年10月13日。

要求輸入變量month、day和year都是整數(shù)值,并且滿足以下條件:

Con1.

1≤month≤12Con2.

1≤day≤31

Con3.

1912≤year≤2050NextDate函數(shù)規(guī)格說明可以更具體一些:包括對day、month和year的無效輸入值的響應(yīng)定義,對無效邏輯組合進行定義等。例如對任意年的2月31日的響應(yīng)。如果Con1,Con2或Con3中任何一個條件失效,則NextDate都會產(chǎn)生一個輸出,指明相應(yīng)的變量超出了取值范圍。例如,“month值不在1~12范圍內(nèi)”。存在大量的無效day-month-year的組合。NextDate函數(shù)中復(fù)雜性來源:一是所討論輸人域的復(fù)雜性,一是確定閏年的規(guī)則。一年有365.2422天,因此,閏年被用來解決“額外天”的問題。4.1.3雇傭金問題

第三個例子是一個典型的商務(wù)計算例子,包含了計算和決策,因此引出了許多有意思的測試問題。

前亞利桑那州境內(nèi)的一位步槍銷售商銷售密蘇里州制造的步槍機(lock)、槍托(stock)和槍管(barrel)。槍機賣45美圓、槍托賣30美圓,槍管25美圓。銷售商每月至少要售出一支完整的步槍,制造商的生產(chǎn)限額可提供大多數(shù)銷售商一個月內(nèi)銷售70個槍機、80個槍托和90個槍管。銷售商每訪問一個鎮(zhèn)之后,都給密蘇里州步槍制造商發(fā)封電報,說明那個鎮(zhèn)出售的槍機、槍托和槍管數(shù)量。月末,銷售商發(fā)出-1個槍機被售出,表明一個月結(jié)束,這樣步槍制造商就知道當(dāng)月的銷售情況,并計算銷售商的雇傭金。銷售商的雇傭金計算如下:銷售額不到(含)1000美元的部分為10%,1000(不含)~1800(含)美元的部分為15%,超過1800美元的部分為20%。雇傭金程序生成按月份的銷售報告,匯總售出的槍機、槍托和槍管總數(shù),銷售商的總銷售額以及雇傭金。這個問題可以分為三個不同的部分:1)輸人數(shù)據(jù)部分,用來處理輸入數(shù)據(jù)有效性;2)銷售額計算部分;

3)雇傭金計算部分。

4.1.3雇傭金問題4.2等價類劃分測試

等價類劃分是一種典型的黑盒測試方法,該方法完全不考慮程序的內(nèi)部結(jié)構(gòu),只根據(jù)對軟件的要求和說明,即需求規(guī)格說明書,把程序輸入域劃分成若干部分,然后從每個部分中選取少數(shù)代表性數(shù)據(jù)為作測試輸入。使用等價類劃分方法設(shè)計測試用例,必須在分析需求規(guī)格說明的基礎(chǔ)上劃分等價類。4.2.1等價類劃分

等價類劃分把程序的輸入域劃分成若干個互不相交的子集——等價類。所謂等價類是指輸入域的某個集合,等價類的并便是整個輸入域。這對于測試有兩個非常重要的意義:表示整個輸入域提供了一種形式的完備性,而互不相交則可保證一種形式的無冗余性。4.2.1等價類劃分

等價類由等價關(guān)系決定。因此等價類中的元素有一些共同的特點:如果用等價類中的一個元素作為測試數(shù)據(jù)進行測試不能發(fā)現(xiàn)程序中的故障,那么使用集合中的其它元素進行測試也不可能發(fā)現(xiàn)程序故障。

對揭露程序中的故障來說,等價類中的每個元素是等效的。等價類劃分測試的實現(xiàn)分二步進行,一是確定等價類,二是確定測試用例。一、劃分等價類

軟件不能都只接收有效的、合理的數(shù)據(jù),還要經(jīng)受意外的考驗,即接受無效的或不合理的數(shù)據(jù),這樣獲得的軟件才能具有較高的可靠性。確定等價類,是使用等價類測試方法的一個重要問題。

4.2.1等價類劃分●有效等價類:

有效等價類是指對程序規(guī)格說明,是有意義的,合理的輸人數(shù)據(jù)所構(gòu)成的集合。

利用有效等價類,可以檢驗程序是否實現(xiàn)了規(guī)格說明預(yù)先規(guī)定的功能和性能。

在具體問題中,有效等價類可以是一個,也可以是多個。在考慮等價類時,應(yīng)注意區(qū)別有效等價類和無效等價類。4.2.1等價類劃分●無效等價類:

無效等價類是指對程序規(guī)格說明,是不合理或無意義的輸入數(shù)據(jù)所構(gòu)成的集合。

利用無效等價類,可以檢查程序功能和性能的實現(xiàn)是否有不符合規(guī)格說明要求的地方。對于具體的問題,無效等價類至少應(yīng)有一個,也可能有多個。

4.2.1等價類劃分二、設(shè)計測試用例

在設(shè)計測試用例時,應(yīng)同時考慮有效等價類和無效等價類測試用例的設(shè)計。

希望用僅可能少的測試用例,覆蓋所有的有效等價類。但對每一個無效等價類,設(shè)計一個測試用例來覆蓋它。4.2.1等價類劃分根據(jù)已列出的等價類表,按以下步驟確定測試用例:

1)為每個等價類規(guī)定一個唯一的編號。

2)

設(shè)計一個新的測試用例,盡可能多地覆蓋尚未被覆蓋的有效等價類,重復(fù)這一步,直到測試用例覆蓋了所有的有效等價類。

3)

設(shè)計一個新的測試用例,使其覆蓋并且只覆蓋一個還沒有被覆蓋的無效等價類。重復(fù)這一步,直至測試用例覆蓋了所有的無效等價類。

4.2.1等價類劃分

若用一個測試用例檢測多個無效等價類,某些無效等價類可能永遠不會被檢測到。

因為第一個測試可能會屏蔽或終止其他無效等價類的測試執(zhí)行。4.2.1等價類劃分等價類測試也遵循邊界值測試的兩個決定因素:

健壯性和單/多故障假設(shè)。

弱健壯等價類測試——傳統(tǒng)等價類測試形式,關(guān)注無效數(shù)據(jù)值。弱/強

等價類測試健壯/標(biāo)準等價類測試4.2.2常見的等價類測試形式

為便于理解,我們也以一個有兩個輸入變量x1和x2的程序F為例,說明一般等價類測試和健壯等價類測試。

有效等價類因此,變量x1和x2,的無效值分別為:

x1<a,x1>d

和x2<e,x2>g無效等價類4.2.2常見的等價類測試形式假設(shè):輸入變量x1和x2在下列范圍內(nèi)取值:a≤x1≤d,區(qū)間[a,b],(b,c),[c,d]e≤x2≤g,區(qū)間[e,f],[f,g]其中方括號和圓括號分別表示閉區(qū)間和開區(qū)間的端點1.標(biāo)準等價類測試

標(biāo)準等價類測試不考慮無效數(shù)據(jù)值。測試用例使用每個等價類中的一個值。4.2.2常見的等價類測試形式x1有效等價類[a,b],(b,c),[c,d]x2有效等價類[e,f],[f,g]abcdefgx1x2圖4.1標(biāo)準等價類測試用例測試用例的數(shù)量和含最大子集數(shù)目的等價類中的數(shù)目相同。

4.2.2常見的等價類測試形式2.健壯等價類測試健壯源于這種等價類測試考慮了無效等價類。對有效輸入來說,測試用例從每個有效等價類中只取一個值(和標(biāo)準等價類測試一樣)。注意這些測試用例里的每個輸入都是有效的。2.對無效輸入來說,一個測試用例有一個無效值,其它值都取有效值。4.2.2常見的等價類測試形式x1有效等價類[a,b],(b,c),[c,d]x2有效等價類[e,f],[f,g]

x1無效等價類

x1<a,x1>dx2無效等價類

x2<e,x2>g測試用例的數(shù)量3+2*2=7。abcdefgx1x2圖4.2健壯性等價類測試用例4.2.2常見的等價類測試形式

健壯等價類測試有兩個問題:1)規(guī)格說明常常沒有定義無效測試用例所預(yù)期的輸出是什么?2)強類型語言沒有必要考慮無效輸入。測試人員需要花大量時間來定義這些測試用例的輸出。弱健壯等價類測試是FORTRAN和COBOL這樣的語言占統(tǒng)治地位的產(chǎn)物。事實上,正是由于經(jīng)常出現(xiàn)輸入無效值這樣的錯誤,才導(dǎo)致了強類型語言的出現(xiàn)。4.2.2常見的等價類測試形式1.三角形問題的等價類測試用例(1)傳統(tǒng)等價類劃分測試用例設(shè)計

在三角形問題中,輸入條件要求:

4.2.3等價類劃分測試舉例

●整數(shù);●三個數(shù);●取值在1到100之間4.2.3等價類劃分測試舉例

仔細分析三角形問題,可得出其等價類表。表4-2三角形問題的等價類1

輸入三個整數(shù)有效等價類號碼無效等價類號碼整數(shù)1一邊為非整數(shù)二邊為非整數(shù)三邊均為非整數(shù)456三個數(shù)2只有一條邊只有二條邊多余三條邊7893一邊為零二邊為零三邊為零101112一邊<零二邊<零三邊<零131415一邊>100二邊>100三邊>1001617184.2.3等價類劃分測試舉例

覆蓋無效等價類的測試用例見表4-3所示。表4-3三角形問題的無效等價類測試用例abc覆蓋的等價類abc覆蓋的等價類1.5,4,540,0,0123.5,2.5,55-3,4,6132.5,4.5,5.562,-7,-51437-3,-5,-7154,58101,4,8162,3,4,593,101,101173,0,810101,101,101180,6,011(2)標(biāo)準和健壯等價類劃分測試用例設(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不能形成三角形}4.2.3等價類劃分測試舉例

四個標(biāo)準等價類測試用例是:

測試用例abc預(yù)期輸出Test1Test2Test3Test4523452415352等邊三角形等腰三角形一般三角形非三角形4.2.3等價類劃分測試舉例

考慮a,b,c的無效值產(chǎn)生了下面7個健壯等價類測試用例,如下表所示。表4-5三角形問題的7個健壯等價類測試用例

測試用例abc預(yù)期輸出Test1Test2Test3Test4Test5Test6Test73-1551015545-1551015555-155101一般三角形a值不在允許的范圍內(nèi)b值不在允許的范圍內(nèi)c值不在允許的范圍內(nèi)a值不在允許的范圍內(nèi)b值不在允許的范圍內(nèi)c值不在允許的范圍內(nèi)4.2.3等價類劃分測試舉例2.NextDate函數(shù)的等價類測試用例設(shè)計NextDate是一個含三個變量—month,day,year的函數(shù)。有效值區(qū)間定義如下:

M1={month:1≤month≤12}D1={day:1≤day≤31}Y1={year:1912≤year≤2050}無效等價類是:M2={month:month<1}M3={month:month>12}D2={day:day<1}D3={day:day>31}Y2={year:year<1912}Y3={year:year>2050}NextDate函數(shù)可以很好地說明選擇等價關(guān)系的技巧。

2.NextDate函數(shù)的等價類測試用例設(shè)計只有一個標(biāo)準等價類測試用例:

CaseIDMonthDayYearExpectedOutputTest181619648/17/19642.NextDate函數(shù)的等價類測試用例設(shè)計健壯等價類測試用例:

測試用例MonthDayYear預(yù)期輸出Test1Test2Test3Test4Test5Test6Test78-11388881616168月17日month不在1..12中month不在1..12中day不在1..31中day不在1..31中year不在1912..2012year不在1912..201219641964196419641964191120512.NextDate函數(shù)的等價類測試用例設(shè)計

如果更仔細地選擇等價關(guān)系,可以得到更有用的等價類。假設(shè)下面的等價類:M1={month:monthhas30days}M2={month:monthhas31days}M3={month:monthisFebruary}D1={day:1≤day≤28}D2={day:day=29}D3={day:day=30}D4={day:day=31}Y1={year:year=2000}Y2={year:yearisaleapyear}Y3={year:yearisacommonyear}簡化month的處理對閏年問題

給予更多的注意

2.NextDate函數(shù)的等價類測試用例設(shè)計標(biāo)準等價類測試用例:

機械地選擇輸入值而不考慮定義域,因此沒有考慮兩個不可能出現(xiàn)的日期。

測試用例MonthDayYear預(yù)期輸出Test1Test2Test3Test445241529303120001996200220004/16/20005/30/19962/31/2002(不可能的日期)5/1/2000(不可能的輸入日期)2.NextDate函數(shù)的等價類測試用例設(shè)計健壯等價類測試用例:

測試用例MonthDayYear預(yù)期輸出Test1Test2Test3Test4Test5Test6Test7Test8Test9Test104524-1134526152930311529-132303120001996200220001996200220001996191120514/16/20005/30/19962/31/2002(不可能的日期)5/1/2000(不可能的輸入日期)Month不在有效值域1..12中Month不在有效值域1..12中Day不在有效值域1..31中Day不在有效值域1..31中Year不在有效值域1912..2050中Year不在有效值域1912..2050中3.雇傭金問題的等價類測試用例設(shè)計

傭金問題的輸入定義域很“自然地”受槍機,槍托和槍管的限制而被劃分為3類。

有效等價類是:L1={locks:1≤locks≤70}L2={locks=-1}S1={stocks:1≤stocks≤80}B1={barrels:1≤barrels≤90}無效等價類是:L3={locks:locks=0ORlocks<-1}L4={locks:locks>70}S2={stocks:stocks<1}S3={stocks:stocks>80}B2={barrels:barrels<1}B3={barrels:barrels>90}3.雇傭金問題的等價類測試用例設(shè)計

除了變量名稱和區(qū)間端點以外,其它和第一個版本的NextDate函數(shù)一樣。因此,可以設(shè)計一個標(biāo)準等價類測試用例。

Test1:槍機=4,槍托=5,槍管=9

有7個健壯性等價類測試用例如表4-8所示。3.雇傭金問題的等價類測試用例設(shè)計測試用例槍機槍托槍管預(yù)期輸出Test1Test2Test3Test4Test5Test6Test74-1713535353554545-181454555.5槍機值不在允許范圍內(nèi)槍機值不在允許范圍內(nèi)槍托值不在允許范圍內(nèi)槍托值不在允許范圍內(nèi)槍管值不在允許范圍內(nèi)槍管值不在允許范圍內(nèi)955555555-191表4-8雇傭金問題的健壯等價類測試用例3.雇傭金問題的等價類測試用例設(shè)計輸入域等價類不能產(chǎn)生令人滿意的測試用例集合。

考慮在輸出域上定義等價類。銷售額是已售槍機,槍托和槍管的函數(shù):銷售額=45*槍機+30*槍托+25*槍管

可以在傭金域定義三個變量的等價類:S1={<locks,stocks,barrels>:sales≤1000}S2={<locks,stocks,barrels>:1000<sales≤1800}S3={<locks,stocks,barrels>:sales>1800}3.雇傭金問題的等價類測試用例設(shè)計輸出域等價類測試用例:

測試用例LocksStocksBarrelsSalesCommissiontest1test2test35152550015002500501753605152551525表4-9雇傭金問題的輸出域等價類測試用例4.2.4等價類測試的指導(dǎo)方針使用等價類測試時,應(yīng)注意如下幾點:●如果執(zhí)行語言是強類型的,則沒有必要使用健壯等價類測試?!袢绻e誤輸入檢查非常重要,則應(yīng)進行健壯等價類測試?!袢绻斎霐?shù)據(jù)以離散值區(qū)間或集合的形式定義,則等價類測試是合適的?!裨诎l(fā)現(xiàn)“合適”的等價關(guān)系之前,可能需要進行多次嘗試。4.3邊界值分析

使用邊界值分析方法設(shè)計測試用例,首先應(yīng)確定邊界情況。輸入等價類與輸出等價類的邊界,就是應(yīng)著重測試的邊界情況。邊界值分析方法的基本思想是,選取正好等于,剛剛大于,或剛剛小于邊界的值做為測試數(shù)據(jù),而不是選取等價類中的典型值或任意值做為測試數(shù)據(jù)。

人們從長期的測試工作經(jīng)驗得知,大量的故障發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。實踐表明,在設(shè)計測試用例時,對邊界附近的處理必須給予足夠的重視,為檢驗邊界附近的處理專門設(shè)計測試用例,常??梢匀〉昧己玫臏y試效果。4.3.1邊界條件

邊界條件是一些特殊情況。程序在處理大量中間數(shù)值時都是正確,但是在邊界處可能出現(xiàn)錯誤。

比如,在作三角形計算時,要輸入三角形的三個邊長:a、b和a。當(dāng)滿足a+b>c、a+c>b及b+c>a才能構(gòu)成三角形。但如果把三個不等式的任何一個大于號“>”錯寫成大于等于號“≥”,那就無法構(gòu)成三角形了。4.3.1邊界條件再如:下面是一個極簡單的程序。

/*Createa10elementintegerarray*//*Initiatizeeachelementto–1*/main(){intdata[10];inti;For(i=1;i<10;i++)data(i)=-1;}

這段代碼的意圖是創(chuàng)建包含10個元素的數(shù)組,并為數(shù)組中的每一個元素賦初值-1,即數(shù)組中從第1個元素到第10個元素被賦予數(shù)值-1。

4.3.1邊界條件

但程序執(zhí)行完畢,數(shù)組值如下:

data(0)=0;data(1)=-1;data(2)=-1;data(3)=-1;data(4)=-1;data(5)=-1;data(6)=-1;data(7)=-1;data(8)=-1;data(9)=-1;data(10)=-1

此時data(0)的值是0,而不是-1。如果程序員以后忘記了,或者其他程序員不知道這個數(shù)組只對data(1)到data(10)進行了初始化,那么他就可能會用到數(shù)組的第1個元素data(0),以為它的值是-1。

4.3.1邊界條件

剛開始時,可能意識不到一組給定數(shù)據(jù)包含了多少邊界。但是仔細分析總可以找到一些不明顯的、有趣的和可能產(chǎn)生軟件故障的邊界。實際上,邊界條件就是軟件操作界限所在的邊緣條件。一些可能與邊界有關(guān)的數(shù)據(jù)類型有:數(shù)值,速度,字符,地址,位置,尺寸,數(shù)量,等等。同時,考慮這些類型的下述特征:

第一個/最后一個,最小值/最大值,開始/完成,超過/在內(nèi),空/滿,最短/最長,最慢/最快,最早/最遲,最高/最低,相鄰/最遠,等等。4.3.2次邊界條件

有些邊界在軟件內(nèi)部,用戶幾乎看不到,但是軟件測試仍有必要對這些邊界條件進行檢查。這樣的邊界條件稱為次邊界條件或者內(nèi)部邊界條件。

尋找次邊界條件比較困難,雖然不要求軟件測試員成為程序員或者具有閱讀源代碼的能力,但是要求軟件測試員能大體了解軟件的工作方式。4.3.2次邊界條件1、2的冪次方表4-102的冪次方所表示的術(shù)語范圍位0或1半字節(jié)0~15字節(jié)0~255字0~65,535或0~4,294,967,295千1024兆1,048,576億1,073,741,8244.3.2次邊界條件

例如,假設(shè)某種通訊協(xié)議支持256條命令,為了提高數(shù)據(jù)傳輸效率,通訊軟件總是將常用的信息壓縮到一個很小的單元中,必要時再擴展為大一些的單元。比如將常用的15條命令壓縮為一個半字節(jié)數(shù)據(jù),在遇到第16到256之間的命令時,軟件轉(zhuǎn)而發(fā)送一個一字節(jié)的命令。用戶只知道可以執(zhí)行256條命令,并不知道軟件根據(jù)半字節(jié)/字節(jié)邊界執(zhí)行了不同的計算和操作。

為了覆蓋所有可能的2的冪次方次邊界,還要考慮臨近半字節(jié)邊界的14,15和16,以及臨近字節(jié)邊界的254,255和256。4.3.2次邊界條件2、ASCII表表4-11部分ASCII值表

字符ASCII值字符ASCII值Null0B66space32Y89/47Z90048[91149‘96250a97957b98:58y121@64z122A65{1234.3.2次邊界條件

表4-11中,0~9的ASCII值是48~57。斜杠字符(/)在數(shù)字0的前面,而冒號字符(:)在數(shù)字9的后面。大寫字母A~Z對應(yīng)65~90。小寫字母對應(yīng)97-~122。這些情況都代表次邊界條件。如果對文本輸入或文本轉(zhuǎn)換軟件進行測試,在考慮數(shù)據(jù)區(qū)間包含哪些值時,參考一下ASCII表是相當(dāng)明智的。例如,如果測試的文本框只接受用戶輸入字符A~Z和a~z,就應(yīng)該在非法區(qū)間中,檢測ASCII表中位于這些字符前后的值——@,[,和{。4.3.2邊界值分析測試

這里討論一個有兩個變量x1,x2的程序F,輸入變量x1和x2在下列范圍內(nèi)取值:

a≤x1≤bc≤x2≤d

區(qū)間[a,b]和[c,d]是x1和x2的值域,強類型語言(例如Ada)允許顯式地定義這種變量值域。事實上,邊界值測試更適于采用非強類型語言編碼的程序。cabdx1x2圖4-3兩個變量程序的輸入域程序F的輸入空間(定義域)如圖4-3所示。帶陰影矩形中的任何點都是程序F的有效輸入。4.3.2邊界值分析測試

邊界值分析的基本思想是利用輸入變量值的最小值,稍大于最小值,正常值,稍小于最大值和最大值。

邊界值分析測試用例的獲得,通過使所有變量取正常值,只使一個變量分別取最小值、略高于最小值、略低于最大值和最大值。4.3.2邊界值分析測試x1abdx2圖4-4有兩個變量程序的邊界值分析測試用例c{<xlnom,x2min>,<xlnom,x2min+>,<xlnom,x2nom>,<xlnom,x2max->,<xlnom,x2max>,<xlmin,x2nom>,<xlmin+,x2nom>,<xlmax,x2nom>,<xlmax+,x2nom>}N個變量,邊界值分析產(chǎn)生4n+1個測試用例。4.3.4健壯性測試

健壯性測試是邊界值分析的一種擴展。

變量除了取min,min+,nom,max-,max五個邊界值外,還要考慮采用一個略超過最大值(max+)以及一個略小于最小值(min-)的取值,看看超過極限值時系統(tǒng)會出現(xiàn)什么情況。abdx2兩個變量程序的健壯性測試用例x1abdx2x1

健壯性測試最有意義的部分不是輸人,而是預(yù)期的輸出,觀察例外情況如何處理。4.3.3邊界值分析舉例

邊界值分析測試用例的獲得,通過使所有變量取正常值,只使一個變量分別取最小值、略高于最小值、略低于最大值和最大值。一、三角形問題的邊界值分析測試用例邊長下界為1,邊長上界可取為100。

測試用例abc預(yù)期輸出Test150501等腰三角形Test250502等腰三角形Test3505050等邊三角形Test4505099等腰三角形Test55050100非腰三角形Test650150等腰三角形Test750250等腰三角形Test8509950等腰三角形Test95010050非三角形Test1015050等腰三角形Test1125050等腰三角形Test12995050等腰三角形Test131005050非三角形表4-邊界值分析測試用例測試用例abc預(yù)期輸出Test150501等腰三角形Test250502等腰三角形Test3505050等邊三角形Test4505099等腰三角形Test55050100非腰三角形Test650150等腰三角形Test750250等腰三角形Test8509950等腰三角形Test95010050非三角形Test1015050等腰三角形Test1125050等腰三角形Test12995050等腰三角形Test131005050非三角形表4-12邊界值分析測試用例測試用例abc預(yù)期輸出Test150501等腰三角形Test250502等腰三角形Test3505050等邊三角形Test4505099等腰三角形Test55050100非腰三角形Test650150等腰三角形Test750250等腰三角形Test8509950等腰三角形Test95010050非三角形Test1015050等腰三角形Test1125050等腰三角形Test12995050等腰三角形Test131005050非三角形表4-邊界值分析測試用例測試用例abc預(yù)期輸出Test150501等腰三角形Test250502等腰三角形Test3505050等邊三角形Test4505099等腰三角形Test55050100非腰三角形Test650150等腰三角形Test750250等腰三角形Test8509950等腰三角形Test95010050非三角形Test1015050等腰三角形Test1125050等腰三角形Test12995050等腰三角形Test131005050非三角形表4-邊界值分析測試用例二、NextDate函數(shù)的測試用例

NextDate函數(shù)是一個有三個變量month(月份)、day(日期)和year(年)的函數(shù)。輸出為輸入日期后一天的日期。

要求輸入變量month、day和year都是整數(shù)值,并且滿足下條件:

Con1.

1≤month≤12Con2.

1≤day≤31Con3.

1912≤year≤2050666661515-112191119121913197520491911年6月16日1911年6月16日1911年6月16日1911年6月16日1911年6月16日測試用例MonthDayYear預(yù)期輸出151515151520502051197519751975197519751975Test1Test2Test3Test4Test5666661911年6月16日1911年6月16日Day不在有效值域1..31中1975年6月2日1975年6月3日1975年7月1日不可能的輸入日期Day不在有效值域1..31中666303132Test6Test7Test8Test9Test10Test11Test12Test13表4-13NextDate函數(shù)健壯性測試用例二、NextDate函數(shù)的測試用例151515測試用例MonthDayYear預(yù)期輸出197519751975197519751975-112month不在有效值域1..12中1975年1月16日1975年2月16日1975年11月16日

1975年12月16日

month不在有效值域1..12中111213151515Test14Test15Test16Test17Test18Test19表4-13NextDate函數(shù)健壯性測試用例二、NextDate函數(shù)的測試用例

雇傭金問題的測試用例生成步槍銷售商銷售密蘇里州制造的步槍機(lock)、槍托(stock)和槍管(barrel)。槍機賣45美圓、槍托賣30美圓,槍管25美圓。銷售商每月至少要售出一支完整的步槍,制造商的生產(chǎn)限額可提供大多數(shù)銷售商一個月內(nèi)銷售70個槍機、80個槍托和90個槍管。銷售商每訪問一個鎮(zhèn)之后,都給密蘇里州步槍制造商發(fā)封電報,說明那個鎮(zhèn)出售的槍機、槍托和槍管數(shù)量。月末,銷售商發(fā)出-1個槍機被售出,表明一個月結(jié)束,這樣步槍制造商就知道當(dāng)月的銷售情況,并計算銷售商的雇傭金。三、傭金問題的測試用例

雇傭金問題的測試用例生成銷售商的雇傭金計算如下:銷售額不到(含)1000美元的部分為10%,1000(不含)~1800(含)美元的部分為15%,超過1800美元的部分為20%。三、傭金問題的測試用例123456789101112131415CaseLocksStocksBarrelsSalesCommComment11125101091010101114181811215109101010111014181712115910101011101014171810012513014550097597095510001025103010451400177517701012.51314.55097.59795.5100103.75104.5106.75160216.25215.5outputminimumoutputminimum+outputminimum+outputminimum+midpointborderpoint-borderpoint-borderpoint-borderpointborderpoint+borderpoint+borderpoint+midpointborderpoint-borderpoint-雇傭金問題輸出邊界值分析測試用例16171819202122232425CaseLocksStocksBarrelsSalesCommComment1718181819487070697018181819184880798080181819181848899090901755180018251830184548007775777077557800213.252202252262298201415141414111420borderpoint-borderpointborderpoint+borderpoint+borderpoint+midpointoutputmaximum-outputmaximum-outputmaximum-outputmaximum雇傭金問題輸出邊界值分析測試用例4.3.3邊界值分析的局限性

基于函數(shù)(程序)輸入定義域的測試方法,是所有測試方法中最基本的。

這類測試方法都有一種假設(shè),即輸入變量是真正獨立的。

如果不能保證這種假設(shè),則這類方法不能產(chǎn)生令人滿意的測試用例。

在所有的黑盒測試方法中,基于決策表的測試是最嚴格,最具有邏輯嚴格性的測試方法。

決策表最突出的優(yōu)點是,它能把復(fù)雜的問題按各種可能的情況一一列舉出來,簡明而易于理解,也可避免遺漏。

因此利用決策表可以設(shè)計出完整的測試用例集合。

4.4決策表測試

在一些數(shù)據(jù)處理問題中,某些操作的實施依賴于多個邏輯條件的取值,也即針對不同邏輯條件組合值,分別執(zhí)行不同的操作。描述不同條件集合下采取行動的若干組合情況。

4.4決策表測試4.4.1

決策表決策表通常由4個部分組成:條件樁部分列出了問題的所有條件

,動作樁則給出了問題規(guī)定的可能采取的操作。

動作項和條件項緊密相關(guān),指出了在條件項的各組取值情況下應(yīng)采取的動作。

4.4決策表測試

在實際使用判定表時,常常先將它簡化。

簡化是以合并相似規(guī)則為目標(biāo)的。

若表中有兩條或多條規(guī)則具有相同的動作,并且在條件項之間存在著極為相似的關(guān)系,便可以設(shè)法將其合并。

4.4決策表測試合并規(guī)則的辦法:“不關(guān)心”條目(don’tcare)條件無關(guān)或條件不適用。4.4決策表測試

1)確定規(guī)則的個數(shù)。每個條件可取兩個取值,故應(yīng)有2n種規(guī)則。

2)列出所有的條件樁和動作樁。

3)填入條件項。

4)填入動作項,這樣便可得到初始決策表。

5)化簡,合并相似規(guī)則后得到?jīng)Q策表。結(jié)合三角形問題給出構(gòu)造決策表的5個步驟:4.4決策表測試c3:a,b,c構(gòu)成一個三角形?c2:a=b?c3:a=c?c4:b=c?a1:非三角形a2:一般三角形a3:等腰三角形a4:等邊三角形a5:不可能N---YYYY表4-18三角問題的決策表YYYNYYNYYYNNYNYYYNYNYNNYYNNN4.4決策表測試合并相似規(guī)則后三角形問題的決策表如下:

如果條件引用了等價類,則決策表會有一種典型的外觀。條件c1:month在M1中?c2:month在M2中?c3:month在M3中?a1a2a3規(guī)則1T--規(guī)則2-T-規(guī)則3--T表4-19條件互斥的決策表M1={month:monthhas30days}M2={month:monthhas31days}M3={month:monthisFebruary}4.4決策表測試c1:a<b+c?c2:b<a+c?c3:c<a+b?c4:a=b?c5:a=c?c6:b=c?a1:非三角形a2:一般三角形a3:等腰三角形a4:等邊三角形a5:不可能F-----TF----表4-20擴展的三角問題的決策表TTF---TTTTTTTTTTTFTTTTFTTTTTFFTTTFTTTTTFTFTTTFFTTTTFFF根據(jù)決策表,可開發(fā)出11個測試用例。4.4決策表測試4.4.2

決策表在黑盒測試中的應(yīng)用用例abc預(yù)期輸出test1412非三角形test2142非三角形test3124非三角形test4555等邊三角形test5???不可能test6???不可能test7223等腰三角形test8???不可能test9232等腰三角形test10322等腰三角形test11345一般三角形表4-21三角形問題的決策表測試用例

選擇NextDate函數(shù)是因為它可以說明輸入域的相關(guān)性問題。決策表可以突出這種依賴關(guān)系。

等價類測試局限性之一是機械地選擇等價類中的輸入值,這可能會產(chǎn)生“奇怪的”測試用例。例如,找出2051年6月31日的下一天。問題由變量相互獨立這個假設(shè)引起。4.4.2

決策表在黑盒測試中的應(yīng)用

如果變量確實是相互獨立的,那么使用等價類的笛卡兒積有意義。如果變量間存在邏輯依賴關(guān)系,那么這些依賴關(guān)系在機械地選取輸入值時可能丟失。決策表方法通過使用“不可能動作”概念表示條件的不可能組合,來強調(diào)這種依賴關(guān)系。

4.4.2

決策表在黑盒測試中的應(yīng)用NextDate函數(shù)能夠使用的操作只有5種:

Day變量+1Month變量+1Day變量復(fù)位

Mongth變量復(fù)位

Year變量+14.4.2

決策表在黑盒測試中的應(yīng)用M1:{month:month有30天}M2:{month:month有31天,12月除外}M3:{month:month是12月)M4:{month:month是2月)D1:{day:1≤day≤27)D2:{day:day:28)D3:{day:day:29)D4:{day:day:30}D5:{day:day:31)Y1:{year:year是閏年}Y2:{year:year不是閏年}4.4.2

決策表在黑盒測試中的應(yīng)用建立決策表

將注意力集中到NextDate函數(shù)的日、月問題上,并仔細研究動作樁,可以在以下等價類集合上建立決策表。NextDate函數(shù)的測試用例

有30天的月份有31天的月份(非12月)12月份不可能規(guī)則可以簡化關(guān)注2月和閏年使用決策表代數(shù)進一步簡化這22個測試用例。

4.4.2

決策表在黑盒測試中的應(yīng)用進一步簡化后的決策表

1-3

4

5

6-9

10

11-14

15

16

17

18

19

20

21,22

條件:

c1:month在

c2:day在

c3:year在

M1

D1,D2,D3

M1

D4

M1

D5

M2

D1,D2,D3,D4

M2

D5

M3

D1,D2,D3,D4

M3

D5

M4

D1

M4

D2

Y1

M4

D2

Y2

M4

D3

Y1

M4

D3

Y2

M4

D4,D5

行為:

a1:不可能

a2:day加1

a3:day復(fù)位

a4:month加1

a5:month復(fù)位

a6:year加1

進一步簡化后的決策表

1-3

4

5

6-9

10

11-14

15

16

17

18

19

20

21,22

條件:

c1:month在

c2:day在

c3:year在

M1

D1,D2,D3

M1

D4

M1

D5

M2

D1,D2,D3,D4

M2

D5

M3

溫馨提示

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

評論

0/150

提交評論