我家的貓,可能比我更懂測試

#測試策略 #探索式測試

我家的貓,可能比我更懂測試 我家有一隻米克斯玳瑁,叫帽帽。 某天下班回家,書桌上的小小兵公仔不見了。最後在桌子底下找到它,旁邊坐著帽帽,一臉「它自己掉的」。 公仔放在那裡很久了,從來沒倒過。牠只是用前腳輕輕推了一下,想看看會發生什麼事。 這動作我很熟。QA 每天在做的,也是推推看,會不會掉。 圖說:帽帽,米克斯玳瑁,推東西專家。 本文地圖 一、把東西推下桌:不推推看,怎麼知道不會掉 帽帽推公仔的時候,看起來就是在確認:這東西放得穩不穩?推了會怎樣? 規格書上寫「使用者點擊送出按鈕」,沒寫使用者會連點三下、送出到一半切 App、網路斷掉又回來。功能放在那裡看起來很穩,就像那個小小兵,直到有人推了一下。 沒推過的「看起來沒問題」,只是猜的。 可以先從這幾種「推法」開始: | 推法 | 例子 | 想確認什麼 | | | | | | 重複推 | 按鈕連點、API 重送 | 會不會重複扣款、重複建立 | | 推到一半放手 | 送出中切背景、殺 App | 狀態會不會卡在中間 | | 換個角度推 | 空值、超長字串、emoji | 輸入驗證有沒有漏 | | 拿掉底下的東西 | 斷網、權限被關 | 錯誤處理和提示 | 推東西要在自己家推。破壞性測試請在測試環境做,不要拿正式環境的資料試「會不會掉」。 二、鑽沙發底下:往沒人看的地方找 bug 帽帽最愛鑽沙發底下。那裡又暗又窄,人類從來不會去看,牠偏偏要進去,出來的時候常常頂著一身灰。 貓就是這樣,越是沒人去過的地方越想鑽。 新功能上線前也是這樣。測試案例是照已知的路走,但 bug 常常躲在沒人走過的角落。拿到新版本時,先留一段時間不看 test case,純粹當一隻好奇的貓:這個新按鈕長按會怎樣?這個新頁面從推播點進來,和從首頁點進來一樣嗎? 探索前先寫一句任務,例如「花 30 分鐘探索新的分享功能,看跨 App 分享時資料會不會掉」。 三、每天巡同一個點:桌下、床上,反覆確認 帽帽每天都有固定路線:桌子底下、床上,聞一聞、踩一踩,確認一切跟昨天一樣。 這就是回歸測試。 功能昨天是好的,不代表今天還是好的。工程師修 A 的時候,可能碰到 B。貓不會因為昨天聞過了,今天就跳過。 但貓也很聰明,牠不會每個角落都巡,只巡牠在意的地方。回歸也是,全部重跑太貴,挑最核心、最常壞、改動最近的地方優先。 每次發版都把 500 條 test case 從頭跑一遍,跑到一半時間不夠,後面的直接放生。 列出「每次必巡」的核心路徑(登入、付款、主流程),先跑完;剩下的依這次改動範圍挑。 四、半夜跑酷:bug 不會挑你方便的時間出現 帽帽白天大多在床上睡,到了半夜才開始跑酷,從客廳衝到房間再衝回來,完全不管人類要不要睡覺。 貓的作息不照人類的時間表,很多問題也是。 跨日、跨月、時區切換、凌晨的排程任務、同時有很多人操作,這些都是白天手動測試很難碰到的時段。測試時把時間當成一個輸入參數:改裝置時間、模擬 23:59 到 00:00、月底最後一天、閏年 2 月 29 日。 遇到「偶爾才發生」的 bug,先記下發生的時間點。很多「偶發」其實是「特定時間才發生」。 五、碗沒滿就叫:發現異常,馬上講清楚 這是帽帽最準時的技能。碗只要沒滿,牠就來叫。 牠不會等碗空了才講,也不會叫完就走。牠會走到碗旁邊,看著你,再看著碗。預期是滿的,實際是半碗,問題在哪裡一清二楚。 好的 bug 回報也是這樣: 結帳頁點「付款」後,訂單金額少了運費 🔴 環境: Android 14 · 測試環境 步驟: 1. 加入商品 2. 進入結帳 3. 點「付款」 預期: 金額 = 商品 + 運費 實際: 金額只有商品價格 頻率: 10 次中 10 次 預期、實際、在哪裡,一次講完。工程師不用回來問「你說的碗是哪個碗」。 六、最後,那個小小兵 貓推東西沒有惡意,QA 也一樣。我們推功能一下,不是想找開發麻煩,是想在使用者推之前先知道答案。 至於那個小小兵,現在被我移到書櫃最裡面了。嚴格說這不算修好,只是把它藏到推不到的地方。跟某些 hotfix 很像。