軟件測試設計方法,軟件測試小白必備入門知識
剛入行做軟件測試時,我曾天真地以為這工作就是“點點點”——對著界面把按鈕按一遍,輸入框隨便填點東西,沒報錯就算測完了。直到第一次獨立負責一個用戶注冊模塊,提交測試報告后被領導叫到辦公室:“你這用例里,用戶名為空、包含特殊字符的情況怎么沒測?手機號格式輸錯了系統沒提示,你也沒發現?” 我當時臉漲得通紅,才明白:沒有系統的測試設計方法,測試就像盲人摸象,漏測、錯測是遲早的事。
如果你也是剛入門的測試小白,正愁不知道怎么設計測試用例,不知道從哪些角度覆蓋功能,這篇文章就帶你啃下“測試設計方法”這塊硬骨頭。我會用最通俗的話講清楚5個核心方法,每個方法都配具體例子,保證你看完就能上手練,從此告別“瞎點點”的尷尬。
為什么測試設計是小白的“必修課”?
很多小白會有誤區:“測試不就是驗證功能能不能用嗎?開發寫完代碼,我點點看正常就完事了?!?但真實工作中,用戶的使用場景千奇百怪——有人會輸超長的用戶名,有人會故意填錯誤的手機號,有人會在支付到一半時突然斷網……這些“極端情況”和“異常場景”,如果測試時沒考慮到,上線后就可能變成用戶投訴的“bug”。
測試設計的本質,就是用系統化的方法,把“用戶可能怎么用”“系統可能出什么錯”都提前想清楚,再轉化成可執行的測試用例。就像蓋房子前要畫圖紙,測試前也要“畫”出測試的“圖紙”——用例設計得越全面,系統上線后就越穩定。
我見過不少新人因為不會設計用例,導致漏測關鍵場景,被開發吐槽“你這測試跟沒測一樣”,甚至影響項目上線進度。所以,把測試設計方法學扎實,是從小白到合格測試的第一步。
5個核心測試設計方法,小白也能立刻上手
一、等價類劃分法:把“相似情況”打包測,效率翻倍
是什么:等價類劃分法,簡單說就是把“輸入條件”分成幾類,每類中選一個“代表”來測——只要這個“代表”沒問題,就默認這一類情況都沒問題。
為什么用:比如測試“用戶名長度”,要求是6-20位字符。如果從6位到20位每個長度都測一遍(6位、7位、…、20位),要測15次,太浪費時間。但用等價類劃分,就能把輸入分成“有效等價類”(6-20位,符合要求)和“無效等價類”(20位,不符合要求),每類選1個例子測,3次就能覆蓋主要情況。
怎么用(3步走):
1. 找輸入條件:比如“用戶名”“密碼”“手機號”等;
2. 分等價類:對每個條件,按“符合要求”(有效)和“不符合要求”(無效)分成幾類;
3. 選代表值:從每類里挑1-2個典型值當測試用例。
舉個栗子:測試“手機號登錄”功能,手機號要求是“11位數字,且以1開頭”。
有效等價類:11位數字、以1開頭(比如13800138000);
無效等價類:
長度不對:10位(1380013800)、12位(138001380000);
開頭不對:2開頭(23800138000)、字母開頭(a3800138000);
非數字:包含字母(13800a38000)、包含符號(1380038000)。
測試用例就可以從這幾類里各選一個值,比如測13800138000(有效)、1380013800(無效-長度短)、138001380000(無效-長度長)、23800138000(無效-開頭不對)、13800a38000(無效-非數字)。
小白注意:別漏了“無效等價類”!很多bug都藏在用戶“瞎操作”的場景里,比如輸錯格式、長度超限等。我剛開始就總忘測無效類,結果上線后用戶反饋“輸10位手機號居然能提交”,被領導批評了好久。
二、邊界值分析法:專挑“臨界點”下手,bug最喜歡藏在這里
是什么:邊界值分析法,就是專門測“邊界值”的方法。比如要求“6-20位”,那6位、7位、19位、20位是有效邊界,5位、21位是無效邊界——這些“臨界點”最容易出問題。
為什么用:開發寫代碼時,經常會犯“邊界判斷錯誤”的毛病。比如要求“=6”寫成“>6”。這時候測中間值(比如10位)可能沒問題,但測邊界值(6位、20位)就會暴露bug。
怎么用(記個口訣):“開內閉外,加減一”。
如果條件是“閉區間”(比如6≤長度≤20),邊界值就是6、20,以及兩邊的鄰居5(6-1)、21(20+1);
如果條件是“開區間”(比如6<長度<20),邊界值就是7(6+1)、19(20-1),以及6、20。
舉個栗子:測試“密碼長度”,要求“8-16位字符(包含8和16)”。
邊界值就是:7位(8-1)、8位(最小有效)、9位(有效內)、15位(有效內)、16位(最大有效)、17位(16+1)。
測試用例就測這幾個長度的密碼,比如7位(1234567)、8位(12345678)、16位(1234567890123456)、17位(12345678901234567)。
小白注意:邊界值和等價類通常一起用。等價類負責“覆蓋范圍”,邊界值負責“扎緊籬笆”,兩者結合能讓測試更全面。我之前測一個“年齡輸入框(18-60歲)”,用等價類測了20歲(有效)、17歲(無效),但沒測18歲和60歲,結果開發把“>=18”寫成了“>18”,導致18歲用戶無法提交,這就是漏了邊界值的鍋。
三、因果圖法:條件太多理不清?用“圖”把關系畫出來
是什么:因果圖法,就是把“輸入條件”(因)和“輸出結果”(果)之間的關系,用圖形(比如“與、或、非”)畫出來,再根據圖設計用例。適合輸入條件多、條件之間有組合關系的場景。
為什么用:比如測試“購物車結算”,可能有多個條件:“商品庫存是否充足”“優惠券是否可用”“用戶是否登錄”——這些條件組合起來,會對應不同的結果(比如“結算成功”“提示庫存不足”“提示請登錄”)。如果靠腦子記,很容易漏組合;用因果圖畫出來,就能一目了然。
怎么用(4步):
1. 列“因”(輸入條件)和“果”(輸出結果);
2. 畫因果圖:用“∧(與)、∨(或)、?(非)”等符號表示條件之間的關系;
3. 轉判定表:把因果圖轉化成表格,每行是一個條件組合+對應結果;
4. 寫用例:從判定表中挑有代表性的組合當用例。
舉個栗子:測試“登錄功能”,輸入條件有“用戶名是否為空”(A:空/非空)、“密碼是否為空”(B:空/非空),輸出結果有“提示用戶名不能為空”(Y1)、“提示密碼不能為空”(Y2)、“跳轉到首頁”(Y3)。
因果圖關系:
A為空Y1;
A非空且B為空Y2;
A非空且B非空Y3;
判定表(簡化版):
A(用戶名) | B(密碼) | 結果 |
---|---|---|
空 | 空/非空 | Y1 |
非空 | 空 | Y2 |
非空 | 非空 | Y3 |
測試用例就可以對應這3種情況:用戶名空(密碼空/非空)、用戶名非空+密碼空、用戶名非空+密碼非空。
小白注意:因果圖法剛開始學可能覺得復雜,但多畫幾次就順手了。對于條件組合多的功能(比如支付、權限控制),用它能避免漏測“條件交叉”的場景。
四、場景法:站在用戶視角“走流程”,覆蓋真實使用場景
是什么:場景法,就是模擬用戶“實際使用流程”來設計用例。比如用戶用打車軟件,可能的流程是“打開App輸入目的地選車型確認下單司機接單行程結束支付”——每個步驟都可能遇到正?;虍惓G闆r,場景法就是把這些“流程路徑”都走一遍。
為什么用:很多功能bug不是單個步驟有問題,而是“流程走不通”。比如“下單后沒收到短信通知”“支付成功但訂單顯示未支付”,這些都需要按真實流程測才能發現。
怎么用(3步):
1. 畫流程圖:把功能的正常流程、備選流程(比如選車型時切換車型)、異常流程(比如下單時網絡中斷)畫出來;
2. 走路徑:從起點到終點,把所有可能的路徑都走一遍;
3. 寫用例:每條路徑對應一個測試用例。
舉個栗子:測試“電商下單流程”,核心流程是“商品加購進入購物車選擇商品去結算填寫收貨地址提交訂單支付”。
正常路徑:按上面步驟走,支付成功,訂單狀態變為“待發貨”;
備選路徑:加購后取消商品、結算時修改收貨地址;
異常路徑:加購時商品已售罄、結算時地址為空、支付時余額不足、支付過程中網絡斷開。
每個路徑都要設計用例,比如“加購已售罄商品提示‘商品已售罄,無法加購’”“支付時余額不足提示‘余額不足,請更換支付方式’”。
小白注意:場景法的關鍵是“代入用戶視角”。想想如果你是用戶,會怎么操作?會不會中途退出?會不會誤觸按鈕?把自己當成“找茬的用戶”,流程里的坑就能挖得更干凈。
五、錯誤推測法:靠“經驗+直覺”找bug,老測試的“壓箱底”技巧
是什么:錯誤推測法,就是根據“以往經驗”或“直覺”,推測系統可能哪里會出錯,然后針對性設計用例。比如“輸入框可能不防XSS攻擊”“連續點擊按鈕可能重復提交”——這些往往是等價類、邊界值覆蓋不到的“隱藏bug”。
為什么用:有些bug很“刁鉆”,按常規方法測不出來,這時候就需要靠“經驗積累”和“逆向思維”。比如老測試看到“提交按鈕”,會立刻想到“連續點擊會不會重復提交”;看到“文件上傳”,會想到“傳超大文件、空文件、病毒文件”。
怎么用(2個方向):
1. 總結歷史bug:比如之前測登錄功能時,發現“驗證碼過期后仍能提交”,那下次測類似功能就專門加一條“驗證碼過期后提交”的用例;
2. 反向思考:故意“搞破壞”——輸特殊字符(比如)、快速點擊按鈕、斷網重連、切換瀏覽器/手機型號等。
舉個栗子:測試“用戶評論功能”,用錯誤推測法可以設計這些用例:
評論內容輸入超長文本(比如10000字),看是否有字數限制;
輸入特殊符號(比如@¥%、alert(1)),看是否會顯示異?;蛞lXSS漏洞;
連續點擊“提交評論”按鈕,看是否會發多條重復評論;
斷網時提交評論,看是否會提示“網絡異?!?,恢復網絡后是否正常提交。
小白注意:錯誤推測法需要積累,但新人也能上手——多看看同類型產品的用戶反饋(比如App Store評論里的“bug吐槽”),多問老同事“這個功能以前出過什么問題”,慢慢就能培養“找bug的直覺”。
方法不是孤立的,學會“組合拳”才是王道
實際測試中,很少只用一種方法設計用例。比如測“注冊功能”,你需要:
用場景法梳理整個注冊流程(輸入手機號收驗證碼設置密碼提交注冊);
對每個步驟的輸入框(手機號、驗證碼、密碼),用等價類+邊界值覆蓋長度、格式等條件;
如果注冊時需要勾選“用戶協議”(條件A)和“隱私政策”(條件B),只有都勾選才能提交,這時候用因果圖分析條件組合;
最后用錯誤推測法補充“驗證碼輸錯3次是否鎖定”“密碼和確認密碼不一致是否提示”等場景。
把這些方法“混搭”起來,測試用例才能既全面又高效。我剛開始獨立寫用例時,只會單獨用等價類,結果領導一看就說:“流程場景呢?異常情況呢?” 后來學會組合方法,用例質量才明顯提升。
給小白的3條避坑指南
1. 別死記硬背方法,先理解需求:方法是工具,需求是根本。如果連需求都沒看懂(比如“用戶名支持特殊字符嗎?”“密碼是否區分大小寫?”),再好的方法也用不對。拿到需求文檔,先問清楚“這個功能是給誰用的?用戶會怎么用?有什么限制條件?”
2. 從“小功能”練起,積累手感:剛開始別想著一口吃成胖子,先從簡單功能(比如登錄、注冊、搜索)開始練手,把每個方法用熟。我當時就是從“搜索框測試”開始的,練了3個搜索功能后,等價類和邊界值就用得很溜了。
3. 別怕犯錯,測試用例是“改”出來的:沒人一開始就能寫出完美的用例。我第一版用例被領導打回3次,改到第4版才通過——每次修改都標注“這里漏了邊界值”“那里少了異常場景”,改著改著就知道“坑”在哪里了。
軟件測試設計方法,說到底是“把復雜問題拆解成可執行步驟”的思維方式。剛開始可能覺得難,但只要把這5個方法吃透,多練、多總結,很快就能從“瞎點點”的小白,變成能獨立設計用例的“合格測試”。
記?。簻y試的價值,不在于發現多少bug,而在于通過系統化的設計,讓用戶少遇到bug。這條路雖然需要耐心,但每一次用例設計的進步,都會讓你離“靠譜測試”更近一步。
尊重原創文章,轉載請注明出處與鏈接:http://www.abtbt.com.cn/fangfa/744813.html,違者必究!