Contract Testing
契約測試
契約測試會檢查兩個可分開部署的系統,是否仍按照雙方約定的格式交換訊息。
另一個例子
用戶端預期 GET /profiles/42 會回傳特定欄位和狀態。持續整合(CI)會檢查服務提供端是否遵守約定;這項測試不能證明完整流程或正式環境的資料品質。
主要部分
- 01消費端契約
- 02提供端驗證
- 03相容性結果
什麼時候用
服務可以各自部署,而且要在不啟動整套系統的情況下檢查訊息相容性時,可以使用這個詞。
什麼時候不要用
不要讓契約照抄服務提供端的內部程式,也不要用契約測試取代 API 資安測試。
程式裡的名稱
consumer expectation ↔ provider verification 上線前要檢查
檢查環境與預先準備的測試資料。定義看得到的預期結果、失敗與邊界案例。也要定義隔離方式、固定輸入、查錯資訊與清理流程。設定執行時間預算、負責人與不穩定測試的處理規則。
預期成果:用 契約測試 (Contract Testing) 收集可重複驗證這項行為或品質風險的證據。 使用者情境:用戶端預期 GET /profiles/42 會回傳特定欄位和狀態。持續整合(CI)會檢查服務提供端是否遵守約定;這項測試不能證明完整流程或正式環境的資料品質。 驗證方式:契約測試 (Contract Testing)。 適用理由:服務可以各自部署,而且要在不啟動整套系統的情況下檢查訊息相容性時,可以使用這個詞。 不應使用的情況:不要讓契約照抄服務提供端的內部程式,也不要用契約測試取代 API 資安測試。 測試要求:說明要測的系統與環境。定義預先準備的測試資料(Fixture)、其他輸入,以及看得到的預期結果。加入預期失敗、邊界案例、容許值、隔離方式與清理流程。 測試維護:讓失敗原因容易查找,並控制隨機或會改變的輸入。指定負責人。測試速度與維護成本要符合發布前檢查的需要。 驗收條件:已知缺陷存在時測試會失敗,修正後通過。測試能在目標環境重複執行,提供可採取行動的證據,且不洩漏或改動無關資料。 證據與限制(證據邊界):它只代表該來源的官方說法。其他平台或團隊可能有不同用法。 待確認:發布前必過的檢查、環境、測試資料、容許值、執行時間預算、負責人,以及不穩定測試的處理規則。
檢查這份需求
請 AI 程式助手檢查目前如何使用 契約測試 (Contract Testing)。 定義:契約測試會檢查兩個可分開部署的系統,是否仍按照雙方約定的格式交換訊息。 正式環境檢查:檢查環境與預先準備的測試資料。定義看得到的預期結果、失敗與邊界案例。也要定義隔離方式、固定輸入、查錯資訊與清理流程。設定執行時間預算、負責人與不穩定測試的處理規則。 修改程式前,先列出看到的證據、缺口、嚴重程度,以及最小且安全的修正。