1. 程式人生 > >黑盒測試:測試用例的設計方法

黑盒測試:測試用例的設計方法

黑盒測試常用的方法:等價類、邊界值、因果圖、判定表、正交實驗、場景法、狀態轉換,還有錯誤猜測法等。

等價類

所謂等價類劃分就是把程式的輸入域劃分成若干部分,然後從每部分選取少量的具有代表性的資料作為測試用例。通過劃分等價類可以大幅度的減少測試工作量。

六條確定等價類的原則:

1.       在輸入條件規定了輸入值的範圍或值的個數的情況下,可以確立一個有效等價類和兩個無效等價類。

2.       在輸入條件規定了輸入值的集合或者規定了“必須如何”的條件的情況下,可以確立一個有效等價類和一個無效等價類。

3.       在輸入條件是一個布林量的時候,可確定一個有效等價類和一個無效等價類。

4.       在規定了輸入資料的一組值(n個),並且程式要對每個輸入值分別處理的情況下,可以確定n個有效等價類和一個無效等價類。

5.       在規定了輸入資料必須遵守的規則的情況下,可以確立一個有效等價類(符合規則)和若干個無效等價類(從不同角度違反規則)。

6.       在確知已劃分的等價類中,各元素在程式中的處理方式不同的情況下,則應再將該等價類劃分為更小的等價類。

在確定測試用例時有個原則要注意:一條測試用例儘量覆蓋所有的有效等價類,一個無效等價類對應一條測試用例。

 我們假設三條邊是:A、B、C。如果構成三角形應該滿足下面的條件:

              A>0,B>0,C>0 並且A+B>C,A+C>B,B+C>A

              等腰的還要滿足A=B或A=C或B+C

              等邊的要滿足A=B且A=C且B=C

根據這些條件我們來列出等價類表

輸入條件

有效等價類

無效等價類

是否構成三角形

A>0                   (1)

A<=0                  (7)

B>0                   (2)

B<=0                  (8)

C>0                   (3)

C<=0                  (9)

A+B>C                 (4)

A+B<=C               (10)

A+C>B                 (5)

A+C<=B               (11)

B+C>A                 (6)

B+C<=A               (12)

是否等腰三角形

A=B                  (13)

A!=B and A!=C and B!=C  (16)

A=C                  (14)

B=C                  (15)

是否等邊三角形

A=B and A=C and B=c    (17)

A!=B                 (18)

A!=C                 (19)

B!=C                 (20)

根據這個表我們就可以確定測試用例了

序號

(A B C)

覆蓋的等價類

輸出

1

3 4 5

1,2,3,4,5,6

一般三角形

2

0 1 2

7

不構成三角形

3

1 0 2

8

4

1 2 0

9

5

1 2 3

10

6

3 5 2

11

7

3 1 2

12

8

3 3 4

1,2,3,4,5,6,13

是等腰三角形

9

3 4 3

1,2,3,4,5,6,14

10

4 3 3

1,2,3,4,5,6,15

11

3 4 5

1,2,3,4,5,6,16

不是等腰三角形

12

3 3 3

1,2,3,4,5,6,17

是等邊三角形

13

3 4 4

1,2,3,4,5,6,15,18

不是等邊三角形

14

3 3 4

1,2,3,4,5,6,13,19

15

3 4 3

1,2,3,4,5,6,14,20


邊界值

邊界值分析法選擇測試用例的原則:

1.如果輸入條件規定了值得範圍,則應取上點、離點和內點作為輸入資料(內點:區域內的點;上點:無論開區間還是閉區間,都是邊界上的點;離點:開區間的離點就是區域內離上點最近的點,閉區間的離點就是區間外離上點最近的點)

2<=X<=6: 測試用例為1,2,4,6,7

2<X<6:測試用例為2,3,4,5,6(2、6是上點,3、5是離點,4是內點)

2.如果輸入條件規定了值得個數,則用最大個數,最小個數,比最大格式多1和比最小個數少1作為測試用例

3.將1、2用於輸入條件

4.若輸出域或者輸出域是有序集合,選擇第一個元素和最後一個元素作為測試用例

5.若使用了內部資料結構,選擇內部資料結構邊界值作為測試用例

因果圖和判定表

判定表法可以略過因果圖的繪製,直接列出所有組合進行篩選。

在實際測試中,許多操作時具有相互聯絡的,只有執行A動作才會產生B結果,像這種測試我們就需使用因果圖。

現在地鐵一卡通充值,視窗越來越少了,都推薦自動充值機充值了,我們把它簡化一下,只能投入50和100的人民幣,相應的也只能充值50和100元。


根據因果圖填判定表:





正交實驗法

正交實驗法主要適用於一些配置功能的介面和相容性測試,其他需要組合的介面。正交實驗法也是針對有效等價類的。

使用正交表設計測試用例的目的是從大量的測試用例中挑選出適量的,有代表性的測試用例,從而合理的減少測試的工時和費用。

有一款列印軟體,列印範圍分為全部、當前幻燈片、給定範圍,共三種情況;列印內容分為幻燈片、講義、備註頁、大綱檢視,共四種方式;列印顏色/灰度分為顏色、灰度、黑白,共三種設定;列印效果分為幻燈片加框和幻燈片不加框兩種方式。如果要將這些情況全部都覆蓋測試,應該是3*4*3*2=72種情況。這些用例太多,全部測試任務量太多。

       這種情況我們就可以使用正交試驗法來減少測試用例數。首先看一下關於正交試驗的一些基本概念和術語。因素:凡欲考察的變數稱為因素,這裡就是4個,列印範圍、列印內容、列印顏色/灰度、列印效果。水平就是變數的取值,這裡列印範圍的水平是3(有3種情況),列印內容是4種,列印顏色/灰度是3種,列印效果是2種。接下來我們就需要找適合的正交表。這裡最大的水平是4,因素是4,所以4的4次冪的正交表就符合我們的要求。



場景法

場景法最主要的就是能夠分析出基本流和備選流。場景法主要適用於安裝程式、嚮導類功能和多介面切換完成的功能。

基本流就是按照正確的事件流來實現的流程。備選流就是出現故障或缺陷的過程。場景就是若干事件流首尾拼接構成一個測試場景。來看一個場景圖:


每個場景對應一個測試用例,對每個用例進行評審,刪掉重複的就可以了。

狀態遷移法

被測系統的功能依賴於資料的狀態,像常見的工作流系統(OA),對於這類軟體狀態遷移法就在合適不過了。

案例研究1:某航空公司的訂票系統

客戶提供機票資訊,訂票系統根據這些資訊訂票,將訂單狀態標記為Made

同時訂票系統啟動計時器,要求客戶在指定時間內必須付費

計時器超時前,客戶付費,訂單狀態標記為Paid

客戶可以列印處於Paid狀態的訂單機票,訂單系統將為使用者出票,訂單狀態標記為Ticketed

客戶使用機票登機後,訂單狀態標記為Used(結束訂單)

訂票系統計時器超時後客戶未付費,訂票系統將取消本次機票預訂,訂單狀態為CanceledNonPay

若在計時器超時之前,客戶要求取消本次訂票,訂票系統將取消本次機票預訂,訂單狀態為CanceledByCustomer

若客戶在付費後取消訂票,訂單狀態標記為CanceledByCustomer,但需要將相關的機票款項按規定退還給客戶

若客戶在拿到機票後取消訂票,訂單狀態標記為CanceledByCustomer,客戶需要將機票退回航空公司,航空公司收到退票後將相關的機票款項按規定退還給客戶

電子機票的狀態

事件

Made初始建立

提交訂單

Paid已付費

客戶付費

Ticketed已出票

印表機票

Used已使用

登機使用

CanceledNonPay超時取消

計時器超時未付費

CanceledByCustomer使用者取消

客戶取消

客戶已付費取消

拿到機票後取消

將這些狀態和事件狀態圖表示


在形成測試用例的時候有幾個準則:

(1)至少覆蓋所有狀態一次啊

(2)至少覆蓋所有事件一次

(3)至少覆蓋所有轉換一次

(4)至少覆蓋所有路徑一次