自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

等價(jià)類(lèi)分法 新解

開(kāi)發(fā) 測(cè)試
等價(jià)類(lèi)分法是將測(cè)試空間劃分成若干個(gè)子集,并且滿(mǎn)足每個(gè)子集中的任一數(shù)據(jù)對(duì)揭露程序中的缺陷都是等價(jià)的,這些子集就叫做等價(jià)類(lèi)或者叫等價(jià)子集。本文從兩個(gè)大的方面來(lái)介紹等價(jià)類(lèi)分法,希望對(duì)你有幫助,一起來(lái)看。

等價(jià)類(lèi)分法是將測(cè)試空間劃分成若干個(gè)子集,并且滿(mǎn)足每個(gè)子集中的任一數(shù)據(jù)對(duì)揭露程序中的缺陷都是等價(jià)的,這些子集就叫做等價(jià)類(lèi)或者叫等價(jià)子集。

比如一個(gè)程序的輸入數(shù)據(jù)滿(mǎn)足 0<x<100為有效數(shù)據(jù),其他為無(wú)效數(shù)據(jù),那么就可以劃分成兩個(gè)等價(jià)類(lèi),一個(gè)是有效數(shù)據(jù)的等價(jià)類(lèi),另一個(gè)是無(wú)效數(shù)據(jù)的等價(jià)類(lèi),設(shè)計(jì)測(cè)試用例時(shí)就可以從這兩個(gè)等價(jià)類(lèi)中分別取一個(gè)輸入數(shù)據(jù)來(lái)得到兩個(gè)測(cè)試用例。有效數(shù)據(jù)的等價(jià)類(lèi)為1~99,所以可以從1~99中任意取一個(gè)數(shù)作為輸入數(shù)據(jù)來(lái)作為一個(gè)測(cè)試用例,從x不等于1~99中的數(shù)據(jù)中任意取一個(gè)數(shù)據(jù)作為輸入數(shù)據(jù)得到另一個(gè)測(cè)試用例。

1~99中的任一數(shù)據(jù)和其他數(shù)據(jù)都是等價(jià)的,比如使用了2來(lái)進(jìn)行測(cè)試,那么可以假定數(shù)據(jù)2測(cè)試通過(guò)的話(huà),1~99中的其他數(shù)據(jù)也能測(cè)試通過(guò)。

等價(jià)類(lèi)分法可以用來(lái)對(duì)一些不能窮舉的集合進(jìn)行合理分類(lèi),從各個(gè)等價(jià)類(lèi)中選出有代表性的數(shù)據(jù)進(jìn)行測(cè)試,從而保證設(shè)計(jì)出來(lái)的設(shè)計(jì)用例具有一定的代表性和一定范圍內(nèi)的完整性,有效地縮減測(cè)試用例的數(shù)量。

等價(jià)類(lèi)實(shí)際上是符合測(cè)試空間劃分原則的一種特殊劃分形式,即劃分完后的子集里的可測(cè)數(shù)據(jù)是等價(jià)的,而測(cè)試空間劃分原則則是要求里面有一個(gè)可測(cè)數(shù)據(jù)測(cè)試通過(guò)能夠代表其他測(cè)試數(shù)據(jù)在滿(mǎn)足選取概率條件下也都可以通過(guò)。等價(jià)類(lèi)選取測(cè)試數(shù)據(jù)時(shí)可以選取等價(jià)類(lèi)中的任意數(shù)據(jù)作為測(cè)試數(shù)據(jù),而測(cè)試空間劃分原則劃分的子集一般是選擇指定的數(shù)據(jù)作為測(cè)試數(shù)據(jù),如果按測(cè)試空間劃分原則劃分后的子集剛好成為了等價(jià)類(lèi)才可以選擇里面的任一數(shù)據(jù)作為測(cè)試數(shù)據(jù)。

1、等價(jià)類(lèi)的幾種類(lèi)型

在現(xiàn)實(shí)情況中,由于缺陷的可能情況非常多,一個(gè)子集中的數(shù)據(jù)對(duì)某種缺陷是等價(jià)的,但對(duì)另外一種缺陷可能又是不等價(jià)的。所以把等價(jià)類(lèi)分為弱等價(jià)類(lèi)、強(qiáng)等價(jià)類(lèi)、理想等價(jià)類(lèi)三種類(lèi)型。

1)弱等價(jià)類(lèi)

弱等價(jià)類(lèi)是考慮某個(gè)單一缺陷情況下的等價(jià)情況,子集里所有數(shù)據(jù)在這種缺陷假設(shè)下是等價(jià)的,并且劃分成的幾個(gè)等價(jià)類(lèi)能夠覆蓋整個(gè)測(cè)試空間的單一缺陷。比如以下一段程序:

  1. void Func(unsigned int x)  
  2. {  
  3. if ( x > 10 )  
  4. {  
  5. Func1();  
  6. }   
  7. else 
  8. {  
  9. Func2();  
  10. }  

 

我們可以將數(shù)據(jù)劃分為兩個(gè)等價(jià)類(lèi),0~10為1個(gè)等價(jià)類(lèi),大于10的數(shù)據(jù)為1個(gè)等價(jià)類(lèi),在考慮“>”號(hào)誤寫(xiě)成“<”號(hào)這種缺陷的情況下,這兩個(gè)等價(jià)集中的數(shù)據(jù)都是等價(jià)的,比如0~10這個(gè)等價(jià)類(lèi)中,使用0或使用10來(lái)進(jìn)行測(cè)試都能發(fā)現(xiàn)缺陷。這兩個(gè)等價(jià)類(lèi)中各自抽取一個(gè)測(cè)試數(shù)據(jù)進(jìn)行測(cè)試,都能代表其他數(shù)據(jù)揭示出“>”號(hào)誤寫(xiě)成“<”號(hào)這種缺陷來(lái),因此整個(gè)測(cè)試空間都被覆蓋了。

2)強(qiáng)等價(jià)類(lèi)

強(qiáng)等價(jià)類(lèi)是在多個(gè)缺陷假設(shè)前提下,各個(gè)等價(jià)類(lèi)中的可測(cè)數(shù)據(jù)在單個(gè)或多個(gè)缺陷假設(shè)下是等價(jià)的,并且劃分的各個(gè)等價(jià)子集中各自取一個(gè)測(cè)試數(shù)據(jù)可以覆蓋整個(gè)測(cè)試空間的多個(gè)缺陷情況。

再考慮前面弱等價(jià)類(lèi)中的例子程序,出錯(cuò)的可能性有那些呢?除了大于號(hào)會(huì)錯(cuò)寫(xiě)成小于號(hào)外,實(shí)際上還有可能寫(xiě)成大于等于號(hào),10有可能寫(xiě)成1或100等大于10或小于10的數(shù),為方便描述以錯(cuò)寫(xiě)成1和100為例,事實(shí)上錯(cuò)誤成其他數(shù)和錯(cuò)寫(xiě)成1和100是等價(jià)的。這樣將各種可能出錯(cuò)的情況組合起來(lái),程序中的判斷條件有可能有以下12種情況:

程序中的判斷條件

考慮0~10這個(gè)集合,在誤寫(xiě)成中間一列條件中情況下,里面的數(shù)據(jù)并不等價(jià),比如誤寫(xiě)成x>1的情況下,使用1做測(cè)試和使用2做測(cè)試揭示缺陷是不同的,使用1做測(cè)試發(fā)現(xiàn)不了缺陷,但使用2測(cè)試就能發(fā)現(xiàn)缺陷。

在判斷條件誤寫(xiě)成x>=10條件下,10和0~9中的任一數(shù)據(jù)也不等價(jià),并且使用大于10的數(shù)據(jù)也無(wú)法揭示出條件錯(cuò)寫(xiě)成x>=10這個(gè)缺陷,因此整個(gè)測(cè)試空間的多個(gè)缺陷無(wú)法被已劃分的兩個(gè)等價(jià)類(lèi)來(lái)覆蓋,10需要單獨(dú)劃分成一個(gè)等價(jià)類(lèi)。

這樣將數(shù)據(jù)劃分成三個(gè)等價(jià)類(lèi){0~9}、{10}、{大于10的數(shù)據(jù)},再看看這三個(gè)等價(jià)類(lèi)是否可以覆蓋表中各種出錯(cuò)情況,顯然在x>100和x>=100兩種情況下,大于10的數(shù)據(jù)集合中的數(shù)據(jù)是不等價(jià)的,使用大于100的數(shù)據(jù)不能揭示出缺陷,但使用大于10小于100的數(shù)據(jù)卻能揭示出缺陷,因此需要對(duì)大于10的數(shù)據(jù)再劃分等價(jià)類(lèi),實(shí)際上只要將邊界值{11}劃一個(gè)單獨(dú)的等價(jià)類(lèi)就可以了。

這樣總共得到四個(gè)等價(jià)類(lèi){0~9}、{10}、{11}、{大于11的數(shù)據(jù)},從這四個(gè)等價(jià)類(lèi)中各取一個(gè)數(shù)據(jù)的話(huà)就可以將以上列出的所有可能的缺陷情況都揭示出來(lái),但是各個(gè)等價(jià)類(lèi)并不是對(duì)所有缺陷都等價(jià)的,這種劃分的等價(jià)類(lèi)由于可以將各種缺陷情況覆蓋到,把它叫叫做強(qiáng)等價(jià)類(lèi)。

3)理想等價(jià)類(lèi)

這種等價(jià)類(lèi)是嚴(yán)格按照等價(jià)類(lèi)的定義來(lái)劃分的,即劃分的各個(gè)等價(jià)類(lèi)中,每個(gè)等價(jià)類(lèi)都滿(mǎn)足每個(gè)可測(cè)數(shù)據(jù)對(duì)揭示所有可能的缺陷都是等價(jià)的,并且劃分的各個(gè)等價(jià)類(lèi)中各自任意取一個(gè)可測(cè)數(shù)據(jù)做為測(cè)試數(shù)據(jù)可以將全部的缺陷都揭示出來(lái)。

理想等價(jià)類(lèi)在實(shí)際情況中是很罕見(jiàn)的,除非只有很少的一兩種可能的出錯(cuò)情況,否則很難劃分成對(duì)揭示所有可能缺陷都等價(jià)的子集。所以在實(shí)際使用時(shí),沒(méi)有必要去尋找理想等價(jià)類(lèi),否則徒然浪費(fèi)時(shí)間,一般采用強(qiáng)等價(jià)類(lèi)或弱等價(jià)類(lèi)進(jìn)行測(cè)試就足夠了。

2、等價(jià)類(lèi)的判定方法

當(dāng)將一個(gè)輸入域進(jìn)行等價(jià)類(lèi)劃分后,劃分出來(lái)的子集是否是等價(jià)的基本上靠經(jīng)驗(yàn)判斷,這給使用等價(jià)類(lèi)分法帶來(lái)很大的難度,憑經(jīng)驗(yàn)劃分出來(lái)的等價(jià)類(lèi)也許并不是真的等價(jià)類(lèi),如何才能確定劃分的類(lèi)是等價(jià)類(lèi)呢?

按照前面講過(guò)的弱等價(jià)類(lèi)與強(qiáng)等價(jià)類(lèi)的定義,要知道劃分的子集是否等價(jià)類(lèi)先要知道又那些種類(lèi)的可能缺陷,然后將劃分的等價(jià)類(lèi)對(duì)照可能的缺陷進(jìn)行驗(yàn)證看是否能揭示出那些可能發(fā)生的缺陷。

這種判定方法的缺點(diǎn)是必須先知道會(huì)發(fā)生那些可能的缺陷,實(shí)際情況中往往并不知道所有可能的缺陷,那么在實(shí)際情況中如何采取一些簡(jiǎn)單方法來(lái)判定一個(gè)子集是否是等價(jià)類(lèi)呢?

當(dāng)一個(gè)子集的處理過(guò)程與輸出完全一致時(shí),基本上可以認(rèn)為是等價(jià)類(lèi),處理過(guò)程是否相同很容易從需求和設(shè)計(jì)中得出。但是現(xiàn)實(shí)情況中往往同一個(gè)等價(jià)類(lèi)中的不同數(shù)據(jù)對(duì)應(yīng)的輸出結(jié)果并不相同,所以這種方法并不能對(duì)所有的情況都適用。

其實(shí)沒(méi)有什么特別好的辦法可以用來(lái)判斷一個(gè)子集中的任一數(shù)據(jù)對(duì)揭露程序中的缺陷都是等價(jià)的,除非將所有數(shù)據(jù)測(cè)試一遍。但是有一些條件可以協(xié)助判斷出某個(gè)子集不是等價(jià)類(lèi)。

1)路徑判定法

最容易判定一個(gè)子集是否是等價(jià)類(lèi)的方法就是路徑判定法,路徑判定法的基本思想是:對(duì)于子集中的任一數(shù)據(jù),如果執(zhí)行路徑并不完全相同,那么這個(gè)子集不是等價(jià)類(lèi)。

需要注意的是,路徑判定法的反命題并不成立,即不能由執(zhí)行路徑相同就推斷出子集中的數(shù)據(jù)是等價(jià)類(lèi)。因?yàn)閳?zhí)行路徑相同情況下得到的結(jié)果不一定相同,舉例如下:

  1. int mul(int a)  
  2. {  
  3. return (a*10000);  

 

在mul()函數(shù)中,不論a輸入多少,執(zhí)行路徑都只有一條,但是當(dāng)a超過(guò)一定大小時(shí),會(huì)出現(xiàn)整數(shù)乘法溢出,顯然不能將a的任意取值都作為等價(jià)類(lèi)。

路徑相同之所以不能認(rèn)為是等價(jià)類(lèi)的根本原因在于程序設(shè)計(jì)中本身可能存在缺陷和遺漏,設(shè)計(jì)或編碼后的程序中的路徑本身就可能不正確,測(cè)試用例設(shè)計(jì)時(shí)不能假定程序中的路徑一定是正確的。

2)概率判定法

概率判定法是通過(guò)計(jì)算等價(jià)子集中的數(shù)據(jù)揭示某個(gè)缺陷的概率來(lái)進(jìn)行判斷的方法。如果在一個(gè)等價(jià)子集中,所有數(shù)據(jù)的揭示缺陷的概率不相同并有一定差距,那么可以認(rèn)為不是等價(jià)類(lèi)。

這個(gè)判定法的使用并不是說(shuō)事先需要知道所有可能發(fā)生的缺陷,它只需要找到一個(gè)缺陷來(lái)證明在這種缺陷情況下,子集中的數(shù)據(jù)在揭示這個(gè)缺陷方面的概率是不相同的,那么就可以認(rèn)為在這種缺陷條件下不是等價(jià)類(lèi),至少可以認(rèn)為不是強(qiáng)等價(jià)類(lèi)。

比如前面講的x>10的劃分,{0~10}這個(gè)集合中,在寫(xiě)成x>=10的情況下,10和子集中其他數(shù)據(jù)揭示缺陷的概率是不同的,0~9都不能發(fā)現(xiàn)缺陷,測(cè)試會(huì)通過(guò),也就是說(shuō)揭示出這個(gè)缺陷的概率為0,而10則能揭示出這個(gè)缺陷,所以它們不能劃分到同一個(gè)等價(jià)類(lèi)里面。

【編輯推薦】

  1. 軟件測(cè)試?yán)碚摚耗康摹⒅芷?、流?/span>
  2. 詳談軟件測(cè)試中的動(dòng)態(tài)測(cè)試
  3. 軟件測(cè)試接口測(cè)試的測(cè)試用例類(lèi)型
  4. 軟件測(cè)試的全過(guò)程
  5. 消除Bug勿忽視軟件測(cè)試的價(jià)值
責(zé)任編輯:于鐵 來(lái)源: 51Testing軟件測(cè)試網(wǎng)采編
相關(guān)推薦

2011-05-16 14:38:53

測(cè)試用例

2014-10-10 10:17:18

LTE

2011-03-24 14:15:27

雙TOP二分法分頁(yè)

2011-12-16 14:34:22

Java

2024-05-07 16:19:33

以太全光園區(qū)網(wǎng)銳捷網(wǎng)絡(luò)

2009-06-16 11:32:00

Java泛型

2009-11-09 14:46:09

WCF集合契約等價(jià)

2011-07-12 16:00:39

java泛型

2009-06-11 17:31:27

Java泛型

2009-09-17 10:59:59

虛擬化

2009-03-17 16:22:13

Java泛型接口

2016-04-27 11:50:31

2018-03-06 11:00:32

華為ICT

2011-03-24 13:31:35

2分法存儲(chǔ)過(guò)程分頁(yè)

2018-10-30 13:10:34

ECMP技術(shù)數(shù)據(jù)中心網(wǎng)絡(luò)

2017-09-07 13:10:34

華為

2024-01-01 22:28:52

2014-06-03 10:21:13

服務(wù)器服務(wù)器可用性

2011-07-10 13:45:35

JAVA泛型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)