Bạn vẫn xem được các bài đã đăng mà không cần đăng nhập.
Localhost, Testing, Staging, Production, Pilot, Sandbox khác nhau chỗ nào, dữ liệu ở mỗi nơi là thật hay giả, và BA làm gì trên từng môi trường.

Mấy bữa trước mình ngồi chia sẻ cho một bạn BA mới vào làm mảng blockchain nắm thêm các môi trường phát triển phần mềm, nên sẵn có dịp viết lại để chia sẻ đến mọi người. Có vẻ nó sẽ là kiến thức khá cũ với nhiều người, nhưng đôi lúc bạn phân vân không biết testing environment và staging environment khác nhau như thế nào, hay thỉnh thoảng lại bảo dev là "Deploy lên cho mình test với" thì dev hỏi lại "Deploy lên môi trường nào?", hoặc thậm chí là bạn không biết khi nào gọi tên môi trường cho đúng và phù hợp. Hi vọng dưới góc nhìn của một BA sẽ giúp bạn hiểu các môi trường này và áp dụng, triển khai nó một cách an toàn, hiệu quả.
Những môi trường mà mình nhắc đến trong bài hôm nay gồm có: Localhost (Development), Testing, Staging, Production, Sandbox, và một môi trường có thể hơi lạ với một số người là Pilot, Devnet, Testnet.
NOTE: BA cũng được xem như một phần của team test nội bộ.
Nói thêm cho bạn mới: nghe "BA xác nhận bug thật hay bỏ qua" thì đừng tưởng ngày đầu đi làm bạn đã có quyền chốt. Việc của bạn lúc đó là gom cho đủ bốn thứ — đúng ra phải chạy thế nào, thực tế đang chạy thế nào, ảnh chụp hoặc video làm bằng chứng, và lỗi này ảnh hưởng tới ai — rồi đưa cho người đang chịu trách nhiệm chốt bug trong dự án. Gom đủ bốn thứ đó thì cuộc tranh cãi giữa tester và dev thường tự hết, chẳng cần bạn phân xử.
Hồi mình viết bài này lần đầu thì cái này còn hiếm, giờ thì gặp khá thường. Nói nhanh mấy chữ dev hay dùng để bạn khỏi khớp: mỗi người làm một tính năng trên một nhánh code riêng, làm xong thì gộp nhánh đó vào code chung, còn CI/CD là cái dây chuyền tự động chạy build và đẩy code lên máy chủ thay cho việc dev bấm tay.
Preview là khi dây chuyền đó dựng cho mỗi nhánh một bản chạy riêng có đường link riêng, gộp code xong thì tự xoá. Với BA thì tiện ở chỗ xem được tính năng ngay lúc dev vừa làm xong, không phải chờ tới đợt deploy lên testing. Nhưng đừng tưởng cứ khác link là khác hẳn nhau: nhiều chỗ các bản preview vẫn dùng chung một database, chung một backend, chung dịch vụ bên ngoài, nên hai người test song song vẫn có thể đá dữ liệu của nhau. Hỏi dev một câu "bản này dùng database riêng hay chung" là biết. Dữ liệu trong đó cũng thường trống hoặc dựng tạm, nên coi preview là chỗ xem trước, đừng lấy nó thay cho một vòng kiểm thử tử tế.
Chuyện có sẵn hay không thì tuỳ chỗ: GitLab có sẵn Review Apps, Vercel có Preview Deployments, còn GitHub Actions chỉ là công cụ chạy tự động, muốn có link preview vẫn phải cấu hình nơi deploy. Hỏi dev một câu là rõ. Có một chỗ đáng để ý: khi đã chạy CI/CD thì code gộp vào nhánh nào sẽ tự lên môi trường tương ứng, nên câu "deploy lên cho em test với" nhiều lúc không còn đúng nữa, hỏi "code gộp vào nhánh nào rồi" thì nhanh hơn.
Hai chữ này hay bị gộp làm một nhưng khác nhau. Demo là bản riêng để sale hoặc BA đem đi trình bày cho khách: dữ liệu được dọn sẵn cho đẹp, kịch bản chạy trơn từ đầu tới cuối. Còn POC (proof of concept) là bản dựng nhanh để kiểm chứng một giả định, kiểu "cái này có làm được không", "nối được với hệ thống kia không" — nó có thể xấu và thiếu tùm lum, làm xong là bỏ, đem đi demo cho khách là hớ.
Demo hay bị nhầm với staging. Khác nhau ở mục đích: staging dựng ra để tìm lỗi trước khi go live, còn demo dựng ra để cho người ta xem. Đừng demo trên staging, vì lúc đó tester đang test, dữ liệu đổi liên tục, đang trình bày mà màn hình trống trơn hoặc văng lỗi thì rất mệt.
Chỗ này bạn mới hay lẫn, vì đi làm sẽ nghe người ta nói "môi trường UAT" như thể nó là môi trường thứ bảy.
UAT (User Acceptance Testing) là việc khách hàng hoặc người dùng nghiệm thu xem phần mềm có đúng cái họ cần không. Nó là một hoạt động kiểm thử, và hoạt động đó phải chạy ở đâu đó: thường là staging, đôi khi là pilot, dự án nhỏ thì chạy luôn trên testing. Nên khi nghe "môi trường UAT", cứ hiểu là "cái môi trường mà dự án này dùng để chạy UAT" rồi hỏi lại cho rõ là môi trường nào, đừng đi tìm một loại môi trường mới.
Chỗ này nếu nắm được thì sau này đỡ hoang mang: deploy là đưa code lên production, còn release là cho người dùng thấy tính năng đó. Hai việc này không nhất thiết xảy ra cùng lúc. Ở mấy đội mình gặp gần đây, code lên production từ tuần trước rồi nhưng tính năng vẫn đang tắt, tới ngày mới bật.
Nghe thì giống pilot, nhưng pilot thường được dựng thành một môi trường riêng cho nhóm người dùng được chọn, còn hai cái này diễn ra ngay trên production.
Với BA thì nó đổi vài thói quen. Lúc viết tài liệu, hỏi thêm tính năng này có nằm sau flag không, ai được bật. Lúc khách báo lỗi, hỏi luôn tài khoản của họ có nằm trong nhóm được bật hay chưa. Không hỏi thì hai bên ngồi nhìn hai màn hình khác nhau rồi cãi qua cãi lại, mà thật ra chẳng ai sai.
Môi trường | Dùng để làm gì | Ai test | Database |
|---|---|---|---|
Development/Localhost | Dev dựng tính năng trên máy họ | Dev, đôi khi team test nội bộ | Test hoặc sandbox |
Testing | Chạy kịch bản kiểm thử, tìm lỗi | Team test nội bộ, BA | Test hoặc sandbox |
Preview | Xem trước một nhánh code vừa làm xong | BA, dev, đôi khi khách | Trống hoặc dựng tạm |
Demo/POC | Trình bày cho khách, chạy thử ý tưởng | Sale, BA | Dữ liệu đã dọn cho đẹp |
Staging | Kiểm tra tương thích, ổn định trước khi go live | Khách hàng, team test nội bộ | Test/sandbox, hoặc clone từ production đã che dữ liệu nhạy cảm |
Pilot | Cho một nhóm người dùng được chọn xài trước | Nhóm user đặc biệt, team nội bộ, khách hàng | Thật (chạy môi trường riêng hoặc ngay trên production) |
Production | Chạy thật với người dùng thật | Tester lúc release, người dùng cuối | Thật |
Sandbox | Xài thử các hệ thống dính tiền: payment, banking, blockchain | Ai đang tích hợp | Dữ liệu test do bên cung cấp dịch vụ dựng sẵn |
Đây là thứ mình thấy hữu ích nhất cho bạn mới: ngày đầu vào dự án, xin một bảng liệt kê các môi trường đang có. Không có sẵn thì tự ngồi hỏi rồi ghi lại, mất nửa buổi nhưng xài được cả dự án. Mỗi môi trường ghi: đường link vào, đang chạy bản nào, dữ liệu lấy từ đâu, đang nối với dịch vụ ngoài nào (thanh toán, gửi mail, gửi tin nhắn), ai được vào và xin quyền ở đâu, ai là người phụ trách.
Bảng đó trả lời giúp bạn phần lớn câu hỏi kiểu "chỗ này test được không", "sao em không vào được", "cái này có gửi mail thật không" mà không phải đi hỏi vòng vòng.
Hễ môi trường nào dính tới dữ liệu thật hoặc bản clone từ thật (staging, pilot, đôi khi cả demo) thì rà trước khi bắt đầu:
Bốn câu thôi nhưng hỏi được thì bạn tránh cho dự án cái tình huống tệ nhất: khách hàng thật nhận được thứ gì đó từ một đợt test.
Ở trên mình có nói UAT là hoạt động chứ không phải môi trường. Còn đây là mấy thứ nên chốt trước khi bắt đầu, để lúc chạy khỏi rối:
Bạn có thể dùng mấy câu này để tự rà lại phần vừa đọc:
Tên gọi các môi trường và trách nhiệm của BA sẽ khác nhau tuỳ dự án, tuỳ công ty, nên đừng thuộc lòng bài này rồi đem đi áp nguyên xi. Cái đem đi được là thói quen: trước khi ngồi xuống test bất cứ thứ gì, hỏi cho ra bốn thứ — mình đang ở môi trường nào, đang chạy bản nào, dữ liệu trong đó là thật hay giả, và những đường gửi ra ngoài đang bật hay tắt. Hỏi được bốn câu đó thì bạn đã hơn kha khá người đi làm vài năm rồi.
Thảo luận (0)
Bạn cần đăng nhập để thảo luận