sự thành công lâu dài của ứng dụng về số lượt cài đặt và bài đánh giá của người dùng, mức độ tương tác và khả năng giữ chân người dùng.
Để 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ư chế độ chia đôi màn hình và chế độ cửa sổ trên máy tính cho phép các ứ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
Ứng dụng của bạn phải cung cấp mẫu tương tác và thiết kế hình ảnh tiêu chuẩn trên Android để mang lại 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.
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Tính khả dụng | ||
| Khả năng sử dụng:UX | T-Usability:Core, 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. |
| Khả năng hữu dụng:Trình chuyển đổi | T-Usability: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. |
| Khả năng hữu dụng:Giấc ngủ | T-Usability:Sleep, T-SD-Card |
Khi là ứng dụng chạy ở 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. |
| Khả năng sử dụng:Khoá | T-Usability:Lock, T-SD-Card |
Khi là ứng dụng ở 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 | ||
| Giao diện người dùng:Tương đồng | T-UI: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. |
| Giao diện người dùng:Toàn màn hình | T-UI: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. |
| Giao diện người dùng:Hiệu ứng chuyển cảnh | T-UI: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 | ||
| Hình ảnh:Hiển thị | T-Visual:Display |
Ứng dụng hiển thị đồ hoạ, văn bản, hình ảnh và các thành phần khác trên giao diện người dùng mà không bị méo, mờ hay vỡ hình.
|
| Hình ảnh:Tính dễ đọc | T-Visual:Readability | Ứ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. |
| Hình ảnh:Chủ đề | T-Visual:Themes | 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 | ||
| Nav:BackButton | T-Nav:Back | Ứ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. |
| Nav:BackGesture | T-Nav:Back | Ứng dụng hỗ trợ thao tác bằng cử chỉ để quay lại và chuyển đến màn hình chính. |
| Nav:State | T-Nav:State, T-Nav:Back |
Ứ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 | ||
| Thông báo:Thông tin | T-Notify:Info |
Thông báo cung cấp thông tin có liên quan đến ứng dụng của bạn.
|
| Thông báo:Nhắn tin | T-Notify:Info |
Đố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 | ||
| Mục tiêu truy cập | T-Access:Targets | Đí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. |
| Access:Contrast | T-Access: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. |
| Mức truy cập:Nội dung mô tả | T-Access:Description | Sử dụng contentDescription để mô tả từng thành phần 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.
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Âm thanh | ||
| Audio:Init | T-Audio:Init |
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:
|
| Âm thanh:Lấy nét | T-Audio:Focus | Ứ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. |
| Âm thanh:Ngắt | T-Audio:Interrupt | Ứ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. |
| Âm thanh:Nền | T-Audio:Background | Ứng dụng phải hỗ trợ chế độ phát trong nền. |
| Âm thanh:Thông báo | T-Audio:Notification | 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. |
| Âm thanh:Tiếp tục | T-Audio: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 | ||
| 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:Mã hoá | 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. |
| Chia sẻ | ||
| Chia sẻ:Trang tính | T-Sharing:Sheet | 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 | ||
| Nền:Dịch vụ | T-Background:Services |
Ứ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.
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Hiệu suất | ||
| Hiệu suất:Khởi động | T- Performance:Startup | Ứ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. |
| Hiệu suất:Khung hình trên giây | T-Performance:FPS | Ứ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. |
| Hiệu suất:Nghiêm ngặt | T-Performance:Strict | 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 | ||
| Độ ổn định: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 | ||
| SDK:Nền tảng | T-SDK:Platform | Ứ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. |
| SDK:Target | T-SDK:Mới nhất | Ứ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. |
| SDK:Biên dịch | T-SDK:Mới nhất | Ứ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:3P | T-SDK:3P, T-SDK:Non |
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ị. |
| SDK:Không | T-SDK:Không | Ứng dụng không sử dụng giao diện không phải SDK. |
| SDK:Gỡ lỗi | T-SDK:Debug | Ứ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 | ||
| Pin:Quản lý | T-Battery:Manage (T-Battery: Quản lý) |
Ứ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.
| ID | Kiểm thử | Mô tả |
|---|---|---|
| Quyền | ||
| Quyền:Tối thiểu | T-Permissions:Min | Ứ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. |
| Quyền:Nhạy cảm | T-Permissions:Sensitive |
Ứ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. |
| Quyền:Thời gian chạy | T-Permissions:Runtime | Ứ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. |
| Quyền:Giải thích | T-Permissions:Explain | Ứng dụng giải thích rõ ràng lý do cần có quyền. |
| Quyền:Giảm cấp | T-Permissions:Degrade | Ứ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 | ||
| Dữ liệu:Nhạy cảm | T-Data:Sensitive, T-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. |
| Dữ liệu:Nhật ký | T-Data:Log | 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. |
| Dữ liệu:Mã nhận dạng | T-Data: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 | ||
| Danh tính:Gợi ý | T-Identity: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. |
| Danh tính:CredMan | T-Identity:CredMan | Ứ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 khả năng hỗ trợ khoá truy cập, danh tính liên kết và mật khẩu. |
| Danh tính:Tiểu sử | T-Identity:Bio | Ứ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 | ||
| Thành phần:Xuất | T-Components: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. |
| Thành phần:Quyền | T-Components:Permissions |
Mọi ý định và thông báo đều tuân theo các phương pháp hay nhất:
|
| Thành phần:Bảo vệ | T-Components: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 | ||
| Mạng:Lưu lượng truy cập | T-Network:Traffic | Tất cả lưu lượng truy cập mạng đều được gửi qua SSL. |
| Network:Config | T-Network:Config | Ứng dụng khai báo một cấu hình bảo mật mạng. |
| Mạng:Play | T-Network:Play | 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 | ||
| WebView:Config | T-WebViews:Config, T-WebViews:Nav |
Đừ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-WebViews:JavaScript, T-WebViews:Nav |
Khung hiển thị web không sử dụng Trên Android 6.0 (API cấp 23 trở lên), hãy chuyển sang sử dụng kênh thông báo HTML. |
| Thực thi | ||
| Thực thi:Gói | T-Execution: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 | ||
| Tiền mã hoá:Thuật toán | T-Crypto:Algorithms | Ứng dụng sử dụng chuỗi, thuật toán mật mã học do nền tảng cung cấp và 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.
| ID | Kiểm thử | Mô tả | |
|---|---|---|---|
| Chính sách | |||
| Play:Policies | T-Play: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:Maturity | T-Play: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 thông tin chi tiết về ứng dụng | |||
| Play:Đồ hoạ | T-Play:Graphics, T-Play: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 hỗ trợ này. Đảm bảo rằng:
|
|
| Play:NonAndroid | T-Play: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:Gây hiểu lầm | T-Play: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 | |||
| Play:Bugs | T-Play: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 kiểm thử
Thiết lập môi trường kiểm thử 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ị ảo Android)
- 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 kiểm thử 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, bạn nên luôn kiểm thử 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
| ID | Tính năng | Mô tả |
|---|---|---|
| Tính khả dụng | ||
| T-Usability:Core | Khả năng hữu dụng: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-Usability:Switcher | Khả năng hữu dụng:Trình chuyển đổi | 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-Usability:Sleep | Khả năng hữu dụng:Ngủ | 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-Usability:Lock | Khả năng hữu dụng:Khoá | 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 | ||
| T-SD-Card | Khả năng hữu dụng: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 | ||
| T-UI:Transitions | Giao diện người dùng:Tương đồng, Giao diện người dùng:Toàn màn hình, Giao diện người dùng:Chuyển đổi |
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 | ||
| T-Visual:Display | Hình ảnh:Hiển thị | 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 thành phần khác trên giao diện người dùng đều không bị méo, mờ hoặc vỡ hình. |
| T-Visual:Readability | Hình ảnh:Khả năng đọc |
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-Visual:Themes | Hình ảnh:Chủ đề | 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 | ||
| T-Nav:Back | Nav:BackButton, Nav:BackGesture |
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-Nav:State | Nav:State | 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 thao tác 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 | ||
| T-Notify:Info | Notify:Info, Notify:Messaging |
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 | ||
| T-Access:Targets | Quyền truy cập:Mục tiêu | 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-Access:Contrast | Khả năng tiếp cận:Độ tương phản | Xác minh độ tương phản của tất cả các phần tử trực quan. |
| T-Access:Description | Quyền truy cập:Nội dung mô tả | 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
| ID | Tính năng | Mô tả |
|---|---|---|
| Âm thanh | ||
| T-Audio:Init | Audio:Init | 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 | Âm thanh:Lấy nét | Bắt đầu phát âm thanh. Ứng dụng phải yêu cầu 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 lấy tiêu điểm â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 (API cấp 31) trở lên). |
| T-Audio:Interrupt | Âm thanh:Ngắt | 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 sự thay đổi về quyền phát âm thanh và dừng phát âm thanh hoặc giảm âm lượng phát. |
| T-Audio:Background | Âm thanh:Nền | 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 phải tiếp tục phát âm thanh ở chế độ nền. |
| T-Audio:Notification | Âm thanh:Thông báo | 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 ở 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:Resume | Âm thanh:Tiếp tục | 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. |
| T-Video:PiP | Video:Chế độ hình trong hình | Kích hoạt chế độ phát video trong ứng dụng ở chế độ hình trong hình. |
| T-Video:Encoding | Video:Mã hoá | Xác minh rằng ứng dụng mã hoá video bằng tiêu chuẩn nén video HEVC. |
| Chia sẻ | ||
| Chia sẻ:Trang tính | 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 | ||
| CR-6 | Thông tin cơ bản:Dịch vụ | 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
| ID | Tính năng | Mô tả |
|---|---|---|
| Hiệu suất | ||
| T- Performance:Startup | Hiệu suất:Khởi động | 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-Performance:FPS | Hiệu suất:Khung hình/giây | 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 mỗi 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-Performance:Strict | Hiệu suất:Nghiêm ngặt |
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 | ||
| T-Stability:ANR | Độ ổn định: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 | ||
| T-SDK:Nền tảng | SDK:Nền tảng | 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-SDK:Mới nhất | SDK:Target, SDK:Compile |
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:3P | SDK:3P | 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-SDK:Không | SDK:Non | 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-SDK:Debug | SDK:Debug | Kiểm tra tệp build.gradle của ứng dụng để xem có thư viện gỡ lỗi nào được đưa vào hay không. |
| Pin | ||
| T-Battery:Manage | Pin:Quản lý |
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 cửa sổ 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 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
| ID | Tính năng | Mô tả |
|---|---|---|
| Quyền | ||
| T-Permissions:Min | Quyền:Tối thiểu | 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-Permissions:Sensitive | Quyền:Nhạy cảm | 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-Permissions:Runtime | Quyền:Thời gian chạy | 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-Permissions:Explain | Quyền:Giải thích | 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-Permissions:Degrade | Quyền:Giảm cấp | 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 | ||
| T-Data:Sensitive | Dữ liệu:Nhạy cảm | 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-Data:Handling | Dữ liệu:Nhạy cảm | Xem xét cách xử lý dữ liệu được tải từ bộ nhớ ngoài. |
| T-Data:Log | Dữ liệu:Nhật ký | 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-Data:IDs | Dữ liệu:Mã nhận dạng | 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 | ||
| T-Identity:Hints | Identity:Hints | Sử dụng tất cả các tính năng của ứng dụng yêu cầu người dùng nhập dữ liệu. 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-Identity:CredMan | Danh tính:CredMan | Đă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-Identity:Bio | Nhận dạng:Thông tin tiểu sử | 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 | ||
| T-Components:Export | Thành phần:Xuất | 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-Components:Permissions | Thành phần: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-Components:Protection | Thành phần:Bảo vệ | 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 | ||
| T-Network:Traffic | Mạng:Lưu lượng truy cập | 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:Config | Mạng:Config | 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-Network:Play | Mạng:Play | 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 | ||
| T-WebViews:Config | WebViews:Config | 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-WebViews:JavaScript | WebView:JavaScript | Đối với mỗi WebView, hãy chuyển đến một trang yêu cầu JavaScript. |
| T-WebViews:Nav | WebViews:Config, WebViews: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 | ||
| T-Execution:Bundles | Thực thi:Gói | 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 | ||
| T-Crypto:Algorithms | Crypto: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
| ID | Tính năng | Mô tả |
|---|---|---|
| Chính sách | ||
| T-Play:Policies | Play:Policies, Play:Maturity, Play:Bugs |
Đă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 thông tin chi tiết về ứng dụng | ||
| T-Play:Graphics | Play:Graphics | 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:Assets | Play:Graphics, Play:NonAndroid, Play:Misleading |
Xem lại tất cả nội dung đồ 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 tải xuống mở rộng. |
Lưu trữ
Các phiên bản trước của nguyên tắc cốt lõi về chất lượng ứng dụng: