功能測試用例不好寫?來自阿里大佬的設(shè)計方法分享

測試用例可以用來衡量一個項目測試質(zhì)量,因此在平時的測試流程中,編寫測試用例就是測試過程中很重要的一步,每一個測試工程師都需要并且非常熟練的編寫測試用例,能在編寫測試用例中盡可能的覆蓋任何異常的測試點;如何能編寫優(yōu)秀的測試用例,就需要測試人員掌握更多的用例編寫技巧以及思考出更多的測試點。針對于游戲測試,大多更偏向于功能方面的測試,根據(jù)功能測試用例逐項測試,檢查產(chǎn)品是否達到了策劃的需求。功能測試主要采用黑盒測試策略設(shè)計測試用例,進行測試。


主要功能模塊測試的測試用例設(shè)計方法包括:等價類劃分、邊界值分析、錯誤推測法、因果圖和判定表、場景法、正交實驗法。下面就以上幾種方法進行一些分享。

1. 等價類劃分法

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

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


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


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


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

對輸入的要求:

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

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

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

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

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

等價類表:


覆蓋等價類的測試用例:


2. 邊界值分析法

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


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


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


3. 錯誤推測法

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


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

a.嘗試購買-1個寶箱

b.嘗試購買0個寶箱

c.多次購買小于5個寶箱

d.多次購買5個寶箱

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


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

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

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

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

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

資源分享

給大家看一個寶典吧,不管是面試還是日常的知識積累,是我?guī)啄晗聛淼囊稽c點知識儲備,下面這些是我的收集和整理的資料,對于開始學(xué)習(xí)【軟件測試】或是技能進階的朋友來說,絕對是最全面的教程倉庫,這個倉庫也陪伴我走過了最困難的日子,希望也能幫助到你,裙里644拿956資源177


4. 場景法

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


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

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

a.每日獎勵

b.經(jīng)驗等級

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

d.購買等級

e.獎勵展示

f.視頻播放

g.幫助按鈕

h.購買等級

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

5. 因果圖法和判定表

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

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

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

a.恒等:如果原因為真,那么結(jié)果必定為真。


b.非:只有原因為假,結(jié)果才為真。


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


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


e.與非:先與后非。


f.或非:先或后非。


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


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


i.必要性約束:當原因a為真時,原因b必須同時為真


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


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


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

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

原因:

1——第一步是A;

2——第一步是B;

3——第二步是點擊棋子圖鑒。

結(jié)果:

21——進入棋子圖鑒;

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

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

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

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


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


表中8種情況的左面兩列情況中,原因①和原因②同時為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.不進行任何操作-----22,23

6. 正交試驗法


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

舉例:

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

a.表中的因素數(shù)>=3;

b.表中至少有3個因素數(shù)的水平數(shù)>=2;

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

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

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


變量映射如下


測試用例如下:

a.填寫郵箱地址、填寫密碼、填寫驗證碼

b.填寫郵箱地址、不填密碼、不填驗證碼

c.不填郵箱地址、填寫密碼、不填驗證碼

d.不填郵箱地址、不填密碼、填寫驗證碼 增補測試用例

e.不填郵箱地址、不填密碼、不填驗證碼

從測試用例可以看出:

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

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容