Điện thoại thật hay máy giả lập: khi nào kiểm thử ứng dụng cần thiết bị thật?
Máy giả lập rất tiện khi đang phát triển. Nhưng nhiều lỗi ảnh hưởng người dùng nhất chỉ xuất hiện trên điện thoại thật, với GPU, GPS và mạng thật.

Mục lục
Máy giả lập (emulator, simulator) là một trong những công cụ giúp lập trình viên di động làm việc nhanh nhất: khởi động trong vài giây, không tốn tiền, gắn thẳng vào IDE. Thế nhưng rất nhiều lỗi lọt ra môi trường thật, và nhiều luồng quan trọng nhất với người dùng, lại không hề xuất hiện trên máy giả lập.
Bài viết này phân tích máy giả lập hụt hơi ở đâu, khi nào chúng hoàn toàn đủ dùng, và cách quyết định bài test nào cần chạy trên điện thoại thật.
Vì sao máy giả lập là chưa đủ
Máy giả lập mô phỏng thiết bị bằng phần mềm. Nó tái hiện hệ điều hành khá chính xác, nhưng không tái hiện được phần cứng, mạng di động hay vô số khác biệt nhỏ giữa các dòng máy. Với nhiều nhóm ứng dụng như game di động, ứng dụng tài xế hay ứng dụng đặt hàng, chính những khác biệt đó là nơi lỗi xuất hiện.
Những luồng cần điện thoại thật
Hiệu năng game, đồ họa và nhiệt độ
Game đòi hỏi GPU, bộ nhớ và pin nhiều hơn hẳn ứng dụng thông thường. Tụt khung hình ở cảnh đông nhân vật, lỗi hiển thị trên một số dòng chip, tải tài nguyên chậm, máy nóng lên và tự giảm hiệu năng sau mười phút chơi đều là vấn đề phần cứng. Máy giả lập chạy trên một máy trạm mạnh che giấu gần như tất cả những lỗi này.
Cảm ứng, cử chỉ và cảm giác thao tác
Vuốt, kéo, phóng to bằng hai ngón, nhấn giữ và chạm nhiều điểm cùng lúc hoạt động khác hẳn trên màn hình cảm ứng thật so với khi dùng chuột. Với game và ứng dụng nhiều bản đồ, khác biệt nhỏ trong xử lý cử chỉ quyết định trải nghiệm mượt mà hay gây khó chịu.
GPS, vị trí và bản đồ cho ứng dụng tài xế
Ứng dụng dành cho tài xế hay shipper phụ thuộc vào vị trí: bật trạng thái nhận chuyến ở đúng khu vực, nhận yêu cầu chuyến gần đó, hiển thị đường đi tới điểm đón và cập nhật hành trình. Thiết bị thật làm lộ ra lỗi về quyền truy cập vị trí, GPS định vị chậm, hiển thị bản đồ và ứng dụng bị hệ điều hành tắt khi đang chạy nền lúc dẫn đường.
Thông báo đẩy và hoạt động chạy nền
Yêu cầu chuyến mới, cập nhật trạng thái đơn hàng hay sự kiện trong game thường đến dưới dạng thông báo. Việc nhận thông báo phụ thuộc vào phiên bản hệ điều hành, chế độ tiết kiệm pin và quy tắc chạy nền riêng của từng hãng. Một thông báo đến ngay trên máy giả lập có thể bị trễ hoặc mất hẳn trên điện thoại thật có cơ chế quản lý pin khắt khe.
Hiệu năng trên điện thoại tầm trung
Người dùng thật chạy ứng dụng của bạn trên những chiếc máy bộ nhớ hạn chế, với nhiều ứng dụng khác đang chạy nền. Khởi động chậm, cuộn danh sách sản phẩm dài bị giật và crash do hết bộ nhớ hiện rõ hơn nhiều trên phần cứng thật.
Giao diện tùy biến của hãng và mạng thật
Các hãng Android tùy biến hộp thoại cấp quyền, cài đặt pin, phông chữ và bàn phím. Cộng thêm việc chuyển qua lại giữa Wi-Fi và 4G hay sóng yếu đúng lúc đang đặt hàng, bạn sẽ gặp những hành vi mà máy giả lập không bao giờ tái hiện được.
Khi nào máy giả lập hoàn toàn đủ dùng
Điều này không có nghĩa là nên bỏ máy giả lập. Chúng vẫn là công cụ đúng cho:
- Phản hồi nhanh khi đang phát triển một màn hình hay một thành phần giao diện.
- Kiểm tra bố cục trên nhiều kích thước màn hình và phiên bản hệ điều hành ở giai đoạn đầu.
- Unit test và instrumentation test không phụ thuộc phần cứng, vị trí hay hiệu năng thực tế.
- Gỡ lỗi, khi breakpoint và khởi động lại nhanh quan trọng hơn độ chân thực.
Một chiến lược hợp lý là dùng máy giả lập để có tốc độ ở đầu chu kỳ phát triển, và dùng điện thoại thật để có sự chắc chắn trước khi phát hành.
So sánh trực tiếp
| Tiêu chí | Máy giả lập | Điện thoại thật |
|---|---|---|
| Chi phí, cài đặt | Miễn phí, có ngay | Cần thiết bị và bảo trì |
| FPS, GPU và nhiệt độ khi chơi game | Không sát thực tế | Chip và nhiệt độ thật |
| Cảm ứng và cử chỉ | Mô phỏng bằng chuột | Màn hình cảm ứng thật |
| GPS và vị trí khi chạy nền | Tọa độ giả | Hành vi và quyền truy cập thật |
| Thông báo đẩy | Một phần | Hành vi nhận thông báo thật |
| Độ sát thực tế về hiệu năng | Thấp | Cao |
| Khác biệt giữa các hãng | Không tái hiện | Tái hiện đầy đủ |
Cái giá thật của việc dùng thiết bị thật
Nếu điện thoại thật tốt hơn cho những luồng này, tại sao nhiều đội vẫn chưa dùng? Vì tự vận hành một phòng lab thiết bị rất vất vả: mua và thay mới điện thoại, giữ pin và cập nhật phần mềm, chia sẻ thiết bị cho tester làm việc từ xa. Chưa kể vẫn cần người thực thi bài test, bằng tay hoặc bằng script.
Đó chính là khoảng trống Green Phone Agent được xây dựng để lấp đầy. Test chạy trên điện thoại thật, chính chủ do OneGreen sở hữu và vận hành trong phòng lab, và một AI agent thực hiện các test case từ mô tả bằng ngôn ngữ tự nhiên. Bạn có được sự chắc chắn của thiết bị thật mà không phải sở hữu máy hay viết script.
Nên test trên những thiết bị thật nào?
Bạn không cần hàng trăm chiếc điện thoại để có phần lớn lợi ích. Một bộ thiết bị nhỏ nhưng được chọn kỹ đã bao phủ đa số vấn đề thực tế:
- Bắt đầu từ số liệu phân tích. Xem người dùng của bạn thực sự dùng hãng nào, dòng máy nào, phiên bản hệ điều hành nào, thay vì nhìn vào thị trường chung. Vài dòng máy phổ biến nhất thường chiếm phần lớn phiên sử dụng.
- Có ít nhất một máy Android tầm trung và một máy giá rẻ. Lỗi hiệu năng, bộ nhớ và nóng máy xuất hiện ở đó trước tiên, đặc biệt với game.
- Bao phủ ít nhất hai hãng Android. Mỗi giao diện tùy biến xử lý quyền truy cập, tối ưu pin và tác vụ nền khác nhau, điều rất quan trọng với ứng dụng tài xế.
- Giữ một phiên bản hệ điều hành cũ. Người dùng cập nhật chậm hơn nhiều so với suy nghĩ của đội phát triển.
- Test ít nhất một iPhone nếu bạn phát hành trên iOS, tốt nhất không phải đời mới nhất.
Hãy xem lại danh sách này vài tháng một lần khi tập người dùng và thị trường thay đổi.
Checklist: bài test này có cần điện thoại thật không?
Hãy chạy trên thiết bị thật nếu bất kỳ câu nào dưới đây có câu trả lời là có:
- Tốc độ khung hình, chất lượng đồ họa hay nhiệt độ máy có phải một phần trải nghiệm không?
- Luồng này có dùng cử chỉ phức tạp, chạm nhiều điểm hay thao tác cần đúng thời điểm không?
- Có dùng GPS, bản đồ hay vị trí khi chạy nền không?
- Có phụ thuộc vào thông báo đẩy hoặc hoạt động chạy nền không?
- Có liên quan tới chuyển mạng hoặc kết nối yếu, ví dụ lúc đặt hàng không?
- Hiệu năng, bộ nhớ hay pin có nằm trong tiêu chí nghiệm thu không?
- Người dùng đã từng báo lỗi trên một hãng điện thoại cụ thể chưa?
Nếu có từ hai câu trả lời "có" trở lên, những hành trình đó nên được chạy trên điện thoại thật ở mọi chu kỳ phát hành. Muốn thấy cách hoạt động trên chính ứng dụng của bạn? Đặt lịch demo.


