Test Environment: Dev, QA, Staging và Production

⏱︎

Read time:

3–4 minutes
Minh họa các môi trường Dev, QA, Staging và Production

Test environment là môi trường để Dev, Test, BA… có thể deploy và test phần mềm trong giai đoạn phát triển.

Lưu ý
Tên gọi Dev, QA, Staging và PROD là convention phổ biến, không phải chuẩn bắt buộc. Có công ty dùng TEST, SIT, UAT, Pre-prod hoặc nhiều môi trường QA song song.

Bốn môi trường thường gặp

Môi trườngMục đích chínhNgười dùng thường gặpĐặc điểm
DevPhát triển và kiểm tra nhanh thay đổi mớiDeveloperThay đổi thường xuyên, có thể thiếu ổn định
QA/TestKiểm thử có hệ thốngTester, DeveloperBuild xác định, data có kiểm soát, hỗ trợ debug
StagingDiễn tập release gần giống productionQA, PO, BA, OperationsConfiguration và integration gần PROD
PRODPhục vụ người dùng thậtKhách hàng, OperationsDữ liệu thật, yêu cầu bảo mật và ổn định cao

Dev Environment

Dev environment giúp developer code, chạy unit test, debug và tích hợp sớm. Mỗi developer có thể dùng môi trường local hoặc một môi trường Dev dùng chung. Dữ liệu thường là giả lập và configuration có thể khác production để thuận tiện phát triển.

QA Environment

QA environment là nơi tester thực hiện functional, integration, exploratory, regression và các kiểm tra phù hợp khác. Build và cấu hình cần được nhận diện rõ để kết quả có thể tái hiện.

Lưu ý
Nhiều công ty thì Dev và QA sẽ chung một môi trường cho tiết kiệm chi phí. Tuy nhiên dữ liệu sẽ không được “sach” cho Tester bằng việc tách hoàn toàn 2 môi trường

Staging Environment

Staging mô phỏng production càng gần càng tốt để kiểm tra deployment, configuration, migration, integration và business flow trước release. Đây thường là nơi chạy smoke test, release verification hoặc UAT.

Ví dụ
Feature “thêm trường lưu số điện thoại khách hàng”
Dev self test trên môi trường DEV, sau đó đẩy lên môi trường QA
Tại môi trường QA, tester test lại 1 lần nữa với dự liệu sạch sẽ, ok thì lại đẩy lên môi trường Staging
Tại Staging, PO và BA nghiệm thu lại feature thông qua UAT, nếu ok thì đẩy lên môi trường PROD

“Giống PROD” không có nghĩa là phải cùng quy mô. Staging có thể ít server hơn, nhưng những khác biệt quan trọng như version, feature flag, security policy và external endpoint phải được quản lý rõ.

Production Environment

PROD là môi trường người dùng thật. Sau deployment, team thường thực hiện health check, smoke test an toàn, monitoring và kiểm tra log. Các test có thể làm thay đổi dữ liệu, gửi email/SMS thật hoặc tạo giao dịch phải được kiểm soát nghiêm ngặt.

Cảnh báo
Không đưa dữ liệu khách hàng thật sang QA một cách tùy tiện. Nếu buộc phải dùng dữ liệu gần thực tế, cần masking/anonymization, phân quyền và chính sách lưu trữ phù hợp.

Vì sao “QA pass nhưng PROD fail”?

  • Feature flag, environment variable hoặc permission khác nhau.
Ví dụ
Quên không bật Feature Flag = ON sau khi deloy thành công lên PROD
  • Staging dùng mock nhưng PROD gọi dịch vụ thật.
Ví dụ
Ở môi trường QA, test với giả lập thẻ Credit Paypal, tuy nhiên quên mất không kiểm tra lại bằng thẻ thật trên môi trường Staging mà đẩy thẳng lên PROD
  • Volume dữ liệu và tải trên PROD lớn hơn nhiều
Ví dụ
Trên PROD có 1.000.000 khách hàng vào cùng 1 lúc -> sập database
  • Deployment hoặc migration script không được kiểm tra đầy đủ.
Ví dụ
Mới thêm 1 trường SĐT cho khách hàng. Tuy nhiên quên không migrate SĐT của khách cũ. Khách cũ có SĐT = null -> crash màn hình

Quản lý Test Environment tốt

Mẹo nhớ
Dev để xây, QA để kiểm, Staging để diễn tập, PROD để phục vụ người dùng thật.

Kết luận

Mỗi môi trường có mục tiêu và mức kiểm soát khác nhau. Điều quan trọng không phải tên gọi, mà là team hiểu rõ cấu hình, dữ liệu, quyền truy cập và mức độ giống production để diễn giải kết quả test chính xác.