Team đã có Automation Tester Leader và Manual Tester — trang này có dashboard sống đọc từ report.flyer.vn (kèm lịch sử tự lưu), đối chiếu coverage với 32 tính năng đã có PRD, và trả lời câu hỏi có check được database bug không.
Đọc trực tiếp từ report.flyer.vn mỗi lần mở trang; mỗi lần chạy mới được lưu lại thành một điểm lịch sử để vẽ xu hướng.
| Nguyên nhân gốc | Số case | Khu vực | Allure xếp loại |
|---|
| Khu vực | Tổng | Passed | Failed | Broken | Skipped | Pass % |
|---|
| Spec file | Tổng | Passed | Failed | Skipped |
|---|
| Lần chạy | Tổng | Passed | Failed | Broken | Skipped | Pass % | Ghi chú |
|---|
Team hiện đã có Automation Tester Leader và Manual Tester, nhưng chưa có một hệ thống báo cáo chất lượng sản phẩm thống nhất để trả lời đều đặn: sản phẩm đang ổn định hay có nhiều bug tồn đọng, team fix bug nhanh hay chậm, automation đang che phủ được bao nhiêu phần trăm rủi ro thật.
Bảng dashboard ở đầu trang luôn là số mới nhất. Phần này chốt lại lần chạy gần nhất tại thời điểm viết, 08/09/2026, 02:02–02:59 (57 phút) — so sánh với lần liền trước 06/09:
| Chỉ số | Giá trị | So với 06/09 |
|---|---|---|
| Tổng test case | 416 | Không đổi. (Trước đó 24/08 → 06/09 đã tăng +118 nhờ bộ Khiên (Shields) 89 case và Study profile/nav 36 case phía học sinh.) |
| Passed | 389 · 93,5% | −2. Pass rate gần như giữ nguyên (94% → 93,5%), vẫn trên ngưỡng 90%. |
| Failed (bug thật) | 3 | +3, tất cả đều ở phía giáo viên và đều được Allure xếp Product defects — xem bảng ngay dưới. |
| Broken (lỗi test) | 0 | −1. ONBOARDING_138 lần này không còn timeout, nhưng chuyển thành failed vì sai số liệu — tức là lộ ra bug thật thay vì lỗi hạ tầng. |
| Skipped | 24 · 6% | Không đổi — vẫn gồm toàn bộ 4 case IELTS và 16 case pending-approval (xem cảnh báo). |
| Test case | Thông báo lỗi | Đọc là gì |
|---|---|---|
ONBOARDING_138Teacher walks through the Quick Start milestones |
expect(received).toBe(expected) — kỳ vọng 3, nhận về số khác |
Số mốc Quick Start hoàn thành không khớp. Lần 06/09 case này chỉ broken (timeout 300s), nay chạy được hết nên lộ ra sai số liệu. |
PLACEMENT_060Student can submit placement test and sees result with 3 correct answers (Pre A1) |
Placement test should navigate to result page after submit | Nộp bài kiểm tra đầu vào xong không chuyển sang trang kết quả. |
PLACEMENT_059Teacher views placement test result after student submits |
expect(locator).toBeVisible() thất bại |
Giáo viên không thấy kết quả sau khi học sinh nộp — cùng gốc với case trên. |
PLACEMENT_059 và PLACEMENT_060 là hai đầu của cùng một luồng: học sinh nộp bài rồi giáo viên xem kết quả. Cả hai cùng fail nghĩa là bước chuyển sang trang kết quả sau khi nộp đang hỏng, không phải lỗi hiển thị lặt vặt. Đây là tính năng đã được nghiệm thu PASS ngày 03/09 (trang nghiệm thu) — nên nhiều khả năng là hồi quy mới, cần dựng lại thủ công để xác nhận trước khi báo dev.AssignedHomework.pending-approval-approved phía giáo viên cũng đang skip trọn bộ. Cần Automation Lead xác nhận lý do skip và lịch bật lại.Chuỗi 4 lần chạy đã lưu: 16/08 pass 78% → 24/08 87% → 06/09 94% → 08/09 93,5%; failed 40 → 8 → 0 → 3. Xu hướng dài hạn vẫn tốt (pass rate tăng 15 điểm trong 3 tuần), nhưng chuỗi "0 failed" chỉ giữ được đúng một lần chạy. Mỗi lần chạy mới tự được lưu thành một điểm trong biểu đồ xu hướng ở đầu trang (mục 8 giải thích cơ chế).
Chưa đủ, nhưng đang tăng đúng hướng. Đối chiếu 416 test case (08/09) với 32 tính năng đã có PRD chi tiết trên roadmap.flyer.vn (20 giáo viên + 12 học sinh): phía học sinh vừa phủ thêm 3 tính năng lớn trong 2 tuần, phía giáo viên vẫn còn một nửa chưa có automation nào chạm tới.
| Đã có coverage | Chưa có coverage nào |
|---|---|
| Giao bài tự động/bài tập (65 case, 17 đang skip), Quản lý lớp (20), Quản lý kỳ thi (17), Kiểm tra đầu vào (27), Học sinh/chấm điểm chi tiết (34, chấm AI Speaking/Writing chỉ 1–2 case mỗi loại), Báo cáo (15), Trợ giảng AI/Call Bingo (4), Onboarding (7) | Khám phá đề, Chương trình học, Tạo đề, Thư viện của tôi, Khen thưởng, Điểm danh, Quà tặng, Thách đấu, Dạy trực tuyến, Tài chính, Thiết lập — 10/20 tính năng, chưa case nào |
| Đã có coverage | Chưa có coverage nào |
|---|---|
| Làm bài thi (21 + Starters 28), Học tập/Study (36), Kết quả chấm AI / Khiên (89 — mới), Bingo AI (BingoTalk 5 — mới), Nói/Viết AI (qua Shields Speaking/Writing), Tài khoản (auth 32 + Study profile), Trang chủ (1) | Bài tập lớp, Gamification, Thách đấu, Kết quả & tiến độ, Gói Premium — 5/12 tính năng, gồm cả Premium (monetization) |
Chỉ có login/logout được viết (so với PRD 14 phần, 207.767 lượt làm bài, 28.195 learner thật), và cả 4 hiện đang bị skip sau khi fail ở lần 24/08. Coverage chức năng thực tế của IELTS = 0.
| Vai trò | Câu hỏi cần trả lời | Báo cáo phù hợp |
|---|---|---|
| Product / Founder | Release tuần này có an toàn không, có bug nghiêm trọng nào chưa fix? | Release Readiness |
| Automation Lead | Automation đang che phủ bao nhiêu %, test nào hay bị flaky? | Automation Coverage |
| Manual Tester | Backlog đang test còn bao nhiêu, bug nào quá hạn? | Bug Digest / Aging |
| Dev Lead | Bug nào ưu tiên fix trước, ai đang bị nghẽn? | Bug Digest theo mức độ / người phụ trách |
| CS / Vận hành | Bug này ảnh hưởng bao nhiêu học sinh / trường? | Escaped Defect + đối chiếu usage |
| Loại báo cáo | Nội dung | Tần suất | Trạng thái |
|---|---|---|---|
| Test Execution | Test case chạy, pass/fail/broken/skipped, theo khu vực (teacher/exam/ielts). | Mỗi lần chạy | Đã có — Allure |
| Visual Regression | So ảnh chụp màn hình giữa các lần chạy, bắt lỗi UI lệch layout/màu. | Mỗi lần chạy | Đã có — plugin screen-diff |
| Bug Digest (theo mức độ) | Bug mới mở / đã đóng / quá hạn xử lý, nhóm theo mức nghiêm trọng. | Hàng ngày / tuần | Cần build |
| Automation Coverage | % test case đã tự động hoá / tổng số cần test theo từng tính năng (mục 3), tỉ lệ flaky. | Hàng tuần | Cần bổ sung — số liệu thô đã có, chưa tổng hợp thành báo cáo |
| Release Readiness (Go/No-Go) | Checklist trước release: 0 bug nghiêm trọng mở, regression pass đạt ngưỡng. | Mỗi release | Cần build |
| Escaped Defect | Bug do CS/khách hàng phát hiện sau release, so với bug QA tìm trước. | Hàng tháng | Đề xuất |
| Bug Aging & Trend | Biểu đồ bug mở/đóng theo thời gian, backlog tồn đọng theo mức độ. | Hàng tuần | Đề xuất |
| Root Cause / Post-mortem | Cho incident production nghiêm trọng — nguyên nhân gốc, hành động khắc phục. | Sau mỗi incident | Đề xuất |
| Khái niệm | Định nghĩa |
|---|---|
| Blocker | Chặn hoàn toàn tính năng chính hoặc hệ thống, không có cách né. Xử lý trong ≤ 24 giờ. |
| Critical | Sai dữ liệu/nghiệp vụ nghiêm trọng, cách né khó dùng. Xử lý trong ≤ 3 ngày. |
| Major | Ảnh hưởng chức năng nhưng có cách né. Xử lý trong sprint hiện tại. |
| Minor | UI/UX nhỏ, không ảnh hưởng nghiệp vụ. Xử lý ở release kế tiếp. |
| Tỉ lệ escaped defect | Bug do CS/khách hàng phát hiện ÷ (Bug do CS phát hiện + Bug QA tìm trước release). Càng thấp càng tốt — chỉ số chất lượng cốt lõi. |
| MTTR | Thời gian trung bình từ lúc mở bug đến lúc đóng, tính riêng theo từng mức độ nghiêm trọng. |
| Automation coverage | Số test case đã tự động hoá ÷ tổng test case có thể tự động hoá (loại trừ case cần mắt người, ví dụ thẩm mỹ UI tinh tế). |
| Tỉ lệ reopen | Bug bị mở lại ÷ tổng bug đã đóng. Cao bất thường là tín hiệu fix chưa kỹ hoặc thiếu test coverage. |
Đây thực chất đã "check được" theo đúng nghĩa: Allure xuất toàn bộ số liệu ra file JSON tĩnh, gọi thẳng bằng HTTP, không cần token, không cần SQL — toàn bộ số liệu mục 2 và 3 lấy trực tiếp từ đây:
GET https://report.flyer.vn/widgets/summary.json → tổng passed/failed/broken/skipped
GET https://report.flyer.vn/data/categories.json → danh sách lỗi, đã chia Product defects / Test defects
GET https://report.flyer.vn/data/suites.json → chi tiết theo khu vực (teacher/exam/ielts) và từng spec file
GET https://report.flyer.vn/history/history-trend.json → xu hướng qua các lần chạy (nguồn nay giữ 6 điểm, nhưng bị ghi đè mỗi lần deploy nên vẫn dùng lịch sử tự lưu ở D1 — mục 9)
Nghĩa là một script nhỏ (giống cách dashboard-cron đang kéo Pipedrive về b2b.flyer.vn) hoàn toàn có thể gọi định kỳ các endpoint này, gộp với dữ liệu bug thủ công, rồi tự đẩy con số vào Slack hoặc một trang tổng hợp riêng.
Nếu bug được track trong Jira: Jira Cloud là SaaS đa khách hàng (multi-tenant) — Atlassian không cấp quyền truy vấn SQL trực tiếp vào database chứa dữ liệu, kể cả cho admin workspace. Khác với các bảng Postgres/Hasura read-replica mà Product đang query trực tiếp cho dữ liệu usage.
| Cách lấy dữ liệu | Phù hợp khi | Cần gì |
|---|---|---|
| JQL filter + Dashboard có sẵn trong Jira | Cần xem nhanh, không cần code | Không cần dev — ai có quyền Jira cũng tạo được |
| Jira REST/GraphQL API | Cần tự động hoá, đẩy về Slack/Sheet/dashboard nội bộ | 1 script + API token, chạy cron |
| Đồng bộ vào Postgres riêng (Airbyte/Fivetran hoặc tự viết) | Cần JOIN bug với dữ liệu sản phẩm khác (ví dụ bug ảnh hưởng bao nhiêu học sinh) | Một ETL job định kỳ, thêm schema riêng trong DB nội bộ |
history-trend.json chỉ có đúng 1 điểm, bị ghi đè mỗi lần deploy. Trang này khắc phục bằng cách: mỗi lần mở dashboard, API /api/autotest/summary thấy lần chạy mới là lưu một snapshot vào D1 (bảng autotest_snapshots). Hệ quả: chỉ những lần chạy có người mở trang sau đó mới được lưu — nếu automation chạy 3 lần liên tiếp mà không ai mở, chỉ lần cuối được ghi. Muốn chắc chắn 100% thì thêm 1 dòng curl roadmap.flyer.vn/api/autotest/summary vào cuối pipeline automation.| KPI | Ngưỡng mục tiêu | Tần suất |
|---|---|---|
| Bug Blocker/Critical còn mở quá hạn xử lý | 0 | Hàng ngày |
| Tỉ lệ escaped defect | < 15% | Hàng tháng |
| MTTR bug Critical | ≤ 3 ngày | Hàng tháng |
| Automation pass rate (08/09: 93,5%) | ≥ 90% | Mỗi lần chạy |
| Tính năng có PRD đã có automation coverage (08/09: 17/32 = 53%) | 100% | Hàng tháng |
| Case đang bị skip (08/09: 24, trong đó 4 IELTS + 16 pending-approval) | < 5% tổng | Mỗi lần chạy |
| Regression pass rate trước release | ≥ 95% | Mỗi release |
| Tỉ lệ reopen | < 5% | Hàng tháng |
curl roadmap.flyer.vn/api/autotest/summary vào cuối pipeline để lịch sử luôn được lưu, quyết định có gate report.flyer.vn hay không.dashboard-cron đã dùng cho Pipedrive.