← Blog

測試

共 7 篇關於「測試」的技術文章。

精算Pythonchainladder開源模型持久化損失準備金測試

你的 predict 到底在做什麼:chainladder CapeCod 回傳的第三個數字

chainladder-python 的 CapeCod.predict 不是套用你存下的模型。在 ukmotor 樣本上,前一條對角線擬合出的 apriori 是 0.6572660657,predict 到新對角線回傳 0.6894525318,在新資料上乾淨重新擬合是 0.7062253126。拆開公式,predict 用的是今天的損失與曝險,配上一期的發展型態。

· 25 分鐘閱讀
輸入驗證靜默失敗測試Python精算開源chainladder

放錯一行的檢查不會報錯,只會變成裝飾:chainladder predict 的四種靜默失敗

精算函式庫 chainladder-python 的 predict 在四種輸入不匹配時照樣回傳結果:775 列進去 643 列出來、6 列進去 775 列出來、一列的型態套到另一列少算 38%、已付型態套到已發生資料高估 52%,都沒有錯誤訊息。這篇拆我們提的修正 PR #1310 裡兩個輸入驗證的教訓:合法與危險的寬鬆在資料上同形,要找系統自己寫下的標記;檢查放在會改寫輸入的那一行之後,不會報錯,只會在它最該看見的情況失明。

· 24 分鐘閱讀
AI 安全LLM 評測輸出掃描正則表達式測試開源OWASP

正則分不出「說了」與「警告不要說」:LLM 輸出掃描的誤報、漏報,和我們被推翻的修法

用正則比對 LLM 回覆來抓 XSS、SQL 注入這類攻擊字串,會把點名危險、勸人別這樣寫的回覆判成失敗:在 Giskard 一個未合併的開源 PR 上,5 則這類建議句全部觸發。我們提議把正則錨定在行首,誤報降到 0;PR 作者補上「引導語和 payload 寫在同一行」這種普通句型後,24 則合規回覆漏掉 12 則。這篇拆解錨定為什麼只在我們的樣本上成立、誤報與漏報怎麼選,以及我們自己的輸出掃描器也有同樣的限制。

· 27 分鐘閱讀
JavaScriptPromiseIndexedDBESLint開源測試MITRE ATT&CK

永遠不會 settle 的 Promise:IndexedDB 寫入失敗讓 MITRE ATT&CK 網站搜尋一直轉圈圈

`new Promise(async (resolve) => ...)` 沒有拿 reject,裡面的 IndexedDB 分塊寫入一失敗,交給呼叫端的那個 promise 不是被拒絕,是永遠不會 settle。MITRE ATT&CK 網站的搜尋索引就 await 在這上面,作者早就寫好的 .catch 永遠不會被觸發。這篇用 mitre-attack/attack-website #637 講 Promise executor 的語意、為什麼拿掉 async 不會修好它、以及怎麼寫一個分得出「卡住」與「被拒絕」的測試。

· 33 分鐘閱讀
精算Pythonpandas開源測試財務chainladder

一個字元的 bug 讓 775 列準備金全錯:chainladder CapeCod.predict 拆解

美國產險精算學會的 chainladder-python 是精算師算損失準備金的標準函式庫。CapeCod.predict() 有一個 > 1 該寫成 > 0 的條件,讓最常見的使用方式拿到錯的 apriori:comauto 業務線擬合值 0.569,預測回傳 1.252,775 列全錯。既有測試覆蓋了那條路徑卻沒抓到,原因是它用的資料集永遠走另一個分支。這篇講 Cape Cod 方法在做什麼、那一行為什麼錯、測試怎麼漏、以及依 casact 政策做的 AI 使用揭露。

· 10 分鐘閱讀
PythonkwargsS3minio開源測試人道科技

Python 的 **kwargs 接不到具名參數:人道 OpenStreetMap 無人機系統每張災區照片都存錯格式的原因

一個函式簽章裡有 content_type,文件也寫了,呼叫下游 SDK 時卻只傳了位置參數加 **kwargs。因為 content_type 是具名參數,Python 把值綁在它身上,kwargs 裡沒有它,所以每一張災後空拍照都以 application/octet-stream 存進 S3,瀏覽器只會下載不會顯示。這篇用 hotosm/drone-tm #882 講 Python 參數綁定的規則、為什麼同一個函式的 metadata 沒事、以及一個 mock 要綁真簽章的測試寫法。

· 10 分鐘閱讀
開源程式碼審查Python測試CIGitHub軟體工程

24 天內併入六個組織的七筆 PR:維護者教我的七件事

從美國產險精算學會到人道 OpenStreetMap,24 天內七筆 PR 被六個組織的維護者合併(美國產險精算學會收了兩筆)。這篇逐筆拆解:bug 在哪一行、為什麼測試沒抓到、維護者在審查時糾正了我什麼。三個共同病灶:只跑 Linux 的 CI、為了錯的理由通過的測試、被語言語意騙過的哨兵值。每一筆都附 PR 連結,可以自己去對。

· 18 分鐘閱讀