Nguyên tắc về chất lượng cốt lõi của ứng dụng

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.

  • Ứng dụng sử dụng vectơ vẽ được nếu có thể
  • Ứng dụng sử dụng đồ hoạ chất lượng cao cho tất cả kích thước màn hình và kiểu dáng thiết bị mục tiêu
  • Không bị răng cưa ở các cạnh của trình đơn, nút và các thành phần giao diện người dùng khác
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
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.
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.
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.

  • Khi ứng dụng được tiếp tục qua trình chuyển đổi ứng dụng Gần đây, ứng dụng sẽ đưa người dùng trở về đúng trạng thái sử dụng gần nhất.
  • Khi được tiếp tục sau khi thiết bị thoát khỏi trạng thái ngủ (khoá), ứng dụng sẽ đưa người dùng trở về đúng trạng thái sử dụng gần nhất.
  • Khi được chạy lại qua Màn hình chính hoặc màn hình Tất cả ứng dụng, ứng dụng sẽ thực hiện một trong những thao tác sau, tuỳ thuộc vào khoảng thời gian kể từ lần sử dụng gần nhất:
    • Nếu ứng dụng chỉ mới vừa được sử dụng một thời gian ngắn trước đó (vài phút), hãy khôi phục trạng thái ứng dụng về càng gần trạng thái trước đó càng tốt.
    • Nếu đã qua một thời gian dài kể từ lần gần nhất dụng được ứng dụng, hãy cố gắng khôi phục ứng dụng về càng gần trạng thái trước đó càng tốt hoặc khởi động lại ứng dụng qua màn hình chính hoặc trạng thái mặc định khác.
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.

  • Bạn không được dùng thông báo để quảng cáo chéo hoặc quảng cáo một sản phẩm khác, vì Cửa hàng Play nghiêm cấm việc này.
  • Thay vì phân phát tất cả thông báo qua một kênh, hãy xác định kênh thông báo theo các phương pháp hay nhất.
  • Chọn đúng mức độ ưu tiên của thông báo.
  • Xếp chồng nhiều thông báo vào một nhóm thông báo (khi có thể).
  • Thiết lập thời gian chờ cho thông báo khi thích hợp.
  • Thông báo chỉ xuất hiện liên tục nếu có liên quan đến các sự kiện đang tiếp diễn, chẳng hạn như phát nhạc hoặc cuộc gọi điện thoại. Để biết thêm thông tin, hãy xem phần Chức năng.
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:

  • 3:1 đối với văn bản và đồ hoạ lớn
  • 4,5:1 đối với văn bản nhỏ (nhỏ hơn 18 pt hoặc nhỏ hơn 14 pt nếu văn bản được in đậm)

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:

  • Bắt đầu phát âm thanh
  • Cung cấp chỉ báo trực quan cho biết dữ liệu âm thanh đang được chuẩn bị
Â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:

  • Duy trì kết nối mạng để nhận thông báo
  • Duy trì kết nối Bluetooth
  • Luôn bật GPS

Để 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 android:exported cho tất cả hoạt động, dịch vụ, broadcast receiver và đặc biệt là các nhà cung cấp nội dung.

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 android:protectionLevel="signature" cho các quyền tuỳ chỉnh. Trong đó có hoạt động, dịch vụ, broadcast receiver và đặc biệt là nhà cung cấp nội dung.

Ứ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 addJavaScriptInterface() với nội dung không đáng tin cậy.

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 DeliveryPlay 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:

  • Trang thông tin ứng dụng có ảnh đầu trang chất lượng cao
  • Ảnh đầu trang không chứa hình ảnh thiết bị, ảnh chụp màn hình hoặc văn bản cỡ nhỏ (không đọc được khi được thu nhỏ và trình bày trên kích thước màn hình nhỏ nhất mà ứng dụng nhắm đến)
  • Ảnh đầu trang không được giống quảng cáo
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:
  • Nếu ứng dụng cho phép chỉnh sửa hoặc tạo nội dung, chơi trò chơi hoặc phát nội dung đa phương tiện, hãy nhớ kiểm thử các luồng đó.
  • Trong khi kiểm thử ứng dụng, hãy đưa vào các yếu tố gián đoạn từ ứng dụng khác, chẳng hạn như nhận thông báo hoặc cuộc gọi điện thoại; đồng thời áp dụng các thay đổi tạm thời cho các thuộc tính của thiết bị, chẳng hạn như kết nối mạng, chức năng pin, khả năng sử dụng GPS và tải hệ thống.
  • Nhập và kiểm thử tất cả các quy trình mua hàng trong ứng dụng
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:
  • Cung cấp chức năng tương đương ở mọi hướng hiển thị và trạng thái gập
  • Lấp đầy cửa sổ ứng dụng ở mọi hướng màn hình và trạng thái gập, đồng thời không có dạng hòm thư
  • Duy trì trạng thái và không gặp vấn đề về kết xuất trong quá trình chuyển đổi nhanh giữa các hướng cũng như thao tác gập và mở thiết bị
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:
  • Có thể kết hợp được các thành phần ở mọi kiểu dáng thiết bị được hỗ trợ
  • Không có chữ cái hoặc từ ngữ nào bị cắt bỏ
  • Không thấy từ nào bị bao bọc không hợp lệ trong các nút hoặc biểu tượng
  • Có đủ khoảng cách giữa văn bản và các thành phần xung quanh
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 StrictMode trong ứng dụng của bạn và sử dụng tất cả các tính năng chính. Xác minh rằng ứng dụng không tạo ra bất kỳ StrictMode cảnh báo hiệu suất nào; tức là không có cảnh báo nhấp nháy màu đỏ nào xuất hiện khi kiểm thử ứng dụng. Cảnh báo nhấp nháy màu đỏ cho biết hành vi xấu liên quan đến bộ nhớ, quyền truy cập mạng hoặc việc quản lý bộ nhớ (chẳng hạn như sự cố rò rỉ bộ nhớ).

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ó (targetSdkcompileSdk).
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: