論用例健壯性的重要
最近出了2個類似問題,此處寫下,以作為警醒
問題1:
背景:電商類網站,為了增加用戶回流,增加用戶購買力度,做了一個和用戶等級相關活動
需求:用戶等級為g0 -g5,現在有一批代金券有等級領取限制。用戶等級和代金券等級相同時,用戶可領取到這張代金券;否則代金券顯示“等級不符不可領取”。
於是我設計用例時這樣的:
代金券領取等級: 代金券1(領取等級0),g1(領取等級1)
用戶等級:user1(用戶等級go) , user2(用戶等級g1)
即可以實現以下場景:
user1 --> 代金券1 ,等級相同,可以領取
user1 -->代金券2,等級不同,不能領取
user2 --> 代金券1,等級不同,不可領取
user2 -->代金券2,等級相同,可以領取
實際測試時,按上訴用例進行覆蓋是沒問題的,但是在實際測試過程中,我有一個g5的用戶,在使用g5這個用戶進行用戶覆蓋的時候卻出了問題,開發由於xxxx原因在處理g5等級用戶時存在問題
然後我嘗試使用g4的用戶去覆蓋用例沒問題,當時慶幸有這樣一個g5的用戶讓我發現了問題。
問題2:
做接口測試,裏面有很多邏輯判斷
其中一條判斷規則: 必須要有A。A直接從數據庫讀取對應字段
這個A在數據庫的定義:int(11)
我一看int(11),這明顯就指A的個數嘛
設計用例時,針對A,我就設計了兩個數,0和1
實際驗證時,也與預期結果一致。
聯想到上次沒有考慮健壯性,可能存在的問題,針對A用例改成 0,1,2
預期:2應該和1結果保持一致
實際:2和0的結果保持一致
詢問開發後,A這個字段含義:0表示 沒有A,1表示有A(並不是指A的個數)
雖然問題都在測試階段等到驗證並解決,但問題仍值得反思:
1、對於有範圍值的需要按邊界值設計用例,另外還需要考慮用例的健壯性!
2、不要太自以為是!
論用例健壯性的重要