客戶是一個線上教育平台,提供互動課程、作業、學生與家長個人帳戶,以及線上付款。業務有明顯季節性:九月是新生最多的時期,開學前幾週平台停擺就代表永久失去客戶。公司沒有內部 QA 團隊,開發人員只能在其他工作之間自行測試;發布前回歸測試要花三天,仍會漏掉付款、課程預約和進入教室等關鍵情境。客戶在一次付款故障造成學校流失部分夏季報名名單後找上我們。
從零建立品質保證流程:
依業務風險安排測試優先順序、自動化關鍵情境、將檢查整合進 CI,並在九月高峰前進行負載測試。限制是不能停止開發:版本仍每週發布,而九月不會等人。
我們沒有從自動化測試著手,而是先做風險分析:哪些情境最常出錯、哪裡出錯成本最高。自動化工作嚴格依照這份清單進行。
- 稽核品質:分析過去半年的錯誤、訪談各團隊,整理問題最嚴重的情境:付款、課程預約、進入教室和家長通知。
- 撰寫測試策略:制定測試層級、責任範圍、功能完成定義和錯誤回報規範,讓三個開發團隊一致遵循。
- 自動化關鍵路徑:使用 Playwright 為網頁平台建立 E2E 情境、為後端建立 API 測試,並在每次發布前執行 smoke 測試集。
- 將 QA 閘門整合進 CI:smoke 測試未通過就不能發布;完整回歸測試每晚執行,結果會在 GitLab 提供所有團隊檢視。
- 以 k6 進行負載測試:模擬九月高峰流量、找出瓶頸,並在旺季前與後端團隊一起排除。
- 將流程移交給客戶:提供文件與規範,並訓練 QA 工程師使用自動化測試和流水線。
關鍵決策是依業務風險排序,而非追求看起來「漂亮」的覆蓋率。我們刻意沒有追求 100% 自動化:關鍵情境覆蓋率達到 75% 就帶來大部分效益,因為保護的是平台創造營收或流失客戶的關鍵流程。其餘部分則在重要發布前以人工探索式測試補足。
主要經濟效益是把缺陷發現時間往前移:在 CI 被自動測試找到的錯誤,修復成本比被學生家長在正式環境發現的錯誤低數十倍。平台帶著更高的韌性進入旺季,團隊也能更常發布變更,不必擔心「星期五效應」。另一項成果是提升企業信任:業務團隊現在能坦白向合作學校承諾,招生高峰期間平台仍然穩定。
| 指標 | 成果 |
|---|---|
| 正式環境的重大錯誤 | 每月 5–7 個 → 每季 1–2 個 |
| 發布前回歸測試 | 人工 3 天 → 自動化測試 4 小時 |
| 九月負載高峰 | 每年都有事故 → 0 起事故,沒有效能下降 |
| 缺陷發現時機 | 通常在正式環境 → 自動測試在發布前抓到 |
指標取自案例原始資料。僅在來源有記錄時註明統計期間。
- 每季重大錯誤(原為每月 5–7 個)
- 1–2
- 自動化回歸測試(原人工需 3 天)
- 4小時
- 的關鍵情境由自動化測試涵蓋
- 75%
- 九月尖峰期間的事故數
- 0
示意刻度:將 3 天換算為 72 小時。計算長條長度時,將每月錯誤範圍乘以三換算為每季範圍;比較的是上限。
- 01提交程式碼
- 02Smoke 測試集測試未通過,不予發布
- 03發布每週
- 04每晚執行完整回歸測試
建議平台下一步採取:
- 視覺回歸測試:自動檢查課程、電子郵件和個人帳戶的版面。
- 測試資料工廠:每次執行都產生逼真的學生、班級和付款資料。
- 正式環境 QA:使用 feature flags 和金絲雀發布,逐步啟用新功能。
我們不再害怕發布。以前每個星期五都可能變成處理客訴的會議,現在部署到正式環境只是十五分鐘的例行流程。
— 線上學校 CTO