功能測試用例設(shè)計(jì)方法分享

測試用例可以用來衡量一個(gè)項(xiàng)目測試質(zhì)量,因此在平時(shí)的測試流程中,編寫測試用例就是測試過程中很重要的一步,每一個(gè)測試工程師都需要并且非常熟練的編寫測試用例,能在編寫測試用例中盡可能的覆蓋任何異常的測試點(diǎn);如何能編寫優(yōu)秀的測試用例,就需要測試人員掌握更多的用例編寫技巧以及思考出更多的測試點(diǎn)。針對于游戲測試,大多更偏向于功能方面的測試,根據(jù)功能測試用例逐項(xiàng)測試,檢查產(chǎn)品是否達(dá)到了策劃的需求。功能測試主要采用黑盒測試策略設(shè)計(jì)測試用例,進(jìn)行測試。主要功能模塊測試的測試用例設(shè)計(jì)方法包括:等價(jià)類劃分、邊界值分析、錯誤推測法、因果圖和判定表、場景法、正交實(shí)驗(yàn)法。下面就以上幾種方法進(jìn)行一些分享。

1. 等價(jià)類劃分法

等價(jià)類劃分,指的是一種典型的、重要的黑盒測試方法。其就是解決如何選擇適當(dāng)?shù)臄?shù)據(jù)子集來代表整個(gè)數(shù)據(jù)集的問題,通過降低測試的數(shù)目去實(shí)現(xiàn)“合理的”覆蓋,以此發(fā)現(xiàn)更多的軟件缺陷,統(tǒng)計(jì)好數(shù)據(jù)后由此對軟件進(jìn)行改進(jìn)升級。

舉例一: 設(shè)有一個(gè)認(rèn)證條件,要求玩家輸入以年月表示的日期。假設(shè)日期限定在1990年1月~2049年12月,并規(guī)定日期由6位數(shù)字字符組成,前4位表示年,后2位表示月。現(xiàn)用等價(jià)類劃分法設(shè)計(jì)測試用例,來測試程序的"日期檢查功能"。 首先,劃分等價(jià)類并編號,下表等價(jià)類劃分的結(jié)果

輸入等價(jià)類 有效等價(jià)類 無效等價(jià)類
日期的類型及長度 (1)日期的類型及長度 (2)有非數(shù)字字符 (3)少于6位數(shù)字字符 (4)多于6位數(shù)字字符
年份范圍 (5)在1990~2049之間 (6)小于1990 (7)大于2049
月份范圍 (8)在01~12之間 (9)等于00 (10)大于12

設(shè)計(jì)測試用例,以便覆蓋所有的有效等價(jià)類,在表中列出了3個(gè)有效等價(jià)類,編號分別為(1)、(5)、(8),設(shè)計(jì)的測試用例如下:

測試數(shù)據(jù) 期望結(jié)果 覆蓋的有效等價(jià)類
200211 輸入有效 (1)、(5)、(8)

為每一個(gè)無效等價(jià)類設(shè)計(jì)一個(gè)測試用例,設(shè)計(jì)結(jié)果如下:

測試數(shù)據(jù) 期望結(jié)果 覆蓋的無效等價(jià)類
95June 無效輸入 (2)
20036 無效輸入 (3)
2001006 無效輸入 (4)
198912 無效輸入 (6)
200401 無效輸入 (7)
200100 無效輸入 (9)
200113 無效輸入 (10)

舉例二: 登錄賬號的時(shí)候,郵箱地址輸入框輸入數(shù)據(jù),程序檢測,判斷用戶輸入的郵箱地址是否合法。現(xiàn)用等價(jià)類劃分法和邊界值分析法設(shè)計(jì)測試用例:

對輸入的要求:

a.用戶名只能用小寫字母和數(shù)字還有‘.’組成

b.郵箱用戶名首位必須是小寫字母或者數(shù)字

c.用戶名長度在6-30個(gè)字符之間

d.必須要有 @ 符號和必須要有 ‘.’

e.@后面要以.結(jié)束(*為任意字符串)

等價(jià)類表:

輸入等價(jià)類 有效等價(jià)類 無效等價(jià)類
郵箱的組成 (1)小寫字母、數(shù)字和‘.’、@ (2)在非小寫字母、數(shù)字和‘.’、@的字符
用戶名首位 (3)小寫字母或數(shù)字 (4)以‘.’開頭 (5)以@開頭
用戶名長度 (6)6-30個(gè)字符之間 (7)小于6個(gè)字符 (8)大于30個(gè)字符
@符號和‘.’ (9)@后面要以*.*結(jié)束(*為任意字符串) (10)沒有@符號 (11)以@符號結(jié)尾 (12)@符號后面沒有‘.’(13)以‘.’結(jié)尾 (14)@ 符號和‘.’沒有字符串

覆蓋等價(jià)類的測試用例:

符號 輸入 覆蓋等價(jià)類 期望結(jié)果
1 zhangyuting313 @gmail.com (1)、(3)、(6)、(9) 有效輸入
2 zhang-yuting313 @gmail.com (2) 無效輸入
4 .zhangyuting313 @gmail.com (4) 無效輸入
4 @zhangyuting313 @gmail.com (5) 無效輸入
5 yu @gmail.com (7) 無效輸入
6 zhangyuting313124567896321456987569 @gmail.com (8) 無效輸入
7 zhangyuting313gmail.com (10) 無效輸入
8 zhangyuting313@ (11) 無效輸入
9 zhangyuting313@gmailcom (12) 無效輸入
10 zhangyuting313@gmail. (13) 無效輸入
11 zhangyuting313@.com (14) 無效輸入

2. 邊界值分析法

其實(shí)邊界值可以算是為了配合等價(jià)類而加的一個(gè)限制條件,一般會根據(jù)略小于最小值、略大于最大值、等于最小值/最大值進(jìn)行邊界值的一些驗(yàn)證;一般來說,關(guān)于區(qū)間型數(shù)據(jù)邊界值的測試,大多都是略小于最小值和略大于最大值是不滿足要求的,中間的數(shù)據(jù)是滿足需求的。 邊界值附近的數(shù)據(jù)確定的幾種方法:

項(xiàng) 邊界值 測試用例的設(shè)計(jì)思路
字符 起始-1個(gè)字符/結(jié)束+1個(gè)字符 假設(shè)一個(gè)文本輸入?yún)^(qū)域允許輸入1~255個(gè)字符,輸入1個(gè)和255個(gè)字符作為有效等價(jià)類;輸入0個(gè)和256個(gè)字符為無效等價(jià)類,這幾個(gè)數(shù)值都屬于邊界條件值
數(shù)值 開始位-1/結(jié)束位+1 數(shù)據(jù)的輸入域?yàn)?~999,其最小值為1,最大值為999,則0、1000為邊界值
空間 小于空余空間一點(diǎn)/大于滿空間一點(diǎn) 測試數(shù)據(jù)存儲時(shí),使用比最小剩余空間大一點(diǎn)(幾千字節(jié))的文件作為最大值檢驗(yàn)的邊界條件
方向 剛剛超過/剛剛低于 整數(shù)的話考慮最低值-1/最大值+1;其他非整數(shù)情況根據(jù)實(shí)際情況少于/大于最小/最大值
報(bào)表 第一行和最后一行 第一行和最后一行
循環(huán)結(jié)構(gòu) 第2次和倒數(shù)第2次循環(huán) 第一次/小于最后一次循環(huán)

舉例一: 還是以上面要求玩家輸入以年月表示的日期來作為例子。假設(shè)日期限定在1990年1月~2049年12月,并規(guī)定日期由6位數(shù)字字符組成,前4位表示年,后2位表示月。現(xiàn)用等價(jià)類劃分法設(shè)計(jì)測試用例,來測試程序的"日期檢查功能",下面是關(guān)于邊界值需要檢測的點(diǎn)。

序號 輸入及操作說明 期望的測試結(jié)果
1 輸入198912 不滿足
2 輸入199001 滿足
3 輸入199002 滿足
4 輸入204911 滿足
5 輸入204912 滿足
6 輸入205001 不滿足

舉例二: 購買一個(gè)寶箱,一次性最多只能購買5個(gè),以邊界值的標(biāo)準(zhǔn)可選取5個(gè)(正好等于)、6個(gè)(剛剛大于)、4個(gè)(剛剛小于),3個(gè)(正常值)作為邊界值來測試。

序號 輸入及操作說明 期望的測試結(jié)果
1 一次性成功購買五個(gè) 購買成功
2 一次性購買6個(gè) 不能購買
3 一次性后買4個(gè) 購買成功
4 一次性購買3個(gè) 購買成功

3. 錯誤推測法

沒有確定的步驟,很大程度上是憑經(jīng)驗(yàn), 結(jié)合以往測試經(jīng)驗(yàn)和直覺設(shè)計(jì)軟件在功能和流程上可能存在的各種錯誤,進(jìn)行容錯性測試。例如輸入數(shù)據(jù)為零或輸出數(shù)據(jù)為零時(shí)容易發(fā)生錯誤的情況,所以可選擇輸入值為零的例子,以及使輸出值為零的例子;又如輸入表格為“空”或輸入表格只有一行是較易出錯誤的情況,所以可選擇表示這些情況的例子。根據(jù)字面意思,也就是列出可能出現(xiàn)問題的點(diǎn),猜測哪些情況可能會有問題。

舉例一: 如面購買寶箱的例子,針對于需求,僅是對于給出的數(shù)據(jù)進(jìn)行了測試,但是在實(shí)際情況中,實(shí)際要求中需要注意的點(diǎn)。根據(jù)平時(shí)測試,出現(xiàn)過問題的地方,所以又應(yīng)該考慮到以下的測試點(diǎn):

a.嘗試購買-1個(gè)寶箱

b.嘗試購買0個(gè)寶箱

c.多次購買小于5個(gè)寶箱

d.多次購買5個(gè)寶箱

e.購買寶箱后重啟客戶端/服務(wù)器

f........

舉例二:對于游戲中,需要做屏蔽詞功能,需要考慮到以下玩家會進(jìn)行操作的功能點(diǎn)進(jìn)行測試(多多自走棋為例),我們需要考慮到所有可能出現(xiàn)玩家輸入信息的地方,根據(jù)對平時(shí)對項(xiàng)目的熟悉以及自己的經(jīng)驗(yàn),想到一些可能會出現(xiàn)問題的地方:

a.創(chuàng)建賬號(玩家填寫角色名稱)

b.聊天功能(世界聊天、好友私聊、隊(duì)伍聊天、發(fā)送邀約信息、制圖工坊、房間隊(duì)伍聊天、局內(nèi)戰(zhàn)斗聊天、局內(nèi)私聊、局內(nèi)觀眾、局內(nèi)裁判、觀戰(zhàn)發(fā)送聊天信息)

c.個(gè)人信息(玩家修改昵稱)

d.自建房間(玩家創(chuàng)建/修改房間昵稱)

4. 場景法

百度百科對場景法的解釋是:通過運(yùn)用場景來對系統(tǒng)的功能點(diǎn)或業(yè)務(wù)流程的描述,從而提高測試效果的一種方法。用例場景來測試需求是指模擬特定場景邊界發(fā)生的事情,通過事件來觸發(fā)某個(gè)動作的發(fā)生,觀察事件的最終結(jié)果,從而用來發(fā)現(xiàn)需求中存在的問題。我們通常以正常的用例場景分析開始,然后再著手其他的場景分析。場景法一般包含基本流和備用流,從一個(gè)流程開始,通過描述經(jīng)過的路徑來確定的過程,經(jīng)過遍歷所有的基本流和備用流來完成整個(gè)場景。場景主要包括4種主要的類型:正常的用例場景,備選的用例場景,異常的用例場景,假定推測的場景。 在一個(gè)游戲功能中,將大功能拆分為一個(gè)個(gè)小功能,而這些小功能就可以視為一個(gè)個(gè)小場景,這些小場景的集合就成了這個(gè)完整的功能模塊。

舉例,比如多多自走棋的通行證每周挑戰(zhàn)功能:

根據(jù)這個(gè)界面,我們可以分為以下幾個(gè)部分:

a.每日獎勵

b.經(jīng)驗(yàn)等級

c.具體任務(wù)信息

d.購買等級

e.獎勵展示

f.視頻播放

g.幫助按鈕

h.購買等級

以上這些小功能以玩家可能會涉及到的操作為出發(fā)點(diǎn),我們可以理解為一個(gè)個(gè)小場景,將他們組合起來就構(gòu)成了這個(gè)完整的功能,這些小功能構(gòu)成了整個(gè)每周挑戰(zhàn)這個(gè)功能。以上的這些小功能應(yīng)該更多以玩家的角度進(jìn)行考慮。

5. 因果圖法和判定表

等價(jià)類劃分方法和邊界值分析方法,都是著重考慮輸入條件,但未考慮輸入條件之間的聯(lián)系、相互組合等。考慮輸入條件之間的相互組合,可能會產(chǎn)生一 些新的情況。但要檢查輸入條件的組合不是一件容易的事情,即使把所有輸入條件劃分成等價(jià)類,他們之間的組合情況也相當(dāng)多,因此需要考慮采用一種適合于描述對于多種條件的組合,相應(yīng)產(chǎn)生多個(gè)動作的形式來考慮設(shè)計(jì)測試用例,這就需要利用因果圖。

下面先了解一下因果圖得一些規(guī)則,下面以圖的形式詳細(xì)說明6種因果邏輯。

c表示原因,e表示結(jié)果:

a.恒等:如果原因?yàn)檎妫敲唇Y(jié)果必定為真。

b.非:只有原因?yàn)榧伲Y(jié)果才為真。

c.與:只有2個(gè)原因都為真,那么結(jié)果為真。

d.或:2個(gè)原因中有一個(gè)為真時(shí),結(jié)果就為真。

e.與非:先與后非。

f.或非:先或后非。

g.排他性約束:各個(gè)原因之間不能同時(shí)為真, 但可以同時(shí)為假。

h.包含性約束:各個(gè)原因中總有一個(gè)為真。即可以同時(shí)為真,但不可以同時(shí)為假。

i.必要性約束:當(dāng)原因a為真時(shí),原因b必須同時(shí)為真

j.唯一性約束:有且只有原因a和原因b中的一個(gè)為真但是原因b為真時(shí),原因a既可以為真,也可以為假。

k. 掩碼標(biāo)記(結(jié)果約束):如果結(jié)果b為真,那么結(jié)果a一定為假,如果結(jié)果b為假,則結(jié)果a的狀態(tài)不定

舉例一: 以多多自走棋為例,玩家查看圖鑒中的棋子:第一步必須是A(點(diǎn)擊倉庫)或B(點(diǎn)擊大廳右上角圖鑒按鈕),第二步必須是C(點(diǎn)擊棋子圖鑒),在此情況下玩家進(jìn)入到棋子圖鑒界面,但如果第一步不正確,得出結(jié)論L;如果第二步驟不是C,則得出結(jié)論M。 首先我們整理一下,得出以下信息以及因果圖:

根據(jù)題意,原因和結(jié)果如下:

原因:

1——第一步是A;

2——第一步是B;

3——第二步是點(diǎn)擊棋子圖鑒。

結(jié)果:

21——進(jìn)入棋子圖鑒;

22——得出結(jié)論L;

23——得出結(jié)論M。

其對應(yīng)的因果圖如下:

11為中間節(jié)點(diǎn);考慮到原因1和原因2不可能同時(shí)為1,因此在因果圖上施加E約束。

根據(jù)因果圖建立判定表: 因?yàn)?一般可以根據(jù)因果圖畫出判定表,判定表里只有0,1(1代表真,0代表假)兩個(gè)數(shù)字。若輸入條件有n個(gè),則用例考慮的情況有2n種,即8種:

1 2 3 4 5 6 7 8
條件(原因) 1 1 1 1 1 0 0 0 0
條件(原因) 2 1 1 0 0 1 1 0 0
條件(原因) 3 1 0 1 0 1 0 1 0
條件(原因) 11 1 1 1 1 0 0
動作(結(jié)果) 22 0 0 0 0 1 1
動作(結(jié)果) 21 1 0 1 0 0 0
動作(結(jié)果) 23 0 1 0 1 0 1

表中8種情況的左面兩列情況中,原因①和原因②同時(shí)為1,這是不可能出現(xiàn)的,故應(yīng)排除這兩種情況。表的最下一欄給出了6種情況的測試用例,這是我們所 需要的數(shù)據(jù)。所以用例有:

a.1,3------21

b.1-----23

c.2,3----21

d.2-----23

e.3---22

f.不進(jìn)行任何操作-----22,23

6. 正交試驗(yàn)法

利用正交實(shí)驗(yàn)設(shè)計(jì)方法設(shè)計(jì)測試用例,比使用等價(jià)類劃分、邊界值分析、因果圖等方法有以下優(yōu)點(diǎn):節(jié)省測試工作工時(shí);可控制生成的測試用例數(shù)量;測試用例具有一定的覆蓋率。

舉例:

image

這是游戲賬號注冊的一個(gè)窗口。我們可以看到要測試的控件有3個(gè):郵箱地址、密碼、驗(yàn)證碼,也就是要考慮的因素有三個(gè);而每個(gè)因素里的狀態(tài)有兩個(gè):填與不填。 選擇正交表時(shí)分析一下:

a.表中的因素?cái)?shù)>=3;

b.表中至少有3個(gè)因素?cái)?shù)的水平數(shù)>=2;

c.行數(shù)取最少的一個(gè)。

從正交表公式中開始查找,結(jié)果為:

L4(23)(0-填 1-不填):

1 2 3
1 0 0 0
2 0 1 1
3 1 0 1
4 1 1 0

變量映射如下

郵箱地址 密碼 驗(yàn)證碼
1
2 不填 不填
3 不填 不填
4 不填 不填

測試用例如下:

a.填寫郵箱地址、填寫密碼、填寫驗(yàn)證碼

b.填寫郵箱地址、不填密碼、不填驗(yàn)證碼

c.不填郵箱地址、填寫密碼、不填驗(yàn)證碼

d.不填郵箱地址、不填密碼、填寫驗(yàn)證碼 增補(bǔ)測試用例

e.不填郵箱地址、不填密碼、不填驗(yàn)證碼

從測試用例可以看出:

a.如果按每個(gè)因素兩個(gè)水平數(shù)來考慮的話,需要8個(gè)測試用例,而通過正交實(shí)驗(yàn)法進(jìn)行的測試用例只有5個(gè),大大減少了測試用例數(shù)。用最小的測試用例集合去獲取最大的測試覆蓋率。

b.因素?cái)?shù)不相同 如果因素?cái)?shù)不同的話,可以采用包含的方法,在正交表公式中找到包含該情況的公式,如果有N個(gè)符合條件的公式,那么選取行數(shù)最少的公式。

c.水平數(shù)不相同 采用包含和組合的方法選取合適的正交表公式。


我們是行者AI,我們在“AI+游戲”中不斷前行。

如果你也對游戲感興趣,對AI充滿好奇,就快來加入我們吧~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,321評論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,559評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,442評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,835評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,581評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,922評論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,931評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,096評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,639評論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,374評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,591評論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,104評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,789評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,196評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,524評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,322評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,554評論 2 379

推薦閱讀更多精彩內(nèi)容