乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      黑盒測試的測試方法

       huowufenghuang 2019-02-11

      一般我們在做軟件測試的時候,會遇到黑盒測試,白盒測試,我們今天主要說的是黑盒測試的 主要測試方法有那些。接下來就是干貨了。

      最常見的是

          邊界值  等價類  錯誤推測法  場景法  因果圖法 判定表組成法   正交實驗設(shè)計  


      下面是詳細(xì)的解釋:


      前言:在期末考到來的時候復(fù)習(xí)下黑盒測試。文章copy&paste了很多別人的東西。文章里有很多不足之處。歡迎拍磚?。。。?!

      黑盒測試僅需知道系統(tǒng)的【輸入】和【輸出】,不需要知道代碼是怎么寫的。


      一、邊界值測試

      經(jīng)實踐總結(jié):大量的軟件缺陷發(fā)生在輸入域和輸出域的邊界上。所以在設(shè)計測試用例的時候,應(yīng)該重視邊界。

      例如只有一個輸入條件時,可以這么選取測試用例。(以坐標(biāo)軸舉例。以紅點表示測試用例)


      例如當(dāng)有兩個輸入條件的時候,可以這么選取測試用例。(以紅點表示測試用例)


      ps:要測試健壯性(軟件有沒有金剛不壞之身)的時候,可以這么設(shè)計測試用例。

      選取略小于最小值的無效測試數(shù)據(jù)(或者略大于最大值的無效測試數(shù)據(jù))。

      (以藍(lán)點表示測試用例)



      小結(jié):邊界值測試是一種最基本的黑盒測試方法,它是“等價類劃分”這種測試方法的良好補充。但該方法會有較大的冗余和漏洞。

      邊界值測試對布爾型無效(因為布爾型不是“true”就是“false”,不存在邊界值的概念)

      邊界值測試并非黑盒測試獨有,它也可以應(yīng)用在白盒測試(比如數(shù)組邊界的測試、對循環(huán)次數(shù)邊界的測試……)

      -------------------------------------------------------------------------------------------------------------------------

      二、等價類劃分

      要做到窮盡測試是不可能的,所以在設(shè)計測試用例時往往要先劃分等價類再選取“人大代表”。

      劃分的子集應(yīng)該滿足如下因素:

      (1)每個子集內(nèi)部所有的數(shù)據(jù)都是等價的

      (2)子集之間互不相交

      (3)所有子集的并集是整個輸入域或輸出域

      PS:

      (1)【有效等價類】是相對于規(guī)格說明合理的、正確的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。

      (2)【無效等價類】是相對于規(guī)格說明不合理的、錯誤的、無意義的輸入數(shù)據(jù)構(gòu)成的集合。

      小二啊,上一個例子:

      如網(wǎng)站注冊用戶名的時候,輸入框要求“用戶名由字母開頭,后跟字母或數(shù)字的任意組合,且長度<=8”。

      (1)有效的等價類劃分

      username = {0<全字母的長度<8}

      username = {0<(字母開頭+數(shù)字)的長度<8}

      (2)無效的等價類劃分

      username = {0<全數(shù)字的長度<8}

      username = {0<(數(shù)字開頭+字母)的長度<8}

      username = {全字母的長度>8}

      username = {全數(shù)字的長度>8}

      username = {(數(shù)字開頭+字母)的長度>8}

      username = {0<(字母開頭+數(shù)字)的長度>8}

      小二啊,再上一個例子

      例:每個學(xué)生可選修1-3門課程
      ·可以劃分一個有效等價類:選修1-3門課程。
      ·可以劃分兩個無效等價類:未選修課;選修課超過3門。
      ------------------------------------------------------------------------------------------------------------------
      針對缺陷相關(guān)性假設(shè),可將等價類測試分為【弱等價類測試】和【強等價類測試】。
      在現(xiàn)實情況中,由于缺陷的可能情況非常多,一個子集中的數(shù)據(jù)對某種缺陷是等價的,但對另外一種缺陷可能又是不等價的。
          弱一般等價類(WN)測試:
                        考慮單缺陷假設(shè); 測試用例使用每個等價類中的一個值。
                 強一般等價類(SN)測試:
                        考慮多缺陷假設(shè); 測試用例集合為等價類笛卡兒積。
      小二啊,再上一個例子。
       
      1、弱等價類
      弱等價類是考慮某個單一缺陷情況下的等價情況,子集里所有數(shù)據(jù)在這種缺陷假設(shè)下是等價的,并且劃分成的幾個等價類能夠覆蓋整個測試空間的單一缺陷。比如以下一段程序:
      void Func(unsigned int x)
      {
      if ( x > 10 )
      {
          Func1();
      else
      {
          Func2();
      }
      }
      我們可以將數(shù)據(jù)劃分為兩個等價類,0~10為1個等價類,大于10的數(shù)據(jù)為1個等價類,
      在考慮“>”號誤寫成“<”號這種缺陷的情況下,這兩個等價集中的數(shù)據(jù)都是等價的,比如0~10這個等價類中,使用0或使用10來進(jìn)行測試都能發(fā)現(xiàn)缺陷。這兩個等價類中各自抽取一個測試數(shù)據(jù)進(jìn)行測試,都能代表其他數(shù)據(jù)揭示出“>”號誤寫成“<”號這種缺陷來,因此整個測試空間都被覆蓋了。
      2、 強等價類
      強等價類是在多個缺陷假設(shè)前提下,各個等價類中的可測數(shù)據(jù)在單個或多個缺陷假設(shè)下是等價的,并且劃分的各個等價子集中各自取一個測試數(shù)據(jù)可以覆蓋整個測試空間的多個缺陷情況。
      再考慮前面弱等價類中的例子程序,出錯的可能性有那些呢?除了大于號會錯寫成小于號外,
      實際上還有可能寫成大于等于號,
      10有可能寫成1或100等大于10或小于10的數(shù),
      【為方便描述以錯寫成1和100為例】,事實上錯誤寫成其他數(shù)和錯寫成1和100是等價的。這樣將各種可能出錯的情況組合起來,程序中的判斷條件有可能有以下12種情況:
      判斷條件
      揭示缺陷的等價類
      判斷條件
      揭示缺陷的等價類
      判斷條件
      揭示缺陷的等價類
      x>10
      是正確的代碼 
      x>1
      {10}
      x>100
      {11}
      x<10
      {>10}
      x<1
      {>10}
      x<100
      {0~9},{10}
      x<=10
      {10},{>10}
      x<=1
      {>10}
      x<=100
      {0~9},{10}
      x>=10
      {10}
      x>=1
      {10}
      x>=100
      {11}
      考慮0~10這個集合,在誤寫成中間一列條件中情況下,里面的數(shù)據(jù)并不等價,比如誤寫成x>1的情況下,使用1做測試和使用2做測試揭示缺陷是不同的,使用1做測試發(fā)現(xiàn)不了缺陷,但使用2測試就能發(fā)現(xiàn)缺陷。
      在判斷條件誤寫成x>=10條件下,10和0~9中的任一數(shù)據(jù)也不等價,并且使用大于10的數(shù)據(jù)也無法揭示出條件錯寫成x>=10這個缺陷,因此整個測試空間的多個缺陷無法被已劃分的兩個等價類來覆蓋,10需要單獨劃分成一個等價類。
      這樣將數(shù)據(jù)劃分成三個等價類{0~9}、{10}、{大于10的數(shù)據(jù)},再看看這三個等價類是否可以覆蓋表中各種出錯情況,顯然在x>100和x>=100兩種情況下,大于10的數(shù)據(jù)集合中的數(shù)據(jù)是不等價的,使用大于100的數(shù)據(jù)不能揭示出缺陷,但使用大于10小于100的數(shù)據(jù)卻能揭示出缺陷,因此需要對大于10的數(shù)據(jù)再劃分等價類,實際上只要將邊界值{11}劃一個單獨的等價類就可以了。
      這樣總共得到四個等價類{0~9}、{10}、{11}、{大于11的數(shù)據(jù)},從這四個等價類中各取一個數(shù)據(jù)的話就可以將以上列出的所有可能的缺陷情況都揭示出來,但是各個等價類并不是對所有缺陷都等價的,這種劃分的等價類由于可以將各種缺陷情況覆蓋到,把它叫叫做強等價類。

       PS:

      在等價類測試當(dāng)中,強指的是多缺陷假設(shè),而弱指的是單缺陷假設(shè),前者表明了一個笛卡爾乘積的概念;一般指的就是正常值,即不需要考慮異常者,而健壯性則剛好相反,即需要考慮異常者。

      弱一般等價類:單缺陷假設(shè),不考慮異常區(qū)域
      強一般等價類:多缺陷假設(shè),不考慮異常區(qū)域
      弱健壯等價類:單缺陷假設(shè),要考慮異常區(qū)域
      強健壯等價類:多缺陷假設(shè),要考慮異常區(qū)域;即一個全笛卡爾乘積

       

      小二啊,再上一個例子
       
      ·某城市電話號碼組成規(guī)則是:地區(qū)碼 + 前綴 + 后綴。
      地區(qū)碼:空白 | 3位數(shù)字; 
      前綴:非0且非1開頭的3 位數(shù)字; 
      后綴:4位數(shù)字。 
      被測試程序模塊接受符合以上條件的電話號碼,拒絕所有不符合規(guī)定的號碼。
      請用等價分類法設(shè)計測試方案。
       1)劃分等價類
      輸入條件 有效等價類 無效等價類
      地區(qū)碼 j:空白、k:3位數(shù)字 n:有非數(shù)字字符、o:少于三位數(shù)字、p:多于三位數(shù)字
      前綴 l:200-999之間的任意數(shù)字

      q:有非數(shù)字字符、r:起始位為0、s:起始位為1、

      11:少于三位數(shù)字、12:大于三位數(shù)字

      后綴 m:4位數(shù)字 13:有非數(shù)字字符  14:少于四位數(shù)字  15:大于四位數(shù)字

       2)設(shè)計測試用例

       

       

      小結(jié):等價類測試可以處理布爾型和邏輯型的問題。建議在劃分等價類后對每個等價類進(jìn)行編號,這樣可看起來會更清晰。

      -----------------------------------------------------------------------------------------------------------

      三、因果圖

      毛澤東《反對本本主義》:“因為他們有豐富的經(jīng)驗,不但懂得現(xiàn)狀,而且明白因果?!?/span>

      基于因果圖的測試方法要考慮如下問題

      (1)規(guī)格說明書有哪些原因?

      (2)規(guī)格說明書有哪些結(jié)果?

      (3)規(guī)格說明書中各種原因之間的關(guān)系怎么樣?

      (4)規(guī)格說明書中各種結(jié)果之間的關(guān)系怎么樣?

      (5)規(guī)格說明書中原因和結(jié)果之間的約束條件怎么樣?

      (6)如何從規(guī)格說明書中的原因和結(jié)果設(shè)計測試用例?

      因果圖




      【a】恒等: 若c1為1,則e1也為1。若c1為0,則e1也為0;

      【b】非: 若c1是1,則e1是0.若c1為0,則e1是1;

      【c】或: 若c1與c2中有一個是1或者兩個都為1,則e1是1。若c1和c2都為0,則e1是0;

      【d】與: 當(dāng)且僅當(dāng)c1和c2都是1,則e1為1,否則e1為0.

      ------------------------------------------------------------------------------

      E約束(異;異或): a,b最多有一個可能為1,不能同時為1.

      --------------------------------------------------------------------------------------------------



      約束(或;包含): a,b,c中至少有一個必須為1,不能同時為0.

      --------------------------------------------------------------------------------------------------------



      O約束(惟一): a和b必須有一個且僅有一個為1

      -----------------------------------------------------------------------------------------------------------------------



      R約束(要求):a是1時,b必須是1,即a為1時,b不能為0

      -----------------------------------------------------------------------------------------------------------------------



      M約束:對輸出條件的約束,若結(jié)果a為1,則結(jié)果b必須為0.

      ----------------------------------------------------------------------------------------------------------------------

      小二啊,上一個例子。

      某個軟件的規(guī)格說明書中規(guī)定:第一個字符必須是A或B,第二個字符必須是一個數(shù)字字符,在此情況下進(jìn)行文件的修改。

      但如果第一個字符不正確,則給出信息L;如果第二個字符不正確,則給出信息M.


      可按照如下步驟設(shè)計測試用例:
      (1)根據(jù)軟件規(guī)格說明書,列出原因和結(jié)果.
      (2)找出原因和結(jié)果之間的關(guān)系,原因和原因之間的約束關(guān)系,畫出因果圖.
      (3)將因果圖轉(zhuǎn)化為判定表
      (4)根據(jù)判定表設(shè)計測試用例

      解:

      原因:
      C1:第一個字符是A;
      C2:第一個字符是B;
      C3:第二個字符是一個數(shù)字字符.
      結(jié)果:
      E1:給出信息L;
      E2:修改文件;
      E3:給出信息M;



      轉(zhuǎn)化成決策表

      小結(jié):因果圖可以用于描述輸入與輸出的相互關(guān)系。但是其繪制過程比較繁瑣。因果圖可以轉(zhuǎn)化成決策表。建議直接繪制決策表。

      -----------------------------------------------------------------------------------------------------------------------------------------------
      四 、決策表
      決策表能讓你的邏輯更嚴(yán)謹(jǐn)些
      小二,先上菜,再看菜單:
       ……對功率大于50馬力的機(jī)器并且維修記錄不全,或者已運行10年以上的機(jī)器,應(yīng)給予優(yōu)先的維修處理……” 。這里假定,“維修記錄不全”和“優(yōu)先維修處理”均已在別處有更嚴(yán)格的定義 。請建立判定表。 
      ·解答: 
      –①確定規(guī)則的個數(shù):這里有3個條件,每個條件有兩個取值,故應(yīng)有2*2*2=8種規(guī)則。 
      –②列出所有的條件樁和動作樁
      ·③填入條件項??蓮牡?列條件項開始,逐列向右填滿。如第1列是: Y  Y Y ,第二列是: Y Y N 等等。 
      ·④填入動作頂。這樣便得到形如圖的初始判定表:
       
       
       

      條件樁:列出了問題的所有條件。
      動作樁:列出了問題規(guī)定可能采取的操作。
      條件項:列出針對它所列條件的取值,在所有可能情況下的真假值。
      動作項:列出在條件項的各種取值情況下應(yīng)該采取的動作。
      規(guī)則:由動作項和條件項組成。

      決策表的建立步驟
      1、列出所有的條件樁和動作樁;
      2、填入條件項;
      3、填入動作項,制定初始判定表;
      4、簡化;合并相似規(guī)則或者相同動作。


      小二,上一個例子。
      已知a、b、c三邊,判斷是否能構(gòu)成三角形?如果是三角形的話,是什么哪種三角形?
       
      小結(jié) :決策表測試僅適合對輸入域展開分析,不適合對輸出域展開測試。
      ---------------------------------------------------------------------------------------------
      五 、錯誤推測法
      (阿克琉斯的腳踵?希臘神話的傳說人物阿克琉斯,他除了腳踵以外全身刀槍不入,后來被射中腳踵而死亡,意思是指一個人的致命缺點!)
      錯誤推測法憑借的是測試人員的直覺和經(jīng)驗來推測系統(tǒng)中可能出現(xiàn)的各種缺陷。
      常常是列舉出系統(tǒng)中所有【可能的缺陷和容易發(fā)生缺陷的特殊情況】,并根據(jù)它們來設(shè)計測試用例。
      小二啊,上幾道例子

      例如: 測試一個對線性表(比如數(shù)組)進(jìn)行排序的程序,可推測列出以下幾項需要特別測試的情況:
      I.     輸入的線性表為空表;
      II.    表中只含有一個元素;
      III.   輸入表中所有元素已排好序;
      IV.   輸入表已按逆序排好;
      V.    輸入表中部分或全部元素相同。

      例如:查詢功能
      A、無條件查詢
      B、是否支持模糊查詢
      C、查詢的關(guān)鍵字之間是否可用連接符
      D、輸入正確的查詢條件以前加上空格,看是否能正確地查出相應(yīng)的數(shù)據(jù)
      E、若查詢結(jié)果為空,是否給與相應(yīng)提示

      例如:登錄功能
      A、輸入的數(shù)據(jù)前存在空格,是否能夠正常登錄
      B、輸入的密碼是否能夠加密顯示
      C、密碼框的復(fù)制、粘貼功能是否被屏蔽掉
      D、用戶在注銷之后是否能夠再登錄成功
      E、輸入的數(shù)據(jù)有誤,用戶是否可以無休止地嘗試登錄

      小結(jié):

      優(yōu)點:充分發(fā)揮個人的經(jīng)驗和潛能,命中率高
      缺點:覆蓋率難以保證;過多的依賴于個人的經(jīng)驗

      ----------------------------------------------------------------------------------------------------------------------

      六、場景法
      軟件的工作流程往往對應(yīng)著現(xiàn)實生活的場景。應(yīng)該從更高些的視角來把握系統(tǒng)的業(yè)務(wù)流程,了解功能模塊。
      在熟悉流程的基礎(chǔ)上才能討論局部細(xì)節(jié)的測試設(shè)計。場景法的核心是事件流和場景。
      這是一個場景法的示意圖。

      在這個圖中,有一個基本流和四個備選流。從基本流開始,再將基本流和備選流結(jié)合起來,可以確定以下用例場景:

        場景 1 基本流

        場景 2 基本流 備選流 1

        場景 3 基本流 備選流 1 備選流 2

        場景 4 基本流 備選流 3

        場景 5 基本流 備選流 3 備選流 1

        場景 6 基本流 備選流 3 備選流 1 備選流 2

        場景 7 基本流 備選流 4

        場景 8 基本流 備選流 3 備選流 4

        從上面的實例我們就可以了解“場景”=“基本流”+“備選流”。

        基本流:采用直黑線表示,是經(jīng)過用例的最簡單的路徑(無任何差錯,程序從開始直接執(zhí)行到結(jié)束)

        備選流:采用不同顏色表示,一個備選流可能從基本流開始,在某個特定條件下執(zhí)行,然后重新加入基本流中,也可以起源于另一個備選流,或終止用例,不在加入到基本流中;(實際上是各種“非主流”的情況)

       下面是場景法的基本設(shè)計步驟

          1. 根據(jù)說明,描述出程序的基本流及各項備選流 
          2. 根據(jù)基本流和各項備選流生成不同的場景 
          3. 對每一個場景生成相應(yīng)的測試用例 
          4. 對生成的所有測試用例重新復(fù)審,去掉多余的測試用例,測試用例確定后,對每一個測試用例確定測試數(shù)據(jù)值

      小二啊,上一個例子:

      有一個在線購物的實例,用戶進(jìn)入一個在線購物網(wǎng)站進(jìn)行購物,選購物品后,進(jìn)行在線購買,這時需要使用賬號登錄,登錄成功后,進(jìn)行付錢交易,交易成功后,生成訂購單,完成整個購物過程。

       step1:來確定基本流和備選流:

      step2:根據(jù)基本流和備選流來確定場景:

      step3:設(shè)計用例

        對于每一個場景都需要確定測試用例??梢圆捎镁仃嚮驔Q策表來確定和管理測試用例。

        下面顯示了一種通用格式,其中各行代表各個測試用例,而各列則代表測試用例的信息。

        本例中,對于每個測試用例,存在一個測試用例ID、場景的條件、測試用例中涉及的所有數(shù)據(jù)元素、以及預(yù)期結(jié)果。

        通過從確定執(zhí)行用例場景所需的數(shù)據(jù)元素入手構(gòu)建矩陣。然后,對于每個場景,至少要確定包含執(zhí)行場景所需的適當(dāng)條件的測試用例。例如,在下面的矩陣中,

      V(有效)用于表明這個條件必須是 VALID(有效的)才可執(zhí)行基本流,

       I(無效)用于表明這種條件下將激活所需備選流。

      “n/a”(不適用)表明這個條件不適用于測試用例。

         

      step4:設(shè)計用例設(shè)計數(shù)據(jù),把數(shù)據(jù)填入上面的用例表中。


      注:測試用例只是購物的一部分測試用例,應(yīng)該還可以繼續(xù)補充以達(dá)到比較好的覆蓋。

      -------------------------------------------------------------------------------------------------------------------------

      注釋:功能圖法、正交實驗法也是黑盒測試法


        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多