T
Trinh Digital
Triển khai Giải pháp

QA Testing là gì? Tại sao phần mềm cần kiểm thử trước khi go-live

Trinh Digital · · 10 phút đọc

QA Testing là gì và tại sao nó quan trọng đến mức có thể quyết định sống còn của một sản phẩm phần mềm? Nếu bạn đang phát triển website, app, hay bất kỳ hệ thống IT nào, bỏ qua kiểm thử (testing) giống như xây nhà xong không kiểm tra móng — mọi thứ trông ổn cho đến khi sụp đổ. Bài viết này giải thích QA Testing một cách dễ hiểu nhất cho chủ doanh nghiệp và IT Manager, kèm ví dụ thực tế và số liệu cụ thể.

QA Testing là gì?

Định nghĩa

QA (Quality Assurance) là quy trình đảm bảo chất lượng phần mềm — bao gồm tất cả hoạt động nhằm đảm bảo sản phẩm hoạt động đúng yêu cầu, không có lỗi nghiêm trọng, và mang lại trải nghiệm tốt cho người dùng.

Testing (Kiểm thử) là một phần trong QA — hoạt động chạy thử phần mềm để tìm lỗi (bug) trước khi giao cho người dùng.

QA vs Testing: Khác nhau thế nào?

Tiêu chíQA (Quality Assurance)Testing (Kiểm thử)
Phạm viToàn bộ quy trình phát triểnChỉ giai đoạn kiểm tra
Mục tiêuNgăn ngừa lỗi từ đầuPhát hiện lỗi đã có
Khi nàoTừ lúc thu thập yêu cầu đến khi bảo trìSau khi code xong
Ai làmCả teamQA Engineer / Tester
Ví dụCode review, coding standards, CI/CDUnit test, integration test, UAT

Ví dụ dễ hiểu: QA giống như quy trình quản lý chất lượng trong nhà máy (kiểm tra nguyên liệu đầu vào, giám sát quy trình sản xuất, kiểm hàng thành phẩm). Testing giống như kiểm hàng thành phẩm — chỉ 1 phần trong toàn bộ quy trình.

Tại sao phần mềm cần QA Testing?

Chi phí sửa bug tăng theo thời gian

Đây là quy tắc vàng trong software engineering — càng phát hiện bug muộn, chi phí sửa càng cao:

Giai đoạn phát hiện bugChi phí sửa (tương đối)Ví dụ
Requirements (Thu thập yêu cầu)1xSửa tài liệu — 30 phút
Design (Thiết kế)5xSửa wireframe/mockup — vài giờ
Development (Lập trình)10xSửa code — 1-2 ngày
Testing (Kiểm thử)20xDebug + sửa + re-test — 2-3 ngày
Production (Đang chạy)100xHotfix + rollback + xin lỗi khách — 1-2 tuần

Ví dụ thực tế: Một lỗi tính sai giá trong checkout flow:

  • Phát hiện lúc viết requirement: Sửa 1 dòng trong spec — 30 phút, 0 VND thêm
  • Phát hiện khi đang code: Sửa logic tính giá — 2 giờ, ~300K VND
  • Phát hiện khi đã go-live: Khách bị tính sai → refund → reputation damage → 50 triệu VND+ (direct + indirect)

Thống kê về lỗi phần mềm

Chỉ sốCon sốNguồn
Bug trung bình per 1,000 dòng code15-50 bugsCode Complete (McConnell)
Chi phí bug production vs developmentGấp 100 lầnIBM Systems Sciences Institute
Doanh thu mất do bug phần mềm (toàn cầu/năm)$1.7 nghìn tỷ USDTricentis
Thời gian developer dành cho debugging35-50%Cambridge University

Các loại QA Testing phổ biến

1. Unit Testing — Test từng “viên gạch”

Là gì: Test từng function/method riêng lẻ — đảm bảo mỗi phần nhỏ nhất hoạt động đúng.

Ai làm: Developer

Ví dụ: Hàm tính thuế VAT:

  • Input: 1,000,000 VND → Expected output: 100,000 VND (10%) ✓
  • Input: 0 VND → Expected output: 0 VND ✓
  • Input: -500,000 VND → Expected output: Error ✓
  • Input: “abc” → Expected output: Error ✓

Tại sao quan trọng: Phát hiện lỗi sớm nhất, chi phí sửa thấp nhất. Coverage lý tưởng: 70-80%.

2. Integration Testing — Test các phần ghép lại

Là gì: Test sự kết nối giữa các module/component — đảm bảo chúng hoạt động đúng khi ghép lại.

Ví dụ: Module Đơn hàng + Module Kho:

  • Tạo đơn hàng mới → kho tự động giảm tồn → ✓
  • Hủy đơn hàng → kho tự động hoàn lại tồn → ✓
  • Đơn hàng vượt tồn kho → thông báo lỗi → ✓

3. Functional Testing — Test theo yêu cầu

Là gì: Test xem phần mềm có hoạt động đúng yêu cầu nghiệp vụ không.

Ví dụ: Chức năng Đăng ký tài khoản:

  • Đăng ký với email hợp lệ → thành công ✓
  • Đăng ký với email đã tồn tại → báo lỗi “Email đã được sử dụng” ✓
  • Đăng ký với mật khẩu <8 ký tự → báo lỗi ✓
  • Đăng ký không điền số điện thoại → báo lỗi required field ✓

4. Performance Testing — Test hiệu suất

Là gì: Test xem hệ thống chịu được bao nhiêu người dùng, tốc độ phản hồi có đủ nhanh không.

Các loại performance test:

LoạiMục đíchVí dụ
Load TestingTest với lượng user bình thường500 user cùng truy cập
Stress TestingTest vượt giới hạn10,000 user cùng truy cập
Spike TestingTest tăng đột ngột0 → 5,000 user trong 1 phút
Endurance TestingTest chạy liên tục500 user liên tục trong 24 giờ

5. Security Testing — Test bảo mật

Là gì: Test xem hệ thống có bị hack, rò rỉ dữ liệu không.

Các vulnerability phổ biến (OWASP Top 10):

  • SQL Injection: Hacker chèn code SQL để truy cập database
  • XSS (Cross-Site Scripting): Chèn JavaScript độc hại
  • CSRF (Cross-Site Request Forgery): Giả mạo request
  • Broken Authentication: Bypass đăng nhập

6. UAT (User Acceptance Testing) — Người dùng thật test

Là gì: End user thật sự sử dụng phần mềm và xác nhận “đúng, đây là cái tôi cần.”

Ai làm: Business users (nhân viên sẽ dùng hệ thống hàng ngày)

Tại sao quan trọng: Developer và QA test theo spec, nhưng chỉ user mới biết workflow thực tế có hợp lý không. UAT là bước cuối trước go-live.

Quy trình QA Testing chuẩn cho dự án SME

Phase 1: Test Planning (trước khi code)

  • Viết Test Plan: Scope, approach, resources, schedule
  • Viết Test Cases: Từ requirements → list tất cả scenarios cần test
  • Setup Test Environment: Server test riêng (không test trên production!)
  • Setup Bug Tracking: Tool track bug (Linear, Jira, GitHub Issues)

Phase 2: Test Execution (trong và sau khi code)

Loại testKhi nàoAi làmTool
Unit TestTrong khi codeDeveloperJest, Pytest, JUnit
Integration TestSau khi ghép moduleDeveloper + QAPostman, Cypress
Functional TestSau mỗi sprintQA EngineerSelenium, Playwright
Performance TestTrước go-liveQA EngineerJMeter, k6
Security TestTrước go-liveSecurity specialistOWASP ZAP, Burp Suite
UAT1-2 tuần trước go-liveBusiness usersManual

Phase 3: Bug Management

Severity levels:

LevelĐịnh nghĩaSLA sửaVí dụ
P0 — CriticalHệ thống không dùng được4 giờServer crash, data loss
P1 — MajorFeature chính không hoạt động24 giờKhông thanh toán được
P2 — MinorFeature phụ bị lỗi3 ngàySort không đúng thứ tự
P3 — TrivialUI/cosmetic issuesNext sprintTypo, alignment lệch

Phase 4: Go/No-Go Decision

Trước go-live, team review:

  • Bao nhiêu P0/P1 bug còn open? (Phải = 0)
  • Bao nhiêu P2 bug? (≤5 thì chấp nhận được)
  • Test coverage bao nhiêu %? (≥70% cho critical paths)
  • Performance benchmark đạt chưa? (Response time <2s)
  • UAT sign-off từ business? (Có/Không)

Chi phí QA cho dự án SME Việt Nam

Quy tắc phân bổ budget

Theo best practice, QA nên chiếm 15-25% tổng budget dự án:

Tổng budget dự ánBudget QA (20%)QA team size
200 triệu VND40 triệu1 QA part-time (3 tháng)
500 triệu VND100 triệu1 QA full-time (4 tháng)
1 tỷ VND200 triệu2 QA full-time (5 tháng)
2 tỷ VND400 triệu3 QA + automation (6 tháng)

ROI của QA Testing

  • Mỗi 1 VND đầu tư vào QA tiết kiệm 5-10 VND chi phí sửa bug sau go-live
  • Dự án có QA: 15% bug sau launch vs không có QA: 60% bug sau launch
  • Thời gian go-to-market: Không chênh lệch (QA chạy song song với development)

FAQ — Câu hỏi thường gặp

1. SME nhỏ có cần QA riêng không? Developer tự test được không?

Developer tự test là cần thiết (unit test, code review) nhưng không đủ. Developer có “bias” — biết code hoạt động thế nào nên test theo happy path. QA Engineer test theo “cách user sẽ dùng” — bao gồm edge cases, error scenarios, và những cách dùng “kỳ lạ” mà developer không nghĩ đến. Tối thiểu nên có 1 QA part-time hoặc thuê dịch vụ kiểm thử theo dự án.

2. Automated Testing vs Manual Testing — chọn gì?

Cả hai đều cần. Manual testing cho: UAT, exploratory testing, UX evaluation. Automated testing cho: regression test (chạy lại sau mỗi lần code thay đổi), performance test, unit test. Quy tắc: Automate những test lặp đi lặp lại >3 lần. Giữ manual cho test cần judgment (ví dụ: “UI có đẹp không?“).

3. Bao nhiêu test case là “đủ”?

Không có con số magic. Nguyên tắc: Cover 100% critical paths (đăng ký, đăng nhập, thanh toán, chức năng core). Happy path + top 3 error scenarios cho mỗi feature. Dự án trung bình 20 feature cần khoảng 200-400 test cases.

4. Test xong rồi mà vẫn có bug là sao?

Bình thường! Testing không thể tìm 100% bug — chỉ giảm thiểu. Mục tiêu: 0 critical/major bug khi go-live, chấp nhận minor/trivial bugs và fix dần. “Không có phần mềm nào không có bug” — nhưng phần mềm tốt là phần mềm có ít bug nghiêm trọng.

5. Khi nào nên bắt đầu testing?

Càng sớm càng tốt. Lý tưởng: bắt đầu viết test case ngay khi có requirement (trước khi code). Developer viết unit test song song với code. QA test functional ngay khi feature code xong (không đợi “code hết rồi test 1 lần”). Testing nên là hoạt động liên tục, không phải 1 phase cuối dự án.

Kết luận

QA Testing không phải “chi phí phát sinh” — nó là bảo hiểm cho dự án phần mềm. Chi 20% budget cho QA để tránh mất 200% budget sửa bug production. Nếu bạn cần hỗ trợ setup quy trình QA hoặc cần QA team cho dự án, hãy liên hệ Trinh Digital — chúng tôi cung cấp dịch vụ kiểm thử phần mềm từ manual testing đến automated testing cho SME.

#testing#QA#phần mềm#kiểm thử
Chia sẻ: Z

Sẵn sàng chuyển đổi số cùng Trinh Digital?

Liên hệ ngay để nhận tư vấn miễn phí. Đội ngũ chuyên gia sẽ phân tích nhu cầu và đề xuất giải pháp tối ưu.

Zalo