1等價(jià)類劃分方法
1.1定義
是把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分(子集),然后從每一個(gè)子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測(cè)試用例。該方法是一種重要的,常用的黑盒測(cè)試用例設(shè)計(jì)方法。
1.2 劃分等價(jià)類:
等價(jià)類是指某個(gè)輸入域的子集合。在該子集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的,并合理地假定:測(cè)試某等價(jià)類的代表值就等于對(duì)這一類其它值的測(cè)試,因此,可以把全部輸入數(shù)據(jù)合理劃分為若干等價(jià)類,在每一個(gè)等價(jià)類中取一個(gè)數(shù)據(jù)作為測(cè)試的輸入條件就可以用少量代表性的測(cè)試數(shù)據(jù)取得較好的測(cè)試結(jié)果。等價(jià)類劃分可有兩種不同的情況:有效等價(jià)類和無(wú)效等價(jià)類。
有效等價(jià)類是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō)是合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用有效等價(jià)類可檢驗(yàn)程序是否實(shí)現(xiàn)了規(guī)格說(shuō)明中所規(guī)定的功能和性能。
無(wú)效等價(jià)類與有效等價(jià)類的定義恰巧相反。無(wú)效等價(jià)類指對(duì)程序的規(guī)格說(shuō)明是不合理的或無(wú)意義的輸入數(shù)據(jù)所構(gòu)成的集合。對(duì)于具體的問(wèn)題,無(wú)效等價(jià)類至少應(yīng)有一個(gè),也可能有多個(gè)。設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮這兩種等價(jià)類。因?yàn)檐浖粌H要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗(yàn),這樣的測(cè)試才能確保軟件具有更高的可靠性。
1.3 劃分等價(jià)類的標(biāo)準(zhǔn):
完備測(cè)試、避免冗余;
劃分等價(jià)類重要的是:集合的劃分,劃分為互不相交的一組子集,而子集的并是整個(gè)集合;
并是整個(gè)集合:完備性;
子集互不相交:保證一種形式的無(wú)冗余性;
同一類中標(biāo)識(shí)(選擇)一個(gè)測(cè)試用例,同一等價(jià)類中,往往處理相同,相同處理映射到“相同的執(zhí)行路徑”。
1.4 劃分等價(jià)類的方法
在輸入條件規(guī)定了取值范圍或值的個(gè)數(shù)的情況下,則可以確立一個(gè)有效等價(jià)類和兩個(gè)無(wú)效等價(jià)類。如:輸入值是學(xué)生成績(jī),范圍是0~100.

在輸入條件規(guī)定了輸入值的集合或者規(guī)定了“必須如何”的條件的情況下,可確立一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類;
在輸入條件是一個(gè)布爾量的情況下,可確定一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。
在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個(gè)),并且程序要對(duì)每一個(gè)輸入值分別處理的情況下,可確立n個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。
例:輸入條件說(shuō)明學(xué)歷可為:??啤⒈究?、碩士、博士四種之一,則分別取這四種這四個(gè)值作為四個(gè)有效等價(jià)類,另外把四種學(xué)歷之外的任何學(xué)歷作為無(wú)效等價(jià)類。
在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個(gè)有效等價(jià)類(符合規(guī)則)和若干個(gè)無(wú)效等價(jià)類(從不同角度違反規(guī)則)。
在確知已劃分的等價(jià)類中各元素在程序處理中的方式不同的情況下,則應(yīng)再將該等價(jià)類進(jìn)一步的劃分為更小的等價(jià)類。
1.5 設(shè)計(jì)測(cè)試用例
在確立了等價(jià)類后,可建立等價(jià)類表,列出所有劃分出的等價(jià)類輸入條件:有效等價(jià)類、無(wú)效等價(jià)類,然后從劃分出的等價(jià)類中按以下三個(gè)原則設(shè)計(jì)測(cè)試用例:
為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一的編號(hào);
設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋地有效等價(jià)類,重復(fù)這一步,直到所有的有效等價(jià)類都被覆蓋為止;
設(shè)計(jì)一個(gè)新的測(cè)試用例,使其僅覆蓋一個(gè)尚未被覆蓋的無(wú)效等價(jià)類,重復(fù)這一步,直到所有的無(wú)效等價(jià)類都被覆蓋為止。
2 邊界值分析方法
2.1 定義
邊界值分析法就是對(duì)輸入或輸出的邊界值進(jìn)行測(cè)試的一種黑盒測(cè)試方法。通常邊界值分析法是作為對(duì)等價(jià)類劃分法的補(bǔ)充,這種情況下,其測(cè)試用例來(lái)自等價(jià)類的邊界。
2.2 與等價(jià)劃分的區(qū)別
邊界值分析不是從某等價(jià)類中隨便挑一個(gè)作為代表,而是使這個(gè)等價(jià)類的每個(gè)邊界都要作為測(cè)試條件。
邊界值分析不僅考慮輸入條件,還要考慮輸出空間產(chǎn)生的測(cè)試情況。
2.3 邊界值分析方法的考慮
長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)告訴我們,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是發(fā)生在輸入輸出范圍的內(nèi)部。因此針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,可以查出更多的錯(cuò)誤。
使用邊界值分析方法設(shè)計(jì)測(cè)試用例,首先應(yīng)確定邊界情況。通常輸入和輸出等價(jià)類的邊界,就是應(yīng)著重測(cè)試的邊界情況。應(yīng)當(dāng)選取正好等于,剛剛大于或剛剛小于邊界的值作為測(cè)試數(shù)據(jù),而不是選取等價(jià)類中的典型值或任意值作為測(cè)試數(shù)據(jù)。
2.4 常見(jiàn)的邊界值
對(duì)16-bit 的整數(shù)而言32767 和-32768 是邊界
屏幕上光標(biāo)在最左上、最右下位置
報(bào)表的第一行和最后一行
數(shù)組元素的第一個(gè)和最后一個(gè)
循環(huán)的第0 次、第1 次和倒數(shù)第2 次、最后一次
3 錯(cuò)誤推測(cè)方法
3.1 定義
基于經(jīng)驗(yàn)和直覺(jué)推測(cè)程序中所有可能存在的各種錯(cuò)誤, 從而有針對(duì)性的設(shè)計(jì)測(cè)試用例的方法。
3.2 基本思想
列舉出程序中所有可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,根據(jù)他們選擇測(cè)試用例。
4 因果圖方法
4.1 定義
是一種利用圖解法分析輸入的各種組合情況,從而設(shè)計(jì)測(cè)試用例的方法,它適合于檢查程序輸入條件的各種組合情況。
4.2 因果圖法產(chǎn)生的背景
等價(jià)類劃分法和邊界值分析方法都是著重考慮輸入條件,但沒(méi)有考慮輸入條件的各種組合、輸入條件之間的相互制約關(guān)系。這樣雖然各種輸入條件可能出錯(cuò)的情況已經(jīng)測(cè)試到了,但多個(gè)輸入條件組合起來(lái)可能出錯(cuò)的情況卻被忽視了。
如果在測(cè)試時(shí)必須考慮輸入條件的各種組合,則可能的組合數(shù)目將是天文數(shù)字,因此必須考慮采用一種適合于描述多種條件的組合、相應(yīng)產(chǎn)生多個(gè)動(dòng)作的形式來(lái)進(jìn)行測(cè)試用例的設(shè)計(jì),這就需要利用因果圖(邏輯模型)。
4.3 因果圖介紹
4種符號(hào)分別表示了規(guī)格說(shuō)明中向4種因果關(guān)系。

因果圖中使用了簡(jiǎn)單的邏輯符號(hào),以直線聯(lián)接左右結(jié)點(diǎn)。左結(jié)點(diǎn)表示輸入狀態(tài)(或稱原因),右結(jié)點(diǎn)表示輸出狀態(tài)(或稱結(jié)果)。
Ci表示原因,通常置于圖的左部;ei表示結(jié)果,通常在圖的右部。Ci和ei均可取值0或1,0表示某狀態(tài)不出現(xiàn),1表示某狀態(tài)出現(xiàn)。
4.4 因果圖概念
1.關(guān)系
a.恒等:若ci是1,則ei也是1;否則ei為0。
b.非:若ci是1,則ei是0;否則ei是1。
c.或:若c1或c2或c3是1,則ei是1;否則ei為0?!盎颉笨捎腥我鈧€(gè)輸入。
d.與:若c1和c2都是1,則ei為1;否則ei為0?!芭c”也可有任意個(gè)輸入。
2.約束:輸入狀態(tài)相互之間還可能存在某些依賴關(guān)系,稱為約束。例如, 某些輸入條件本身不可能同時(shí)出現(xiàn)。輸出狀態(tài)之間也往往存在約束。在因果圖中,用特定的符號(hào)標(biāo)明這些約束。

輸入條件的約束有以下4類
a.E約束(異):a和b中至多有一個(gè)可能為1,即a和b不能同時(shí)為1。
b.I約束(或):a、b和c中至少有一個(gè)必須是1,即a、b 和c不能同時(shí)為0。
c.O約束(唯一);a和b必須有一個(gè),且僅有1個(gè)為1。
d.R約束(要求):a是1時(shí),b必須是1,即不可能a是1時(shí)b是0。
輸出條件約束類型: 輸出條件的約束只有M約束(強(qiáng)制):若結(jié)果a是1,則結(jié)果b強(qiáng)制為0。
4.5 采用因果圖法設(shè)計(jì)測(cè)試用例的步驟
1.分析軟件規(guī)格說(shuō)明描述中, 那些是原因(即輸入條件或輸入條件的等價(jià)類),那些是結(jié)果(即輸出條件), 并給每個(gè)原因和結(jié)果賦予一個(gè)標(biāo)識(shí)符。
2.分析軟件規(guī)格說(shuō)明描述中的語(yǔ)義,找出原因與結(jié)果之間, 原因與原因之間對(duì)應(yīng)的關(guān)系,根據(jù)這些關(guān)系,畫出因果圖。
3.由于語(yǔ)法或環(huán)境限制, 有些原因與原因之間,原因與結(jié)果之間的組合情況不可能出現(xiàn),為表明這些特殊情況, 在因果圖上用一些記號(hào)表明約束或限制條件。
4.把因果圖轉(zhuǎn)換為判定表。
5.把判定表的每一列拿出來(lái)作為依據(jù),設(shè)計(jì)測(cè)試用例。
5 判定表驅(qū)動(dòng)分析方法
5.1 定義
判定表是分析和表達(dá)多邏輯條件下執(zhí)行不同操作的情況的工具。
5.2 判定表的優(yōu)點(diǎn)
能夠?qū)?fù)雜的問(wèn)題按照各種可能的情況全部列舉出來(lái),簡(jiǎn)明并避免遺漏。因此,利用判定表能夠設(shè)計(jì)出完整的測(cè)試用例集合。 在一些數(shù)據(jù)處理問(wèn)題當(dāng)中,某些操作的實(shí)施依賴于多個(gè)邏輯條件的組合,即:針對(duì)不同邏輯條件的組合值,分別執(zhí)行不同的操作。判定表很適合于處理這類問(wèn)題。
5.3 判定表的四個(gè)組成部分

1.條件樁(Condition Stub):列出了問(wèn)題得所有條件。通常認(rèn)為列出的條件的次序無(wú)關(guān)緊要。
2.動(dòng)作樁(Action Stub):列出了問(wèn)題規(guī)定可能采取的操作。這些操作的排列順序沒(méi)有約束。
3.條件項(xiàng)(Condition Entry):列出針對(duì)它左列條件的取值。在所有可能情況下的真假值。
4.動(dòng)作項(xiàng)(Action Entry):列出在條件項(xiàng)的各種取值情況下應(yīng)該采取的動(dòng)作。
5.4 規(guī)則及規(guī)則合并
規(guī)則:任何一個(gè)條件組合的特定取值及其相應(yīng)要執(zhí)行的操作稱為規(guī)則。在判定表中貫穿條件項(xiàng)和動(dòng)作項(xiàng)的一列就是一條規(guī)則。顯然,判定表中列出多少組條件取值,也就有多少條規(guī)則,既條件項(xiàng)和動(dòng)作項(xiàng)有多少列
化簡(jiǎn):就是規(guī)則合并有兩條或多條規(guī)則具有相同的動(dòng)作,并且其條件項(xiàng)之間存在著極為相似的關(guān)系。
6 測(cè)試用例設(shè)計(jì)綜合策略
1.數(shù)字列表項(xiàng)目Myers提出了使用各種測(cè)試方法的綜合策略:
? ? a.在任何情況下都必須使用邊界值分析方法,經(jīng)驗(yàn)表明用這種方法設(shè)計(jì)出測(cè)試用例發(fā)現(xiàn)程序錯(cuò)誤的能力最強(qiáng)。
? ? b.必要時(shí)用等價(jià)類劃分方法補(bǔ)充一些測(cè)試用例。
????c.用錯(cuò)誤推測(cè)法再追加一些測(cè)試用例。
????d.對(duì)照程序邏輯,檢查已設(shè)計(jì)出的測(cè)試用例的邏輯覆蓋程度,如果沒(méi)有達(dá)到要求的覆蓋標(biāo)準(zhǔn),應(yīng)當(dāng)再補(bǔ)充足夠的測(cè)試用例。
????e.如果程序的功能說(shuō)明中含有輸入條件的組合情況,則一開(kāi)始就可選用因果圖法。
2.測(cè)試用例的設(shè)計(jì)步驟
????a.構(gòu)造根據(jù)設(shè)計(jì)規(guī)格得出的基本功能測(cè)試用例;
????b.邊界值測(cè)試用例;
????c.狀態(tài)轉(zhuǎn)換測(cè)試用例;
????d.錯(cuò)誤猜測(cè)測(cè)試用例;
????e.異常測(cè)試用例;
????f.性能測(cè)試用例;
????g.壓力測(cè)試用例。
3.優(yōu)化測(cè)試用例的方法
? ? a.利用前面介紹的幾種方法不斷的對(duì)測(cè)試用例進(jìn)行分解與合并;
? ? b.在測(cè)試時(shí)利用發(fā)散思維構(gòu)造測(cè)試用例。