Kiểm thử ứng dụng Android trên thiết bị thật
Kiểm thử ứng dụng Android trên mẫu điện thoại thật
Kiểm thử ứng dụng Android trên các mẫu điện thoại thật, đúng những chiếc người dùng của bạn đang cầm: 150+ mẫu máy từ 11 hãng, Android 12 đến 17. Khôi phục snapshot sạch trước mỗi lần chạy, nhân bản để chạy song song, và truy cập từng máy qua ADB và API.
Những chiếc điện thoại người dùng của bạn đang cầm.
Một device farm không cần phòng lab: từ Galaxy A giá rẻ đến những chiếc Pixel mới nhất năm nay, mỗi mẫu dựng từ bản ghi thông số của chính thiết bị thật và được đo đối chiếu với nó trước khi ai đó có thể khởi chạy. Đây không phải giả lập: Android chạy trực tiếp trên máy chủ ARM với hồ sơ của đúng mẫu máy đó.
Bố cục trên màn hình thật
Độ phân giải, mật độ điểm ảnh và tính năng hiển thị của tấm nền thật, nên bố cục, ảnh chụp màn hình và kiểm tra giao diện khớp với thiết bị.
Đồ họa như máy xuất xưởng
Chuỗi nhà sản xuất GPU và renderer, phiên bản OpenGL và Vulkan của đúng chipset thật, nên ứng dụng thấy đúng phần cứng nó mong đợi.
Có sẵn Google Play
Dịch vụ Google Play và Play Store được cài như trên điện thoại, cho những ứng dụng cần chúng để đăng nhập, thanh toán hay cập nhật.
Mỗi lần chạy một máy sạch.
Đưa máy về đúng trạng thái bài test cần, lưu snapshot, rồi trả máy về đó trước mỗi lần chạy. Một máy không đủ thì nhân bản thêm từ cùng snapshot. Khôi phục snapshot sạch chỉ bằng một lệnh gọi.
- Khôi phục trước mỗi lần chạyMột lệnh gọi đưa máy về snapshot sạch, nên lần chạy nào cũng bắt đầu từ cùng một trạng thái.
- Nhân bản để chạy song songMáy mới từ cùng một snapshot, mỗi máy có thông tin riêng, để chia bộ test ra nhiều thiết bị.
- Sao lưu hằng đêmTạo snapshot cho máy mỗi đêm theo lịch; máy đã tắt không tốn tiền trong lúc chờ.
ADB, khi bạn cần đi sâu hơn.
Mỗi máy có relay ADB riêng. Relay tắt cho đến khi bạn mở cho IP của mình trong một khoảng thời gian định sẵn, và từ chối mọi lệnh có thể làm hỏng thiết bị.
- Tắt cho đến khi bạn bậtBật cho từng máy, kèm danh sách cho phép tối đa 20 IP hoặc dải CIDR.
- Tự hết hạnMặc định 24 giờ, tối đa 7 ngày; phiên không hoạt động tự đóng sau 30 phút.
- Mã đăng nhập dùng một lầnChỉ hiện một lần; nhập sai mã là relay bị khóa. Tối đa 3 phiên mỗi máy, push và pull tối đa 2 GiB mỗi phiên.
- Chặn dịch vụ nguy hiểmroot, remount, disable-verity, reverse, reboot, tcpip, usb, jdwp, sideload và restore luôn bị từ chối. Mọi phiên đều được ghi log.
# 1. open ADB on qa01 for your IP, 24 hours (dashboard or API) curl -X POST https://api.clousd.com/v1/devices/qa01/adb \ -H "Authorization: Bearer $CLOUSD_KEY" \ -H "Content-Type: application/json" \ -d '{"allow_ips":["203.0.113.7"],"ttl_hours":24}' # → connect command and a one-time code, shown once # 2. connect and sign in with the code adb connect $HOST:$PORT adb -s $HOST:$PORT shell clousd-login $CODE # 3. work as usual adb -s $HOST:$PORT install app-debug.apk adb -s $HOST:$PORT shell pm list packages | grep example adb -s $HOST:$PORT logcat -d | tail -n 50
Gắn vào CI.
Mọi thứ một lần chạy test cần đều là lệnh gọi REST tới https://api.clousd.com/v1. Thao tác dài trả về 202 kèm một job để theo dõi, và khóa API có thể giới hạn vào các máy test với quyền đọc hoặc điều khiển. Xem REST API và relay ADB và các route cho CI.
API=https://api.clousd.com/v1 AUTH="Authorization: Bearer $CLOUSD_KEY" # reset qa01 to its clean snapshot and wait for the job JOB=$(curl -s -X POST -H "$AUTH" \ $API/devices/qa01/snapshots/v20/restore | jq -r .job.id) until [ "$(curl -s -H "$AUTH" $API/jobs/$JOB | jq -r .job.state)" \ != running ]; do sleep 3; done # install this build and open it curl -s -H "$AUTH" -F apk=@app-release.apk $API/devices/qa01/apk curl -s -H "$AUTH" -H "Content-Type: application/json" \ -d '{"op":"open_app","package":"com.example.app"}' \ $API/devices/qa01/action # keep the evidence curl -s -H "$AUTH" $API/devices/qa01/screenshot -o after.png curl -s -H "$AUTH" $API/devices/qa01/logs > logcat.txt
# the same steps on four phones at once, 0–5 s apart curl -X POST https://api.clousd.com/v1/groups -H "$AUTH" \ -H "Content-Type: application/json" -d '{ "phones": ["qa01", "qa02", "qa03", "qa04"], "steps": [ {"op": "open_app", "package": "com.example.app"}, {"op": "wait", "seconds": 3}, {"op": "if_text", "text": "Sign in", "skip": 1}, {"op": "screenshot"} ], "stagger": [0, 5] }' # 202 → progress per phone in job.output
# a key created with a webhook URL receives signed events POST https://ci.example.com/clousd X-Clousd-Signature: 9f2c…e41a {"event": "job.finished", "ts": …, "phone": "qa01", "job": {…}} # events: job.finished · health.problem · health.resolved # signature: HMAC-SHA256 of the body · 3 delivery attempts
Test ứng dụng ở nhiều quốc gia.
Cho máy một kết nối ở quốc gia khác, múi giờ, ngôn ngữ, bàn phím, cửa hàng ứng dụng và quốc gia SIM sẽ đi theo, nên bạn thấy ứng dụng đúng như người dùng ở đó thấy. Xem lần chạy ngay khi nó diễn ra, không cần rời bàn làm việc.
Luồng hình tự hạ chất lượng khi mạng của bạn yếu đi, và nâng lại khi mạng ổn. Multi-view hiện nhiều màn hình cùng lúc, còn Sync sao chép thao tác của bạn tới các máy bạn chọn.
Câu hỏi về kiểm thử ứng dụng
Cần hỏi gì khác? Hãy nhắn cho bộ phận hỗ trợ, người thật sẽ trả lời, thường trong một ngày làm việc.
Đây có phải giả lập không?
Không. Android chạy trực tiếp trên máy chủ ARM với hồ sơ của một mẫu điện thoại thật, nên ứng dụng của bạn thấy đúng mẫu máy đó chứ không phải một thiết bị giả lập chung chung. Cloud phone khác giả lập thế nào
Có dùng thử miễn phí không?
Có. Máy đầu tiên của bạn chạy miễn phí 30 phút, không cần thẻ, không cần nạp tiền. Sau đó là tính tiền theo phút, không tính theo người dùng: $0.004 mỗi phút khi máy chạy.
Tôi chọn được đúng phiên bản Android không?
Được, theo từng máy. Mỗi mẫu trong danh mục liệt kê các phiên bản bạn khởi chạy được ngay hôm nay, Android 12 đến 17. Android 12–14 giá gốc; Android 15 đắt hơn 10%, Android 16 và 17 đắt hơn 25%.
Làm sao khôi phục máy giữa các lần chạy test?
Lưu snapshot một lần ở trạng thái sạch, rồi khôi phục snapshot đó trước mỗi lần chạy. Chỉ một lệnh gọi API, trả về 202 kèm một job để theo dõi tại /v1/jobs/{id}.
Chạy song song cả bộ test được không?
Được. Nhân bản máy mới từ snapshot sạch, mỗi máy có thông tin riêng, rồi chia bộ test cho chúng, hoặc chạy cùng các bước trên cả nhóm với độ trễ ngẫu nhiên.
ADB có mở ra Internet không?
Không. ADB mặc định tắt. Bạn mở cho từng máy, với danh sách cho phép tối đa 20 IP hoặc dải CIDR và trong một khoảng thời gian định sẵn (mặc định 24 giờ, tối đa 7 ngày), đăng nhập bằng mã dùng một lần, và mọi phiên đều được ghi log.
Tôi cài APK của mình được không?
Được: tải lên trên bảng điều khiển, gửi tới POST /v1/devices/{id}/apk, hoặc adb install qua relay.
AI agent chạy test được không?
Được, ở giai đoạn truy cập sớm: agent nhìn màn hình và các phần tử trên đó, rồi chạm và gõ qua lệnh gọi observe và act, bắt đầu từ snapshot sạch mỗi lần chạy. Xem kiểm thử do agent điều khiển.
Tôi test được ứng dụng chạy thế nào ở quốc gia khác không?
Được. Cho máy một kết nối ở quốc gia đó, múi giờ, ngôn ngữ, bàn phím, cửa hàng ứng dụng và quốc gia SIM sẽ đi theo. Chọn khu vực máy chủ gần đội của bạn nhất để màn hình và ADB luôn nhanh.
Đưa ứng dụng lên một mẫu máy thật chỉ trong một phút.
- 30 phút đầu miễn phí, không cần thẻ.
- Chọn mẫu máy và phiên bản Android.
- Cài bản build và bắt đầu test.