方法與定義
修復實驗室公開紀錄怎麼產生、五種結局是什麼意思、哪些東西公布哪些不公布、資料怎麼拿、怎麼引用。
這是什麼
我們從公開論壇挑網站掛掉的求救案例,寫成可重複執行的配方,在自己的測試主機上把同樣的故障做出來,再用維修站照客戶會走的流程處理一次。
每一案一筆紀錄:站主看到什麼、哪些主機環境重現了、每個環境在每種連線模式的結局、結局不是修好時改了什麼與修在哪一版。
另有能力掃描:把「修得了什麼」的每一個故障項目一次植進同一個測試站,每一跑每一項各自記「已消」或「仍在」;矩陣的格優先用逐項結果。
這些是我們測試主機上、某一版、某一天的紀錄,不是對任何網站結果的承諾;其他主機、PHP 與 WordPress 版本的結果可能不同。
紀錄裡沒有客戶資料:每一案都在我們自己的測試站重現;出處只連到論壇帖,不複製帖文或發帖人名。
測試主機
四種主機環境,只公布軟體層:
- nginx + PHP-FPM
- Apache + PHP-FPM
- Apache + mod_php
- Apache + php-cgi (mod_cgid)
四台都裝同一份測試站。每跑之後把主機架回那一份,再與跑前的快照逐格比對。以後遇到新的環境會再加一台,配方不改。
一案怎麼跑
- 配方先寫好:怎麼弄壞、怎麼驗,照論壇帖子描述的症狀。
- 在對得上環境的測試主機上重現,記首頁與登入頁的 HTTP 狀態。環境對不上的不跑,不改配方去遷就主機。
- 用維修站照客戶的流程開案(付款是測試用的模擬)。要跑哪幾種連線模式依壞法決定:後台進不去就 SSH 與 FTP 都跑;後台進得去就三種都跑。
- 讀結果:健檢列了什麼、修了什麼、寫回之後的網站狀態。
- 結局不是修好就記缺口;維修站改好之後,用同一條配方、同一台主機再跑一次。
五種結局
「修好」的判準跟客戶案件的複驗同一把尺:首頁、抽查的內頁、頁面資源都要到。 這裡的複驗就是服務條款第九條第五款所稱的驗證。
公布什麼、不公布什麼
公布
- 案例的公開出處、症狀、測試站的 WordPress 與 PHP 版本。
- 主機環境的軟體層、弄壞後首頁與登入頁的 HTTP 狀態。
- 每一跑的日期(UTC,到日)、環境、連線模式、結局、維修站版本。
- 缺口:改了什麼、修在哪一版、重跑的日期與結局。
不公布
- 測試主機的位址、主機名、機房、機型。
- 時刻、各段花了多久、案件編號。
- 修法的細節。
- 任何百分比、成功率或總結句;讀者可以自己數表。
發布前由程式檢查:IP、主機與機器名、機型、機房、案件編號、時刻與時間量測、百分比與成功率、保證字、形容詞、中日文、HTML,出現其中一項就發布不了;修法細節與總結句由人審。實驗室工具本身的狀況(測試主機沒重現出故障、工具卡住、配方做不出來)不是維修站的結局,不列。
缺口什麼時候登
結局不是修好的跑次,跟修正一起登;紀錄發布時修正還沒上線的,登「處理中」。客戶在這段期間遇到同一缺口,依服務條款第九條的退費規定處理。
更正
紀錄發布後的每一次修改都在變更紀錄頁留一行:錯了就改,改了就寫,舊的不刪。
利益聲明
受測的維修站是我們自己的產品。這些頁面沒有贊助、沒有聯盟連結。
資料授權與引用
資料檔(CSV 與 JSON)以 CC BY 4.0 授權;連到的論壇帖不是資料檔的一部分。引用時寫「WP119 lab records」、擷取日期與網址。凍結版(固定日期、檔案雜湊、DOI)列在資料頁的「凍結版」一節。
欄位
| 欄位 | 意思 |
|---|---|
id / recipe | Record id: the date the recipe was written plus a short name. It does not change. "recipe" is the name of the fault recipe; one recipe can be run on several days. |
kind | "Forum case": one failure taken from a public forum thread. "Capability sweep": every problem type from the "What we fix" page planted on one test site at once, with a result per problem type. |
title / symptom | What the site owner reported, in plain words, with the HTTP status we saw. |
source | The public forum thread the case was taken from (wordpress.org, wordpress.stackexchange.com or stackoverflow.com). Empty for a capability sweep. |
items | Which of the problem types on the "What we fix" page this case exercises. |
wordpress / php | Versions on the test site. |
observed | Per server setup: HTTP status of the homepage and the login page after the failure was recreated. |
runs | One row per attempt: date (UTC), server setup, connection mode, outcome, product version. A sweep run also carries a result per problem type ("cleared" or "still present"). |
gaps | Every run that did not end in "recovered", and every problem type still present after a sweep, has a row here: what we changed, the version it shipped in, and the re-test. |
changes | Dated list of edits to this record after it was first published. |