additional-strategies

5 posts

你的 main 分支壞掉了。你有 200 個 commit 要查。

Git bisect 把手動搜尋 commit 變成自動化的二元搜尋。以下說明如何找出引入 bug 的確切 commit,而不必一個個 checkout。

你的 CI 在 main 上是紅燈,但昨天還是綠燈。從那時到現在之間,某個 bug 悄悄潛入。你可以翻閱 200 個 commit,讀 diff 並猜測。你可以在 Slack 上發問,希望有人記得碰過相關程式碼。或者你可以讓 Git 幫你做這件事。 是針對 commit 歷史的二元搜尋工具。你標記一個 commit…

你的錯誤追蹤器知道它死在哪裡。這幫不了你重現它。

Stack traces 告訴你 crash 發生在哪裡,而不是什麼導致的。以下是一個擷取與重播模式,能把生產環境的 crash 變成你真正可以除錯的本機測試案例。

你確切知道生產環境在哪裡掛掉。Stack trace 指向 的第 147 行。例外是對 的 。你拉下程式碼,執行測試,全部通過。你用手動方式帶著範例 payload 命中端點,一切正常。 Bug 是真的。客戶正在觸發它。你卻無法在自己的機器上重現。 這就是根據錯誤報告進行除錯的標準體驗。Stack traces…

Symbolic Execution 找到了我 94% 測試覆蓋率都漏掉的整數溢位

你的單元測試只檢查特定輸入。Symbolic execution 檢查所有可能的輸入。以下是它的運作原理、成本,以及從哪裡開始。

你的測試套件有 94% 覆蓋率且零失敗。Symbolic execution engine 在三秒內就在你的程式碼中找到了一個 crash。 測試沒壞。覆蓋率指標沒有說謊。問題在於測試只驗證特定點上的行為。Symbolic execution 驗證的是整個輸入空間區域中的行為。如果 bug…

你的日誌正在外洩 PII,grep 救不了你

大多數團隊都是在客戶抱怨後才發現 PII 外洩。以下說明如何從資料進入到輸出的整個過程追蹤敏感資料,並附上今天就能使用的程式碼範例。

大多數團隊都是在客戶抱怨或合規稽核後才發現 PII 外洩。等到那時,資料早已穿過你的 ETL pipeline,掉進應用程式日誌,並被三種不同的可觀測性工具索引過了。 事後追查根本是考古學。你真正需要的是一個系統:在 PII…

你的 API 在生產環境掛掉,是因為 CI 測的是程式碼,不是 contracts

大多數 CI pipeline 抓得到語法錯誤和邏輯 bug,卻漏掉了真正搞垮生產環境的 API contract 破壞。以下是修復方法。

我團隊裡每一個進到生產環境的 API 破壞,都通過了 CI。全部。單元測試是綠燈。整合測試也過了。部署出去後,Slack 訊息才開始跳。 問題不在於我們沒測試,而是測錯了東西。大多數 CI pipeline 只驗證程式碼能不能跑,卻沒驗證 producer 和 consumer 之間的 API contract…