可重用知識塊:你的測試零件庫

#知識管理 #測試案例 #測試設計 #QA 成長

可重用知識塊:你的測試零件庫 新功能的需求文件昨天才定版,今天開始設計 case。 打開空白欄位,第一條:正常流程。第二條:必填欄位為空。第三條……停下來了。腦袋裡有個聲音:「這個功能有權限分級,我要確認哪些角色看得到、哪些看不到。還有並發的問題,上次那個 bug 就是兩個人同時送出……還有錯誤訊息格式,後端有沒有統一?」 繼續寫下去,越寫越覺得眼熟。登入態檢查、權限分級、空值與邊界值、並發、錯誤訊息。這五件事,上個功能寫過,上上個功能也寫過。 其實每個 QA 心裡都有一本這樣的清單,只是沒人把它寫出來。每次都在腦袋裡重跑一遍,每次都從白紙開始。換個人來設計,喚醒的版本又不一樣,漏的角度也不一樣。問題出在手邊沒有現成的零件。 一直重做的,其實是通用思路 測試設計裡,有很多思考其實跟這個功能無關,卻每次都被當成一次性工作重做。 設計購物車的 case,你會想到邊界值(數量 0、最大值、負數)。設計訊息發送功能,你還是會想邊界值。設計會員升等邏輯,你又想了一次。邊界值不是購物車專屬的,幾乎所有有輸入的功能都用得上。 問題在於,這個思路沒有名字、沒有固定的形式,每次都要從頭在腦袋裡喚醒一遍。 把反覆用到的測試思路整理成有名字、可以引用的零件,下次設計 case 就從「想清楚要測什麼」變成「選哪些零件組起來」。組裝比從零想快,而且寫成文字之後,別人也能直接拿去用,不必靠口耳相傳。 什麼能變成零件 不是所有東西都適合抽成零件。能抽的,是那些 換個功能也還成立 的部分。 測試模式。 一類功能的通用測試角度。「凡是有權限分級的功能,測這五個角度:自己的資料自己看得到、別人的資料看不到、越級操作要擋住、角色切換後即時生效、刪除帳號後權限是否正確回收。」這五條跟哪個功能都無關,是這類功能共用的骨架。整理下來,以後碰到有權限的功能,直接套上去當起點。 啟發式清單。 邊界值、狀態轉移、錯誤處理、非同步操作,這些問題換到哪個功能都能問。整理成一份清單,設計 case 前掃一遍,用來提醒自己有沒有漏,不是逐條照做的 script。要先放哪些角度,看風險:高風險的功能類型,零件要先覆蓋到。 共用測試資料設定。 標準帳號矩陣(管理員、一般用戶、無權限帳號、停用帳號)、環境前置條件(某個特定狀態下的資料快照)。這些每次都要重建,但本質上是可以預備好、反覆使用的。 怎麼把零件抽出來 別坐下來憑空寫一本「測試聖經」。那種做法通常會產出一份幾十頁的大文件,沒人看,三個月後也沒人維護。 從你已經做過的 case 裡反向抽。 寫完一組 case 之後,回頭問一個問題:「這裡面哪幾條,其實跟這個功能本身無關?換一個別的功能,這幾條還是成立的?」找到那部分,把它拉出來,給它一個名字,放進上一篇提到的通用參考層。 重點只有一個: 用過才抽,不要預先設計用不到的零件。 還沒遇過一個功能需要「並發操作測試」之前,你不知道那個零件長什麼樣子、邊界在哪裡。用過一次,才知道它有哪些必要的角度、哪些情況下不適用。在空白處預先設計,常常看起來很完整,真的用到才發現漏了一半。 零件會越用越完整 抽出一個零件之後,你會開始用它。用的時候會發現:「哦,這種情況它漏了一個角度。」 把那個角度補回去。 零件會隨著真實案例慢慢變厚。第一次抽出來的權限測試模式可能只有三條,用過五個功能之後變成七條,因為你在第二個功能踩到角色切換的邊界,在第四個功能踩到刪帳號後的殘留問題。 這也是為什麼要用過才抽:零件靠一次次實際使用補齊,沒用過的零件,沒機會被補。 設計 case 時,如果你一直感覺「這幾條我好像每次都在重寫」,那就是一個零件該誕生的信號。 可以從最近做的一組 case 開始:找出三到五條換個功能也成立的,複製出來,取個名字,例如「權限分級測試模式」,放進通用參考層。 下一篇:零件有了,但「這次改動要回歸哪些 case」還是算不出來,每次都靠記憶掃一遍,掃完還是不確定有沒有漏。怎麼把 case 連到業務規則,讓影響範圍在改動發生的那一刻自己浮現?