VPS

Emulator Android không màn hình để chạy test

Thanh Nguyễn Đăng 9 phút đọc 4 khối lệnh

Emulator Android không màn hình để chạy test
Mục lục bài viết
  1. Kiểm tra máy chủ trước khi làm gì khác
  2. Tạo và chạy máy ảo
  3. Tài nguyên và số máy ảo chạy song song
  4. Khi nào nên dùng thiết bị thật
  5. Cắm vào hệ thống tự động
  6. Kiểm máy chủ trước khi làm gì khác
  7. Tài nguyên theo số máy ảo chạy song song
  8. Việc chỉ máy thật mới kiểm được
  9. Chờ máy ảo sẵn sàng trước khi chạy kiểm thử
  10. Câu hỏi thường gặp
  11. Bài viết liên quan

Trả lời nhanh: Android emulator chạy được trên máy chủ không màn hình, ở chế độ không hiển thị giao diện, và đây là cách phổ biến để chạy kiểm thử giao diện tự động trong CI. Hai điều kiện quyết định nó chạy nổi hay không: máy chủ phải hỗ trợ ảo hóa lồng nhau, thứ mà không phải VPS nào cũng cho, và máy cần RAM rộng vì mỗi máy ảo ngốn vài GB. Không đủ hai điều đó thì emulator chạy bằng phần mềm và chậm tới mức không dùng được.

Kiểm thử logic thì dễ tự động, còn kiểm thử giao diện thì phải có một thiết bị để bấm vào. Emulator giải quyết chuyện đó mà không cần cắm điện thoại thật vào máy chủ. Bài này nói thẳng cả phần chạy được lẫn phần hay vướng, vì đây là chủ đề mà tài liệu chính thức thường bỏ qua vế thứ hai.

Kiểm tra máy chủ trước khi làm gì khác

Emulator Android chạy nhanh nhờ tăng tốc bằng phần cứng của bộ xử lý. Trên máy chủ ảo, tính năng đó chỉ có khi nhà cung cấp bật ảo hóa lồng nhau cho máy của bạn.

TerminalKiểm tra máy chủ trước khi làm gì khácbash
# Xem CPU co ho tro ao hoa khonggrep -E -c '(vmx|svm)' /proc/cpuinfo # Xem thiet bi tang toc co san khongls -l /dev/kvm

Con số đầu bằng 0 hoặc file thứ hai không tồn tại nghĩa là máy của bạn không dùng được tăng tốc phần cứng. Khi đó emulator vẫn chạy nhưng bằng cách mô phỏng từng lệnh, và một bộ kiểm thử mười phút có thể kéo thành hai tiếng.

Đây là điểm nên hỏi trước khi thuê máy, vì nó không hiện trong bảng cấu hình thông thường. Nếu nhà cung cấp không hỗ trợ, hai đường thay thế là dùng máy chủ vật lý riêng, hoặc chuyển sang kiểm thử trên thiết bị thật.

Tạo và chạy máy ảo

TerminalTạo và chạy máy ảobash
# Cai anh he thong cho kien truc phu hopsdkmanager "system-images;android-35;google_apis;x86_64" # Tao may aoavdmanager create avd -n may-test -k "system-images;android-35;google_apis;x86_64" -d pixel_6 # Chay o che do khong hien giao dienemulator -avd may-test -no-window -no-audio -no-boot-anim -gpu swiftshader_indirect & # Cho toi khi may ao san sangadb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done'

Ba tham số đáng chú ý: không hiện cửa sổ vì máy chủ không có màn hình, tắt âm thanh vì không có thiết bị âm thanh và nó hay gây lỗi, và chọn cách vẽ đồ họa bằng phần mềm vì máy chủ không có card đồ họa.

Dòng cuối quan trọng hơn vẻ ngoài của nó: nếu bạn chạy kiểm thử ngay khi vừa khởi động emulator, phần lớn sẽ thất bại vì hệ điều hành trong máy ảo chưa khởi động xong. Luôn chờ tín hiệu sẵn sàng.

Tài nguyên và số máy ảo chạy song song

Một máy ảo Android tiêu tốn khoảng 2 tới 4GB RAM và chiếm đáng kể CPU trong lúc khởi động. Từ đó suy ra:

  • Máy 8GB chạy được một máy ảo cùng với việc build, nhưng sẽ chật.
  • Máy 16GB chạy hai tới ba máy ảo song song, đủ cho một đội nhỏ chạy kiểm thử trên nhiều phiên bản hệ điều hành.
  • Ổ đĩa cũng cần rộng vì mỗi ảnh hệ thống chiếm vài GB, và ổ nhanh giúp thời gian khởi động máy ảo giảm rõ.

Mẹo tiết kiệm thời gian đáng giá: giữ máy ảo chạy sẵn giữa các lượt kiểm thử thay vì khởi động lại mỗi lần. Khởi động một máy ảo mất một tới hai phút, và nếu bộ kiểm thử của bạn chạy vài lượt mỗi ngày thì con số này cộng dồn nhanh.

Khi nào nên dùng thiết bị thật

Emulator không thay được thiết bị thật ở bốn chuyện:

  • Hiệu năng thật. Emulator chạy trên CPU máy chủ nên nhanh hơn máy giá rẻ rất nhiều. Đo tốc độ trên emulator không nói lên điều gì về trải nghiệm của người dùng.
  • Camera, cảm biến, thanh toán chạm. Có mô phỏng nhưng không giống thật.
  • Lỗi riêng của từng hãng. Nhiều lỗi chỉ xuất hiện trên bản Android tùy biến của một hãng cụ thể.
  • Tiêu thụ pin và nhiệt. Không mô phỏng được.

Cách chia hợp lý cho phần lớn đội: emulator lo phần kiểm thử tự động chạy thường xuyên, còn vài thiết bị thật để kiểm tra trước mỗi lần phát hành. Bản dựng cho đội kiểm thử tải về từ máy build, theo bài build APK và AAB.

Cắm vào hệ thống tự động

Luồng thường dùng trên máy CI tự dựng:

  1. Khởi động emulator ở nền và chờ sẵn sàng.
  2. Cài bản dựng vừa build vào máy ảo.
  3. Chạy bộ kiểm thử giao diện.
  4. Thu thập ảnh chụp màn hình và nhật ký khi có ca thất bại.
  5. Dọn dữ liệu ứng dụng để lượt sau chạy trên trạng thái sạch.

Bước thứ tư hay bị bỏ và đó là sai lầm: kiểm thử giao diện thất bại mà không có ảnh chụp thì gần như không thể đoán nguyên nhân, nhất là khi nó chỉ thất bại trên máy chủ chứ không thất bại trên máy bạn.

Bước thứ năm cũng quan trọng không kém. Dữ liệu còn sót từ lượt trước là nguyên nhân kinh điển của những ca kiểm thử lúc đạt lúc không, loại lỗi tốn thời gian nhất để lần ra. Cách dựng máy chạy CI nằm ở bài runner cho CI mobile.

Kiểm máy chủ trước khi làm gì khác

TerminalKiểm máy chủ trước khi làm gì khácbash
# 1. May co ho tro ao hoa phan cung khong, dieu kien bat buocgrep -E "vmx|svm" /proc/cpuinfo | wc -l# tra ve 0 nghia la khong ho tro, may ao se chay rat cham # 2. Voi may chu ao: nha cung cap co bat ao hoa long nhau khongls /dev/kvm 2>/dev/null && echo "co the dung tang toc phan cung" || echo "KHONG co, se rat cham" # 3. Bo nho: moi may ao an it nhat 2 GBfree -h # 4. O dia: moi anh he thong chiem vai GBdf -h

Bước hai là bước quyết định: nếu nhà cung cấp máy chủ ảo không bật ảo hóa lồng nhau, máy ảo chạy bằng phần mềm thuần và chậm tới mức không dùng được cho việc kiểm thử. Hỏi nhà cung cấp trước khi thuê, đây là câu hỏi ít người nghĩ tới.

Tài nguyên theo số máy ảo chạy song song

Số máy ảo song songBộ nhớGhi chú
14 GBĐủ cho kiểm thử tuần tự
28 GBMức phổ biến
416 GBCần ổ NVMe
Trên 4Cân nhắc thiết bị thật hoặc dịch vụ đám mâyChi phí máy tăng nhanh

Việc chỉ máy thật mới kiểm được

  • Kiểm hiệu năng và mức tiêu thụ pin. Máy ảo không phản ánh đúng.
  • Kiểm camera, cảm biến, thanh toán không tiếp xúc.
  • Kiểm trên đúng dòng máy phổ biến với khách hàng của bạn. Với thị trường Việt Nam, danh sách này khác với thị trường khác.
  • Kiểm cuối cùng trước khi phát hành. Máy ảo cho kiểm thử tự động hằng ngày; thiết bị thật cho lần kiểm cuối.

Chờ máy ảo sẵn sàng trước khi chạy kiểm thử

TerminalChờ máy ảo sẵn sàng trước khi chạy kiểm thửbash
# Ba viec bat buoc khi chay may ao trong he thong tu dong: # 1. Khoi dong may ao va CHO no san sang truoc khi chay kiem thu#    Chay kiem thu khi may ao chua san sang la nguyen nhan#    that bai ngau nhien pho bien nhat # 2. Dat thoi gian cho toi da, va tat may ao sau moi lan chay#    May ao khong duoc tat se tich tu va an het bo nho # 3. Don anh he thong cu dinh ky, chung chiem rat nhieu chodf -h && du -sh ~/.android/avd 2>/dev/null

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

VPS thường có chạy được emulator không?

Chỉ khi nhà cung cấp bật ảo hóa lồng nhau. Hãy kiểm tra sự tồn tại của thiết bị tăng tốc trước khi cài đặt gì. Không có nó thì emulator chạy bằng mô phỏng phần mềm và chậm tới mức không dùng cho CI được.

Cần bao nhiêu RAM cho emulator?

Mỗi máy ảo khoảng 2 tới 4GB. Cộng phần cho hệ điều hành và cho việc build, máy 8GB đủ cho một máy ảo, còn muốn chạy hai ba cái song song thì nên có 16GB.

Emulator có thay được thiết bị thật không?

Cho kiểm thử chức năng thì phần lớn là được. Không thay được khi cần đo hiệu năng thật, thử camera và cảm biến, hoặc tìm lỗi riêng của bản Android do từng hãng tùy biến.

Vì sao kiểm thử lúc đạt lúc không?

Hai nguyên nhân phổ biến: chạy kiểm thử khi máy ảo chưa khởi động xong, và dữ liệu còn sót từ lượt trước. Hãy chờ tín hiệu sẵn sàng và dọn dữ liệu ứng dụng trước mỗi lượt.

Chia sẻ:Facebook

Thanh Nguyễn

TND

Tư vấn bản quyền, VPS và máy chủ kèm hóa đơn VAT, hợp đồng đầy đủ cho doanh nghiệp.