冪等測試


1.什么是冪等

  • 數學

       f(n) = 1^n  就是一個冪等函數

  • 編程

       任意多次執行所產生的影響與一次執行相同,不用擔心重復執行會對系統造成改變

2.為什么要做冪等

  • 故障:

     保底系統因為線上swallow消息重復發送,產生了三個線上問題:
    a、ts-treasure-pool大面積告警,全部為db主鍵沖突的錯誤。
    b、同一筆保底抵扣數據,在歸還保底時當做兩筆進行歸還,影響總數據量1500筆左右。
    c、同一筆保底申請審核通過后,被當做兩筆審核通過進行了保底占用和預付款生成,共9筆。

3.什么時候要做冪等

  • 場景:

    同樣的請求可能需要重試(或可能被重復調用)的情況
    按業務場景做針對性判斷,利益相關型業務(支付、結算等)

  • 接口類型:

     PegionService 接口
     Swallow消費機
     Http接口

4.如何做到冪等

  • 一般情況下:利用唯一交易號(或流水號)實現

         eg1:創建統一訂單  case337

  • eg2:更新訂單可用數量  case2178

        eg3: 支付成功后消耗抵用券 PCT_CouponConsume

               冪等要做到:
                    1、同一個OutBizID,多次消耗該抵用券的結果都是成功。
                    2、但對於一個CouponID,只能被消耗一次,如果換一個OutBizID來調用時應該始終返回失敗。

5.如何測試冪等

  • 方法

     可在iTest上新增待測Pegions接口、Http接口、發送指定topic的swallow消息的冪等測試用例,重復執行來模擬多次調用

  • 檢查點

      檢查接口返回的Response是否冪等
      檢查對數據庫數據的變更影響是否冪等

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM