如何做版本相容性測試

JavaDog發表於2019-03-10

什麼是相容性

相容性(compatibility)--是指系統發生變更後表現一致的特性。相容性包括向下相容以及向上相容,


向下相容(downward compatibility),又稱向後相容(backwards compatibility),是指在一個程式(庫)更新到較新版本後,用舊版本程式系統或建立的資料仍能被正常使用(包括寫入)或操作,或在舊版本庫的基礎上開發的程式仍能正常編譯執行的情況。為避免對使用者產生影響,一般需支援向下相容。


向上相容(upward compatibility),又稱向前相容(forwards compatibility),是指在舊版本程式(庫)可以支援新版本資料或服務。一般在特殊情況下才會考慮向上相容,比如新功能釋出前,對舊功能改造使其向上相容,以避免新功能釋出過程中出現相容性問題。


不相容問題會導致已有服務的不可用,對於支付關鍵類鏈路,一旦服務不可用,造成的後果非常嚴重,引起交易建立及支付中斷。A+中臺應用,對接了多個站點,如果服務不向下相容,則需要所有接入站點改造,成本大;若站點未改造,則可能導致站點業務中斷,引發線上故障。

如何評估相容性

服務是否發生變更

外部服務的相容性分析:API、SPI、訊息、通知等和其他系統互動的定義是否有新增、修改、刪除,比如入參、出參、結果碼、異常處理邏輯等,是否向下相容;原則上不允許出現非向下相容的變更


釋出過程中是否存在相容性

釋出過程相容性分析(藍綠髮布或者beta釋出):新資料&舊服務、新系統&舊資料是否相容?


外部服務相容性

釋出過程中和外部服務的相容性分析:比如對接的商戶、渠道等合作方


是否存在DB變更

釋出過程中的DB相容性分析:新資料&舊服務、舊服務&新資料是否相容,比如欄位縮容,增加非空欄位。

相容性場景分析

1548248381943-196d060a-2201-4b13-8e72-bed061675f6c.png

常見的服務變更主要是新增、修改,涉及到入參、出參、結果碼等。以下是一些可能引起相容性問題的變更,其中大部分都可以通過CR服務變更時,進行相容性分析發現。


變更型別

變更點

備註

新增

新增非空屬性

存在舊客戶端調新服務時非空校驗失敗,導致服務失敗

修改

修改欄位型別

可能導致舊客戶端調新服務時反序列化失敗


修改欄位名

不相容


可選引數增加非空校驗

可能存在舊客戶端調新服務時非空校驗失敗,導致服務失敗


欄位縮容,如縮小值範圍等

不相容,若DB欄位縮容,可能導致值儲存失敗


修改結果碼

業務語義發生變化,可能影響下游系統

如何做版本相容性測試


相關文章