Để tạo nền tảng vững chắc cho một ứng dụng chất lượng, hãy tuân thủ các nguyên tắc về chất lượng cốt lõi của ứng dụng.
Các nguyên tắc này xác định chất lượng tối thiểu mà tất cả ứng dụng phải đáp ứng.
Chất lượng của ứng dụng thích ứng
Các ứng dụng Android chạy trên nhiều loại thiết bị, từ điện thoại nhỏ gọn đến máy tính bảng, thiết bị có thể gập lại, máy tính để bàn, màn hình kết nối, hệ thống thông tin giải trí trên ô tô, TV và XR. Các chế độ cửa sổ như chia đôi màn hình và cửa sổ kiểu máy tính cho phép ứng dụng chạy trong các phần có thể thay đổi kích thước của màn hình.
Tuân thủ nguyên tắc về chất lượng ứng dụng thích ứng (kết hợp với nguyên tắc cốt lõi về chất lượng ứng dụng) để:
- Tạo ứng dụng được tối ưu hoá cho mọi kiểu dáng và kích thước màn hình
- Nâng cao thứ hạng của ứng dụng trong trang thông tin và kết quả tìm kiếm trên Google Play
- Thu nạp thêm người dùng và tăng tỷ lệ giữ chân người dùng
Nguyên tắc
Các nguyên tắc cốt lõi sau đây giúp bạn tạo một ứng dụng cơ bản, chất lượng cao.
Trải nghiệm người dùng
Kiểu tương tác và thiết kế hình ảnh tiêu chuẩn trên Android mang đến trải nghiệm nhất quán và trực quan cho người dùng.
Sử dụng Thành phần Material Design để tạo giao diện người dùng của ứng dụng thay cho các thành phần của nền tảng Android nếu có thể. Material Design mang đến giao diện Android hiện đại và nhất quán trên các phiên bản Android.
Tính khả dụng
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Consistent_UX | T-Consistent_UX, T-SD_Card |
Ứng dụng mang lại trải nghiệm nhất quán cho người dùng trong mọi trường hợp sử dụng ứng dụng trên mọi hệ số hình dạng. |
| App_Switcher | T-App_Switcher, T-SD_Card |
Ứng dụng chuyển sang chế độ nền khi tiêu điểm chuyển sang một ứng dụng khác. Ứng dụng quay lại chế độ nền trước khi được kích hoạt lại qua trình chuyển đổi ứng dụng Gần đây. |
| Sleep_Resume | T-Sleep_Resume, T-SD_Card |
Khi là ứng dụng trên nền trước, ứng dụng sẽ tạm dừng khi thiết bị chuyển sang chế độ ngủ và tiếp tục hoạt động khi thiết bị hoạt động trở lại. |
| Lock_Resume | T-Lock_Resume, T-SD_Card |
Khi là ứng dụng trên nền trước, ứng dụng sẽ tạm dừng khi thiết bị bị khoá và tiếp tục khi thiết bị được mở khoá. |
Giao diện người dùng
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Display_State_Parity | T-Orientation_Transitions |
Các hướng hiển thị và trạng thái gập về cơ bản sẽ có các tính năng và thao tác giống nhau, đồng thời duy trì sự đồng nhất về chức năng. |
| Fullscreen_Display | T-Orientation_Transitions |
Ứng dụng lấp đầy cửa sổ ứng dụng ở cả hai hướng và không có khung viền hòm thư do có thay đổi về cấu hình, bao gồm cả thao tác gập và mở thiết bị. Chấp nhận được khung viền hòm thư nhỏ để lấp vào những chỗ còn trống tuỳ theo hình dạng hình học của màn hình. |
| Orientation_Transitions | T-Orientation_Transitions | Ứng dụng xử lý nhanh quá trình chuyển đổi giữa hướng hiển thị và thao tác gập/mở thiết bị mà không gặp sự cố hiển thị và không mất trạng thái. |
Chất lượng hình ảnh
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Chất lượng_đồ_hoạ | T-Graphic_Quality |
Ứng dụng hiển thị đồ hoạ, văn bản, hình ảnh và các phần tử trên giao diện người dùng mà không bị méo hình, làm mờ hay tạo pixel.
|
| Line_Length | T-Line_Length | Ứng dụng đảm bảo khả năng đọc của văn bản và khối văn bản bằng cách giới hạn độ dài dòng từ 45 đến 75 ký tự (bao gồm cả khoảng trắng) cho từng ngôn ngữ được hỗ trợ trong ứng dụng. |
| Theme_Support | T-Theme_Support | Nội dung của ứng dụng và tất cả nội dung web mà ứng dụng truy cập đều hỗ trợ cả giao diện sáng và tối. |
Di chuyển
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Back_Button_Nav | T-Back_Nav | Ứng dụng hỗ trợ tính năng thao tác bằng nút quay lại tiêu chuẩn và không nhắc nút quay lại tuỳ chỉnh trên màn hình. |
| Back_Gesture_Nav | T-Back_Nav | Ứng dụng hỗ trợ điều hướng bằng cử chỉ để quay lại và chuyển đến màn hình chính. |
| State_Preservation | T-State_Preservation, T-Back_Nav |
Ứng dụng giữ nguyên trạng thái của ứng dụng hoặc người dùng khi người dùng rời khỏi chế độ nền trước và ngăn việc vô tình mất dữ liệu do thao tác quay lại và các thay đổi khác về trạng thái. Khi quay lại nền trước, ứng dụng sẽ khôi phục trạng thái được bảo lưu và mọi giao dịch có trạng thái đang chờ xử lý. Ví dụ: thay đổi đối với các trường có thể chỉnh sửa, tiến trình chơi, trình đơn, video và các phần khác của ứng dụng.
|
Thông báo
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Notification_Quality | T-Notification_Quality |
Thông báo cung cấp thông tin có liên quan đến ứng dụng của bạn.
|
| Conversation_Quality | T-Notification_Quality |
Đối với ứng dụng nhắn tin, ứng dụng mạng xã hội và trò chuyện:
|
Hỗ trợ tiếp cận
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Touch_Target_Size | T-Touch_Target_Size | Đích chạm có kích thước tối thiểu là 48 dp. Xem nguyên tắc về Bố cục và kiểu chữ của Material Design. |
| Độ_tương_phản_thị_giác | T-Visual_Contrast |
Văn bản và nội dung trên nền trước của ứng dụng duy trì các tỷ lệ tương phản sau với nền ứng dụng:
Tìm hiểu thêm về màu sắc và độ tương phản. |
| Content_Description | T-Content_Description | Sử dụng contentDescription để mô tả từng phần tử trên giao diện người dùng, ngoại trừ TextView. |
Chức năng
Ứng dụng của bạn phải triển khai hành vi của chức năng đúng như dự tính.
Âm thanh
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Audio_Playback_Start | T-Audio_Playback_Start |
Khi người dùng bắt đầu phát âm thanh, thì trong vòng một giây, ứng dụng phải thực hiện một trong những thao tác sau:
|
| Audio_Focus_Request | T-Audio_Focus_Request | Ứng dụng phải yêu cầu cấp quyền phát âm thanh khi bắt đầu phát âm thanh và từ bỏ quyền phát âm thanh khi dừng phát. |
| Audio_Focus_Change | T-Audio_Focus_Change | Ứng dụng phải xử lý yêu cầu của các ứng dụng khác đối với quyền phát âm thanh. Ví dụ: một ứng dụng có thể giảm âm lượng phát nội dung khi một ứng dụng khác phát giọng nói. |
| Audio_Playback_Background | T-Audio_Playback_Background | Ứng dụng phải hỗ trợ chế độ phát trong nền. Ứng dụng phải sử dụng một dịch vụ trên nền trước để ngăn hệ thống huỷ quy trình của ứng dụng khi ứng dụng không còn hiển thị nữa. Ứng dụng cũng phải hiển thị một thông báo liên tục, không thể loại bỏ trên thanh trạng thái hoặc màn hình khoá để thông báo cho người dùng rằng ứng dụng đang chạy. Người dùng phải có thể điều khiển chế độ phát bằng các nút điều khiển trên thông báo hoặc màn hình khoá, hoặc các nút điều khiển trên một phụ kiện được kết nối. |
| Audio_Notification_Style | T-Audio_Notification_Style | Khi phát âm thanh ở chế độ nền, ứng dụng phải tạo một thông báo được định kiểu bằng MediaStyle. |
| Audio_Playback_Resume | T-Audio_Playback_Resume | Nếu ứng dụng chạy ở chế độ nền và âm thanh bị tạm dừng, thì âm thanh sẽ tiếp tục phát khi ứng dụng quay lại nền trước, hoặc ứng dụng phải cho người dùng biết rằng nội dung phát đang ở trạng thái tạm dừng. |
Video
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Video_PiP | T-Video_PiP | Nếu phát video, ứng dụng của bạn phải hỗ trợ chế độ phát hình trong hình. |
| Video_Encoding | T-Video_Encoding | Nếu mã hoá video, ứng dụng phải mã hoá bằng tiêu chuẩn nén video HEVC. |
| Video_Playback_Background | T-Video_Playback_Background | Ứng dụng hỗ trợ phát video trong nền khi ứng dụng không phải là ứng dụng ở trên cùng, kể cả khi cửa sổ ứng dụng:
|
Chia sẻ
| ID | Kiểm thử | Mô tả |
|---|---|---|
| System_Sharesheet | T-System_Sharesheet | Khi chia sẻ nội dung, ứng dụng phải sử dụng Trang chia sẻ nội dung trong Android. Ứng dụng có thể đề xuất cả những mục tiêu không sẵn có cho các giải pháp tuỳ chỉnh. |
Dịch vụ nền
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Background_Service_Optimization | T-Background_Service_Optimization |
Ứng dụng tránh chạy các dịch vụ dài ở chế độ nền một cách không cần thiết để đảm bảo thiết bị của người dùng hoạt động trơn tru. Lưu ý: Hệ thống áp dụng nhiều quy định hạn chế đối với các dịch vụ nền. Sau đây là những trường hợp sử dụng dịch vụ nền không phù hợp:
Để biết thêm thông tin, hãy xem bài viết Tổng quan về các tác vụ trong nền. |
Hiệu suất và độ ổn định
Ứng dụng của bạn phải mang đến hiệu suất, độ ổn định, khả năng tương thích và khả năng thích ứng tối ưu.
Hiệu suất
| ID | Kiểm thử | Mô tả |
|---|---|---|
| App_Startup_Time | T-App_Startup_Time | Ứng dụng tải nhanh hoặc đưa ra phản hồi trên màn hình cho người dùng (chỉ báo tiến trình hoặc biểu tượng có chức năng tương tự) nếu quá trình tải ứng dụng mất hơn 2 giây. |
| Rendering_Performance | T-Rendering_Performance | Ứng dụng kết xuất khung hình sau mỗi 16 mili giây (hoặc ít hơn) để hiển thị ít nhất 60 khung hình/giây. Để được trợ giúp về các vấn đề kết xuất, hãy xem phần Kết xuất chậm. |
| StrictMode_Compliance | T-StrictMode_Compliance | Khi StrictMode được bật (xem phần kiểm thử StrictMode), cảnh báo nhấp nháy màu đỏ (cảnh báo hiệu suất của StrictMode) sẽ không xuất hiện trong quá trình kiểm thử ứng dụng. |
Độ ổn định
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Stability_ANR | T-Stability_ANR | Ứng dụng không gặp sự cố hoặc chặn luồng giao diện người dùng gây ra lỗi ANR (Android không phản hồi). Sử dụng báo cáo trước khi ra mắt của Google Play để xác định các vấn đề tiềm ẩn về độ ổn định. Sau khi triển khai, hãy theo dõi trang Android Vitals trong Google Play Console. |
SDK
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Khả năng tương thích của nền tảng Android | T-Android_Platform_Compatibility | Ứng dụng chạy trên phiên bản công khai mới nhất của nền tảng Android mà không gặp sự cố hoặc không ảnh hưởng nghiêm trọng đến chức năng cốt lõi. |
| Target_SDK_Version | T-Target_SDK_Version | Ứng dụng nhắm đến SDK Android mới nhất cần thiết để phù hợp với các yêu cầu của Google Play bằng cách thiết lập giá trị targetSdk trong tệp build.gradle của mô-đun ứng dụng. |
| Compile_SDK_Version | T-Target_SDK_Version | Ứng dụng được xây dựng bằng SDK Android mới nhất bằng cách thiết lập giá trị compileSdk trong tệp build.gradle của mô-đun ứng dụng. |
| SDK_Maintenance | T-SDK_Maintenance, T-Non_SDK_Interfaces |
Mọi SDK của Google hoặc bên thứ ba mà bạn sử dụng đều được cập nhật. Mọi cải tiến đối với những SDK này liên quan đến tính ổn định, khả năng tương thích hoặc tính bảo mật đều phải được cung cấp cho người dùng kịp thời. Đối với các SDK của Google, hãy sử dụng SDK do Dịch vụ Google Play cung cấp (nếu có). Các SDK này có khả năng tương thích ngược, nhận bản cập nhật tự động, giảm kích thước gói ứng dụng và sử dụng hiệu quả tài nguyên trên thiết bị. |
| Non_SDK_Interfaces | T-Non_SDK_Interfaces | Ứng dụng không sử dụng giao diện không phải SDK. |
| Chất lượng bản dựng phát hành công khai | T-Production_Build_Quality | Ứng dụng phát hành chính thức không có thư viện gỡ lỗi. Các thư viện gỡ lỗi có trong ứng dụng có thể gây ra các vấn đề về hiệu suất cũng như bảo mật. |
Pin
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Power_Management | T-Power_Management |
Ứng dụng hỗ trợ đúng cách các tính năng quản lý nguồn pin Chế độ nghỉ và Chế độ chờ ứng dụng. Các ứng dụng có thể yêu cầu được miễn trừ việc bảo trì nguồn điện. Xem phần Hỗ trợ các trường hợp sử dụng khác trong bài viết Tối ưu hoá cho chế độ Nghỉ và Chế độ chờ ứng dụng. |
Quyền riêng tư và bảo mật
Ứng dụng xử lý dữ liệu người dùng và thông tin cá nhân một cách an toàn, đồng thời cung cấp các cấp độ quyền thích hợp.
Các ứng dụng phát hành trên Cửa hàng Google Play cũng phải tuân thủ chính sách Dữ liệu người dùng của Google Play để bảo vệ quyền riêng tư của người dùng.
Quyền
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Minimize_Permissions | T-Minimize_Permissions | Ứng dụng chỉ yêu cầu số lượng quyền tối thiểu tuyệt đối cần thiết để hỗ trợ trường hợp sử dụng hiện tại. Đối với một số quyền (chẳng hạn như vị trí), ứng dụng sử dụng thông số tương đối thay cho thông số chính xác nếu có thể. Xem phần Giảm thiểu các yêu cầu quyền. |
| Sensitive_Permissions | T-Sensitive_Permissions |
Ứng dụng chỉ được yêu cầu cấp quyền truy cập vào dữ liệu nhạy cảm (chẳng hạn như các nhóm quyền liên quan đến Nhật ký cuộc gọi hoặc tin nhắn SMS hoặc vị trí) hoặc các dịch vụ có tính phí (chẳng hạn như Tin nhắn SMS hoặc Trình quay số) khi có liên quan trực tiếp đến các trường hợp sử dụng chính của ứng dụng đó. Bạn phải thông báo rõ ràng cho người dùng về hệ quả liên quan đến những quyền này. Tuỳ thuộc vào cách ứng dụng của bạn sử dụng các quyền, có thể có một cách thay thế để đáp ứng trường hợp sử dụng ứng dụng mà không cần đến quyền truy cập vào thông tin nhạy cảm. Ví dụ: thay vì yêu cầu các quyền liên quan đến danh bạ của người dùng, hãy sử dụng ý định ngầm ẩn để yêu cầu quyền truy cập. |
| Runtime_Permissions | T-Runtime_Permissions | Ứng dụng yêu cầu quyền khi bắt đầu chạy theo bối cảnh, chẳng hạn như khi người dùng yêu cầu một chức năng nào đó, thay vì yêu cầu trước trong quá trình khởi động. |
| Permission_Rationale | T-Permission_Rationale | Ứng dụng giải thích rõ ràng lý do cần có quyền. |
| Graceful_Degradation | T-Graceful_Degradation | Ứng dụng xuống cấp nhẹ khi người dùng từ chối hoặc thu hồi quyền. Ứng dụng không được ngăn chặn triệt để người dùng truy cập. |
Dữ liệu và tệp
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Sensitive_Data_Storage | T-Sensitive_Data_Storage, T-Sensitive_Data_Handling |
Tất cả dữ liệu nhạy cảm đều được lưu trữ tại bộ nhớ trong của ứng dụng. |
| Sensitive_Data_Logging | T-Sensitive_Data_Logging | Không có dữ liệu cá nhân hoặc nhạy cảm nào của người dùng được ghi vào nhật ký hệ thống hoặc nhật ký dành riêng cho ứng dụng. |
| Hardware_IDs | T-Hardware_IDs | Ứng dụng không sử dụng mã phần cứng không đặt lại được, chẳng hạn như mã IMEI, cho mục đích xác định danh tính. |
Danh tính
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Gợi_ý_tự_động_điền | T-Autofill_Hints | Ứng dụng đưa ra các gợi ý để tự động điền thông tin xác thực tài khoản và thông tin nhạy cảm khác, chẳng hạn như thông tin thẻ tín dụng, địa chỉ thực và số điện thoại. |
| Credential_Manager | T-Credential_Manager | Ứng dụng tích hợp Trình quản lý thông tin xác thực cho Android để mang đến trải nghiệm đăng nhập liền mạch, hợp nhất tính năng hỗ trợ cho khoá truy cập, danh tính liên kết và mật khẩu. |
| Biometric_Authentication | T-Biometric_Authentication | Ứng dụng hỗ trợ xác thực bằng hệ thống nhận dạng sinh trắc học để bảo vệ các giao dịch tài chính hoặc thông tin nhạy cảm (ví dụ: tài liệu quan trọng của người dùng). |
Thành phần ứng dụng
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Component_Export | T-Component_Export |
Ứng dụng thiết lập rõ ràng thuộc tính Chỉ những thành phần ứng dụng có chia sẻ dữ liệu với ứng dụng khác hoặc các thành phần có thể được các ứng dụng khác gọi, mới được xuất. |
| Component_Permissions | T-Component_Permissions |
Mọi ý định và thông báo đều tuân theo các phương pháp hay nhất:
|
| Component_Protection | T-Component_Protection |
Mọi thành phần có chia sẻ nội dung giữa các ứng dụng đều sử dụng Ứng dụng không được dựa vào quyền truy cập danh sách gói đã cài đặt. |
Mạng
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Network_Security_Traffic | T-Network_Security_Traffic | Tất cả lưu lượng truy cập mạng đều được gửi qua SSL. |
| Network_Security_Configuration | T-Network_Security_Configuration | Ứng dụng khai báo một cấu hình bảo mật mạng. |
| Security_Provider_Initialization | T-Security_Provider_Initialization | Nếu ứng dụng sử dụng Dịch vụ Google Play, thì trình cung cấp dịch vụ bảo mật sẽ được khởi động khi khởi động ứng dụng. |
WebView
| ID | Kiểm thử | Mô tả |
|---|---|---|
| WebView_Asset_Loader | T-WebView_Asset_Loader, T-WebView_Navigation |
Đừng sử dụng setAllowUniversalAccessFromFileURLs() để truy cập nội dung cục bộ. Thay vào đó, hãy sử dụng WebViewAssetLoader. |
| WebView_JavaScript | T-WebView_JavaScript, T-WebView_Navigation |
Khung hiển thị web không sử dụng Trên Android 6.0 (cấp độ API 23 trở lên), hãy chuyển sang sử dụng kênh thông báo HTML. |
Thực thi
| ID | Kiểm thử | Mô tả |
|---|---|---|
| App_Bundles | T-App_Bundles |
Ứng dụng không tải động mã từ bên ngoài tệp APK của ứng dụng. Sử dụng Android App Bundle, bao gồm cả Play Feature Delivery và Play Asset Delivery. Kể từ tháng 8 năm 2021, tất cả ứng dụng mới trong Cửa hàng Google Play đều bắt buộc phải sử dụng Android App Bundle. |
Mật mã học
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Cryptographic_Algorithms | T-Cryptographic_Algorithms | Ứng dụng sử dụng thuật toán mật mã học mạnh và do nền tảng cung cấp cùng với một trình tạo số ngẫu nhiên. Ngoài ra, ứng dụng không triển khai thuật toán tuỳ chỉnh. |
Google Play
Cho phép xuất bản ứng dụng của bạn trên Google Play.
Chính sách
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Play_Content_Policies | T-Play_Content_Policies | Ứng dụng tuân thủ nghiêm ngặt các điều khoản trong Chính sách nội dung dành cho nhà phát triển trên Google Play, không cung cấp nội dung không phù hợp và không sử dụng tài sản trí tuệ hoặc thương hiệu của người khác. |
| Play_Content_Rating | T-Play_Content_Policies | Mức độ trưởng thành của đối tượng mà ứng dụng nhắm đến được thiết lập thích hợp dựa trên Nguyên tắc phân loại nội dung. |
Trang chi tiết ứng dụng
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Play_Feature_Graphic | T-Play_Feature_Graphic, T-Play_Graphic_Assets |
Ảnh đầu trang của ứng dụng tuân theo các nguyên tắc nêu trong bài viết trợ giúp này. Đảm bảo rằng:
|
| Play_Device_References | T-Play_Graphic_Assets | Ảnh chụp màn hình và video của ứng dụng không cho thấy hoặc tham chiếu đến thiết bị không phải Android. |
| Play_Misleading_Content | T-Play_Graphic_Assets | Ảnh chụp màn hình hoặc video của ứng dụng không được thể hiện nội dung và trải nghiệm trong ứng dụng theo cách gây hiểu lầm. |
Hỗ trợ người dùng
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Play_User_Reviews | T-Play_Content_Policies | Các lỗi thường gặp do người dùng báo cáo trong thẻ Bài đánh giá trên trang Google Play sẽ được giải quyết nếu các lỗi này có thể lặp lại và xảy ra trên nhiều thiết bị. Nếu lỗi chỉ xảy ra trên một vài thiết bị, bạn vẫn nên xử lý lỗi đó nếu đó là các thiết bị đặc biệt phổ biến hoặc mới. |
Môi trường thử nghiệm
Thiết lập môi trường thử nghiệm như sau:
Kiểm thử trên trình mô phỏng: Trình mô phỏng Android là một cách tuyệt vời để kiểm thử ứng dụng của bạn theo nhiều phiên bản Android và độ phân giải màn hình. Thiết lập thiết bị được mô phỏng (AVD) để thể hiện các kiểu dáng và tổ hợp phần cứng/phần mềm phổ biến nhất đại diện cho cơ sở người dùng mà mình nhắm đến. Kiểm thử nhiều kiểu dáng thiết bị bằng các trình mô phỏng sau (ít nhất):
- Thiết bị có thể gập lại: Thiết bị có thể gập lại với màn hình ngoài 7,6" (liệt kê trong phần điện thoại trong Trình quản lý thiết bị Android ảo)
- Máy tính bảng: Pixel C 9,94 inch (2.560px x 1.800px)
- Kiểm thử thông báo trên ứng dụng di động: Ghép nối thiết bị di động / trình mô phỏng với trình mô phỏng Wear OS: Wear OS Round 1.84"
Thiết bị phần cứng: Môi trường thử nghiệm của bạn nên bao gồm một số ít thiết bị phần cứng thực tế đại diện cho các kiểu dáng thiết bị chính và các tổ hợp phần cứng/phần mềm mà người dùng có thể sử dụng. Bạn không cần phải thử nghiệm trên mọi thiết bị có mặt trên thị trường. Tập trung vào một số ít thiết bị tiêu biểu, thậm chí sử dụng một hoặc hai thiết bị cho mỗi kiểu dáng.
Phòng thử nghiệm thiết bị: Bạn cũng có thể sử dụng các dịch vụ của bên thứ ba, chẳng hạn như Phòng thử nghiệm Firebase, để kiểm thử ứng dụng của mình trên nhiều thiết bị.
Kiểm thử với phiên bản Android mới nhất: Ngoài việc kiểm thử các phiên bản Android đại diện cho cơ sở người dùng mà bạn nhắm đến, điều nên làm là luôn thử nghiệm trên phiên bản Android mới nhất để đảm bảo những thay đổi mới nhất về hành vi không ảnh hưởng tiêu cực đến trải nghiệm người dùng của ứng dụng.
Để biết thêm hướng dẫn về quy trình kiểm thử, bao gồm cả kiểm thử đơn vị, kiểm thử tích hợp và kiểm thử giao diện người dùng, hãy xem bài viết Kiến thức cơ bản về kiểm thử ứng dụng Android.
StrictMode
Để kiểm thử hiệu suất, hãy bật StrictMode trong ứng dụng. Sử dụng StrictMode để phát hiện những thao tác có thể ảnh hưởng đến hiệu suất, quyền truy cập mạng, lượt đọc và ghi tệp. Hãy tìm các thao tác có thể có vấn đề trên cả luồng chính và các luồng khác.
Thiết lập chính sách giám sát theo từng luồng bằng cách sử dụng StrictMode.ThreadPolicy.Builder và bật tất cả chức năng giám sát được hỗ trợ trong ThreadPolicy bằng detectAll().
Bật thông báo bằng hình ảnh trực quan về lỗi vi phạm chính sách đối với ThreadPolicy bằng penaltyFlashScreen().
Kiểm thử
Các bài kiểm thử chất lượng cốt lõi của ứng dụng giúp bạn đánh giá chất lượng cơ bản của ứng dụng. Bạn có thể kết hợp các bài kiểm thử hoặc tích hợp các nhóm kiểm thử vào kế hoạch kiểm thử của mình.
Trải nghiệm người dùng
Kiểm thử để đảm bảo trải nghiệm người dùng nhất quán và trực quan.
Tính khả dụng
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Consistent_UX | Consistent_UX |
Di chuyển đến mọi phần của ứng dụng — tất cả màn hình, hộp thoại, chế độ cài đặt và toàn bộ luồng người dùng. Thực hiện các bước sau:
|
| T-App_Switcher | App_Switcher | Trên mỗi màn hình ứng dụng, hãy chuyển sang một ứng dụng khác đang chạy, sau đó quay lại ứng dụng đang được kiểm thử bằng trình chuyển đổi ứng dụng Gần đây. |
| T-Sleep_Resume | Sleep_Resume | Nhấn nút nguồn để chuyển thiết bị sang chế độ ngủ, sau đó nhấn lại nút nguồn để đánh thức màn hình. |
| T-Lock_Resume | Lock_Resume | Thiết lập khoá màn hình trên thiết bị. Nhấn nút nguồn để chuyển thiết bị sang chế độ ngủ (khoá thiết bị). Sau đó, nhấn lại nút nguồn để đánh thức màn hình và mở khoá thiết bị. |
Thẻ SD
| ID | Tính năng | Mô tả |
|---|---|---|
| T-SD_Card | Consistent_UX |
Thực hiện kiểm thử chức năng cốt lõi khi ứng dụng được cài đặt trên thẻ SD của thiết bị (nếu ứng dụng hỗ trợ phương thức cài đặt này). Để di chuyển ứng dụng sang thẻ SD, hãy xem phần Cài đặt của ứng dụng. |
Giao diện người dùng
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Orientation_Transitions | Display_State_Parity, Fullscreen_Display, Orientation_Transitions |
Trên mỗi màn hình ứng dụng, hãy xoay thiết bị giữa hướng ngang và dọc, cũng như trạng thái gập và mở ít nhất 3 lần. Xác minh để đảm bảo ứng dụng thực hiện những việc sau:
|
Chất lượng hình ảnh
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Graphic_Quality | Chất lượng đồ hoạ | Sử dụng tất cả các tính năng của ứng dụng. Xác minh rằng tất cả hình ảnh, bao gồm cả đồ hoạ, văn bản, hình ảnh và các phần tử khác trên giao diện người dùng đều không bị méo hình, làm mờ hay vỡ hình. |
| T-Line_Length | Line_Length |
Xem xét tất cả các khối văn bản trong ứng dụng. Xác minh rằng độ dài dòng của văn bản và khối văn bản được giới hạn từ 45 đến 75 ký tự (bao gồm cả khoảng trống) để dễ đọc. Xác minh những điều sau:
|
| T-Theme_Support | Theme_Support | Xác minh rằng mọi văn bản đều dễ đọc trong giao diện sáng và tối. Xác minh rằng tất cả hình ảnh đều dễ phân biệt và có tính thẩm mỹ trong giao diện sáng và tối. |
Di chuyển
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Back_Nav | Back_Button_Nav, Back_Gesture_Nav |
Di chuyển đến mọi phần của ứng dụng — tất cả màn hình, hộp thoại, chế độ cài đặt và toàn bộ luồng người dùng. Trên mỗi màn hình ứng dụng, hãy nhấn nút Quay lại hoặc sử dụng cử chỉ vuốt ngược. Ứng dụng sẽ chuyển đến màn hình trước đó hoặc màn hình chính. |
| T-State_Preservation | State_Preservation | Trên mỗi màn hình ứng dụng, hãy nhấn phím Màn hình chính của thiết bị hoặc vuốt lên khi điều hướng bằng cử chỉ, sau đó chạy lại ứng dụng qua màn hình Tất cả ứng dụng. |
Thông báo
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Notification_Quality | Notification_Quality, Conversation_Quality |
Kích hoạt và quan sát trong ngăn thông báo tất cả các loại thông báo mà ứng dụng có thể hiển thị. Nếu có, hãy mở rộng thông báo (Android 4.1 trở lên) rồi nhấn vào tất cả thao tác hiện có. |
Hỗ trợ tiếp cận
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Touch_Target_Size | Touch_Target_Size | Xác minh rằng kích thước và vị trí của đích nhấn được duy trì nhất quán, cũng như có thể truy cập đối với mọi kích thước và cấu hình màn hình. Để biết thông tin về tính năng hỗ trợ tiếp cận, hãy xem nội dung về Trình quét hỗ trợ tiếp cận. |
| T-Visual_Contrast | Visual_Contrast | Xác minh độ tương phản của tất cả các phần tử trực quan. |
| T-Content_Description | Content_Description | Xác minh rằng tất cả các phần tử trên giao diện người dùng, ngoại trừ TextView, đều có nội dung mô tả. |
Chức năng
Xác minh rằng ứng dụng của bạn triển khai hành vi chức năng sau.
Âm thanh
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Audio_Playback_Start | Audio_Playback_Start | Bắt đầu phát âm thanh. Xác minh rằng trong vòng một giây, ứng dụng bắt đầu phát âm thanh hoặc cung cấp chỉ báo trực quan cho biết dữ liệu âm thanh đang được chuẩn bị để phát. |
| T-Audio_Focus_Request | Audio_Focus_Request | Bắt đầu phát âm thanh. Ứng dụng phải yêu cầu cấp quyền phát âm thanh. Khi quá trình phát âm thanh dừng lại, ứng dụng sẽ nhả quyền phát âm thanh (việc này sẽ tự động xảy ra đối với những ứng dụng nhắm đến Android 12 (cấp độ API 31) trở lên). |
| T-Audio_Focus_Change | Audio_Focus_Change | Bắt đầu phát âm thanh. Bắt đầu phát âm thanh trong một ứng dụng khác. Ứng dụng của bạn phải phản hồi quyền phát âm thanh và dừng phát âm thanh hoặc giảm âm lượng phát. |
| T-Audio_Playback_Background | Audio_Playback_Background | Bắt đầu phát âm thanh. Tương tác với một ứng dụng không phải ứng dụng âm thanh khác dưới dạng ứng dụng trên nền trước. Ứng dụng này sẽ tiếp tục phát âm thanh ở chế độ nền và hiển thị một thông báo trên thanh trạng thái. Xác minh rằng bạn có thể quản lý chế độ phát bằng các nút điều khiển xuất hiện trong thông báo. Khoá màn hình thiết bị. Ứng dụng sẽ tiếp tục phát âm thanh ở chế độ nền và hiển thị một thông báo trên màn hình khoá. Xác minh rằng bạn có thể quản lý chế độ phát bằng các nút điều khiển xuất hiện trong thông báo. |
| T-Audio_Notification_Style | Audio_Notification_Style | Bắt đầu phát âm thanh. Tương tác với một ứng dụng không phải ứng dụng âm thanh khác ở chế độ ứng dụng trên nền trước. Xác minh rằng ứng dụng của bạn vẫn tiếp tục phát âm thanh ở chế độ nền và đã tạo một thông báo được định kiểu bằng MediaStyle. Xem phần Tương tác tốt với các nút điều khiển nội dung nghe nhìn. |
| T-Audio_Playback_Resume | Audio_Playback_Resume | Bắt đầu phát âm thanh. Tương tác với một ứng dụng không phải ứng dụng âm thanh khác dưới dạng ứng dụng trên nền trước. Tương tác với ứng dụng của bạn để đặt ứng dụng đó làm ứng dụng hàng đầu. Âm thanh sẽ tiếp tục phát hoặc âm lượng sẽ được khôi phục. Nếu không, ứng dụng sẽ cho người dùng biết rằng nội dung phát đang ở trạng thái tạm dừng. |
Video
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Video_PiP | Video_PiP | Kích hoạt chế độ phát video trong ứng dụng ở chế độ hình trong hình. |
| T-Video_Encoding | Video_Encoding | Xác minh rằng ứng dụng mã hoá video bằng tiêu chuẩn nén video HEVC. |
| T-Video_Playback_Background | Video_Playback_Background | Bắt đầu phát video. Thu nhỏ cửa sổ ứng dụng, mở một ứng dụng khác để chuyển cửa sổ ứng dụng đó vào chế độ nền. Trên các thiết bị có thể dùng ở chế độ máy tính, hãy di chuyển cửa sổ ứng dụng ra khỏi màn hình máy tính đang hiển thị. Xác minh rằng video tiếp tục phát mà không bị gián đoạn trong mọi trường hợp. |
Chia sẻ
| ID | Tính năng | Mô tả |
|---|---|---|
| T-System_Sharesheet | System_Sharesheet | Tạo một ý định và bắt đầu một hoạt động bằng cách gọi startActivity() với ý định làm đối số. Xem phần Sử dụng Trang chia sẻ nội dung trong Android. Ứng dụng của bạn phải hiển thị Trang chia sẻ nội dung trong Android. |
Dịch vụ nền
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Background_Service_Optimization | Background_Service_Optimization | Sử dụng tất cả các tính năng chính của ứng dụng. Xác minh rằng không có dịch vụ nền nào chạy trong thời gian dài được khởi động. Chuyển sang một ứng dụng khác để đưa ứng dụng của bạn vào chế độ nền. Chuyển đến phần Cài đặt rồi kiểm tra xem ứng dụng của bạn có chạy dịch vụ nào ở chế độ nền hay không. Trên Android 4.0 trở lên, hãy chuyển đến màn hình Ứng dụng rồi tìm ứng dụng đó trong thẻ Đang chạy. |
Hiệu suất và độ ổn định
Xác minh hiệu suất, độ ổn định và hình ảnh hoàn hảo đến từng pixel.
Hiệu suất
| ID | Tính năng | Mô tả |
|---|---|---|
| T-App_Startup_Time | App_Startup_Time | Khởi động ứng dụng. Xác minh rằng ứng dụng tải nhanh hoặc cung cấp chỉ báo tiến trình hoặc biểu tượng có chức năng tương tự nếu quá trình tải ứng dụng mất hơn 2 giây. |
| T-Rendering_Performance | Rendering_Performance | Sử dụng tất cả các tính năng chính của ứng dụng. Xác minh rằng ứng dụng hiển thị ít nhất 60 khung hình/giây. Sử dụng tuỳ chọn Lập hồ sơ kết xuất HWUI để giúp kiểm thử ứng dụng của bạn. |
| T-StrictMode_Compliance | StrictMode_Compliance |
Bật Hãy chú ý kỹ đến việc thu gom rác và tác động của việc này đến trải nghiệm người dùng. |
Độ ổn định
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Stability_ANR | Stability_ANR | Sử dụng tất cả các tính năng chính của ứng dụng. Xác minh rằng ứng dụng không gặp sự cố hoặc chặn luồng giao diện người dùng gây ra lỗi ANR (Android không phản hồi). Xem báo cáo trước khi ra mắt của Google Play để xác định các vấn đề tiềm ẩn về độ ổn định. |
SDK
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Android_Platform_Compatibility | Android_Platform_Compatibility | Chạy ứng dụng của bạn trên phiên bản công khai mới nhất của nền tảng Android. Sử dụng tất cả các tính năng chính. Xác minh rằng ứng dụng không gặp sự cố và chạy mà không bị mất chức năng cốt lõi. |
| T-Target_SDK_Version | Target_SDK_Version, Compile_SDK_Version |
Xem lại tệp kê khai Android và cấu hình bản dựng để đảm bảo ứng dụng được xây dựng dựa trên SDK mới nhất hiện có (targetSdk và compileSdk). |
| T-SDK_Maintenance | SDK_Maintenance | Xem lại tệp build.gradle của ứng dụng để tìm mọi phần phụ thuộc đã lỗi thời. |
| T-Non_SDK_Interfaces | Non_SDK_Interfaces | Sử dụng công cụ tìm lỗi mã nguồn của Android Studio để phát hiện việc sử dụng giao diện không phải SDK. Hãy xem Các hạn chế đối với giao diện không phải SDK để biết các phương pháp kiểm thử thay thế. |
| T-Production_Build_Quality | Production_Build_Quality | Kiểm tra tệp build.gradle của ứng dụng để tìm mọi thư viện gỡ lỗi có trong đó. |
Pin
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Power_Management | Power_Management |
Sử dụng tất cả các tính năng chính của ứng dụng ở chế độ Nghỉ và Chế độ chờ ứng dụng. Xác minh rằng chuông báo, bộ hẹn giờ, thông báo và hoạt động đồng bộ hoá hoạt động đúng cách trong thời gian bảo trì của Chế độ nghỉ và khi ứng dụng thoát khỏi Chế độ chờ ứng dụng. Kiểm thử hành vi ở chế độ Nghỉ và Chế độ chờ ứng dụng bằng các lệnh ADB (xem phần Kiểm thử với chế độ Nghỉ và Chế độ chờ ứng dụng để nắm được các yêu cầu và nguyên tắc). Để chẩn đoán tình trạng tiêu hao pin ngoài dự kiến, hãy dùng Trình phân tích năng lượng của Android Studio hoặc công cụ Battery Historian kết hợp với công việc theo kế hoạch ở chế độ nền. |
Quyền riêng tư và bảo mật
Kiểm thử các biện pháp bảo vệ quyền riêng tư và bảo mật mà người dùng mong đợi.
Quyền
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Minimize_Permissions | Giảm thiểu quyền | Xem lại mọi quyền mà ứng dụng của bạn yêu cầu, trong tệp kê khai, trong thời gian chạy và trong phần cài đặt ứng dụng trên thiết bị (Cài đặt > Thông tin ứng dụng). |
| T-Sensitive_Permissions | Sensitive_Permissions | Sử dụng mọi tính năng của ứng dụng yêu cầu quyền. Xác minh rằng ứng dụng chỉ yêu cầu cấp quyền truy cập vào dữ liệu hoặc dịch vụ nhạy cảm cho các trường hợp sử dụng chính của ứng dụng. Xác minh rằng bạn đã truyền đạt rõ ràng cho người dùng về những hệ quả của việc cấp quyền truy cập vào dữ liệu và dịch vụ nhạy cảm. |
| T-Runtime_Permissions | Runtime_Permissions | Sử dụng tất cả các tính năng của ứng dụng yêu cầu quyền. Xác minh rằng các quyền được yêu cầu một cách gián tiếp, tức là chỉ khi người dùng truy cập vào các tính năng, chứ không phải trong quá trình khởi động ứng dụng. |
| T-Permission_Rationale | Permission_Rationale | Sử dụng tất cả các tính năng của ứng dụng yêu cầu quyền. Xác minh rằng ứng dụng giải thích cho người dùng lý do cần có các quyền này. |
| T-Graceful_Degradation | Graceful_Degradation | Sử dụng tất cả các tính năng của ứng dụng yêu cầu quyền. Từ chối hoặc thu hồi các quyền. Xác minh rằng ứng dụng cung cấp một trường hợp sử dụng thay thế và vẫn hoạt động. |
Dữ liệu và tệp
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Sensitive_Data_Storage | Sensitive_Data_Storage | Xem xét tất cả dữ liệu được lưu trữ trong bộ nhớ trong. Xác minh rằng dữ liệu được lưu trữ bên ngoài không phải là dữ liệu nhạy cảm. |
| T-Sensitive_Data_Handling | Sensitive_Data_Storage | Xem xét cách xử lý dữ liệu được tải từ bộ nhớ ngoài. |
| T-Sensitive_Data_Logging | Sensitive_Data_Logging | Sử dụng tất cả các tính năng chính của ứng dụng trong khi giám sát nhật ký thiết bị. Xác minh rằng không có thông tin riêng tư nào của người dùng được ghi nhật ký. |
| T-Hardware_IDs | Hardware_IDs | Sử dụng tất cả các tính năng chính của ứng dụng. Xác minh để đảm bảo rằng ứng dụng không sử dụng bất kỳ mã nhận dạng phần cứng nào (chẳng hạn như mã IMEI) cho mục đích xác định danh tính. |
Danh tính
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Autofill_Hints | Autofill_Hints | Sử dụng tất cả các tính năng của ứng dụng yêu cầu hoạt động đầu vào của người dùng. Xác minh rằng ứng dụng đưa ra các gợi ý để tự động điền vào các trường nhập cho dữ liệu như thông tin xác thực tài khoản và thông tin nhạy cảm khác. |
| T-Credential_Manager | Credential_Manager | Đăng nhập vào ứng dụng của bạn. Xác minh rằng ứng dụng tích hợp Trình quản lý thông tin xác thực cho Android để có trải nghiệm đăng nhập hợp nhất khả năng hỗ trợ khoá truy cập, danh tính liên kết và mật khẩu. |
| T-Biometric_Authentication | Biometric_Authentication | Sử dụng tất cả các tính năng của ứng dụng yêu cầu xác thực. Xác minh rằng ứng dụng bảo vệ các giao dịch tài chính hoặc thông tin nhạy cảm (chẳng hạn như tài liệu quan trọng của người dùng) bằng xác thực bằng hệ thống nhận dạng sinh trắc học. |
Thành phần ứng dụng
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Component_Export | Component_Export | Xem lại tất cả thành phần ứng dụng được xác định trong tệp kê khai Android để kiểm tra trạng thái xuất thích hợp. Bạn phải đặt thuộc tính xuất cho tất cả thành phần một cách rõ ràng. |
| T-Component_Permissions | Component_Permissions | Xem lại mọi quyền mà ứng dụng của bạn yêu cầu, trong tệp kê khai, trong thời gian chạy và trong phần cài đặt ứng dụng trên thiết bị (Cài đặt > Thông tin ứng dụng). |
| T-Component_Protection | Component_Protection | Xem lại tất cả nhà cung cấp nội dung được xác định trong tệp kê khai Android. Hãy đảm bảo mỗi nhà cung cấp có một protectionLevel thích hợp. |
Mạng
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Network_Security_Traffic | Network_Security_Traffic | Khai báo một cấu hình bảo mật mạng vô hiệu hoá lưu lượng truy cập qua văn bản thô, sau đó kiểm thử ứng dụng. |
| T-Network_Security_Configuration | Network_Security_Configuration | Xem lại cấu hình bảo mật mạng của ứng dụng. Xác minh rằng không có yêu cầu kiểm tra tìm lỗi mã nguồn nào trên cấu hình không đạt. |
| T-Security_Provider_Initialization | Security_Provider_Initialization | Xác minh rằng trình cung cấp dịch vụ bảo mật được khởi động khi khởi động ứng dụng cho Dịch vụ Google Play. |
WebView
| ID | Tính năng | Mô tả |
|---|---|---|
| T-WebView_Asset_Loader | WebView_Asset_Loader | Xem lại cấu hình bảo mật mạng của ứng dụng. Xác minh rằng không có yêu cầu kiểm tra tìm lỗi mã nguồn nào trên cấu hình không đạt. |
| T-WebView_JavaScript | WebView_JavaScript | Đối với mỗi WebView, hãy chuyển đến một trang yêu cầu JavaScript. |
| T-WebView_Navigation | WebView_Asset_Loader, WebView_JavaScript |
Trong mỗi WebView, hãy cố gắng chuyển đến những trang web và nội dung mà ứng dụng của bạn không trực tiếp tải. |
Thực thi
| ID | Tính năng | Mô tả |
|---|---|---|
| T-App_Bundles | App_Bundles | Xác minh rằng ứng dụng sử dụng Android App Bundle và không tải động mã từ bên ngoài tệp APK của ứng dụng. |
Mật mã học
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Cryptographic_Algorithms | Cryptographic_Algorithms | Xác minh rằng ứng dụng sử dụng thuật toán mật mã học mạnh và do nền tảng cung cấp cùng với một trình tạo số ngẫu nhiên. Ngoài ra, hãy xác minh rằng ứng dụng không triển khai thuật toán tuỳ chỉnh. |
Google Play
Xác minh rằng ứng dụng của bạn đã sẵn sàng cho Google Play.
Chính sách
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Play_Content_Policies | Play_Content_Policies, Play_Content_Rating, Play_User_Reviews |
Đăng nhập vào Google Play Console để xem lại hồ sơ nhà phát triển, nội dung mô tả ứng dụng, ảnh chụp màn hình, ảnh đầu trang, mức phân loại nội dung và ý kiến phản hồi của người dùng. |
Trang chi tiết ứng dụng
| ID | Tính năng | Mô tả |
|---|---|---|
| T-Play_Feature_Graphic | Play_Feature_Graphic | Tải ảnh đầu trang và ảnh chụp màn hình xuống, sau đó giảm kích thước cho phù hợp với kích thước màn hình trên những thiết bị và kiểu dáng mà bạn nhắm đến. |
| T-Play_Graphic_Assets | Play_Feature_Graphic, Play_Device_References, Play_Misleading_Content |
Xem lại tất cả thành phần đồ hoạ, nội dung đa phương tiện, văn bản, thư viện mã và nội dung khác được đóng gói trong ứng dụng hoặc tệp mở rộng. |
Lưu trữ
Các phiên bản trước của Nguyên tắc về chất lượng cốt lõi của ứng dụng: