Pour juger de l'excellence d'une appli, vous pouvez passer en revue les différentes procédures réalisables dans votre appli afin d'évaluer la fluidité et la sécurité de l'expérience utilisateur.
Cette checklist définit un ensemble de critères de qualité fondamentaux ainsi que les tests correspondants pour vous aider à évaluer la qualité de votre appli. Il est facile de passer à côté de certains critères, et ces tests vous aident à ne pas les oublier dans vos programmes de test.
La checklist met en évidence le niveau de qualité minimal que toutes les applis doivent respecter. Il est fort probable que vos tests soient bien plus poussés.
Chaque élément de la checklist de qualité est associé à un identifiant unique qui peut vous être utile pour communiquer avec votre équipe. Vous pouvez également consulter la version précédente de ces consignes.
Expérience visuelle
Les modèles de conception graphique et d'interaction de votre appli doivent respecter les standards d'Android, pour une expérience utilisateur cohérente et intuitive.
Domaine | ID | Tests | Description |
---|---|---|---|
Navigation | VX-N1 | CR-3 | L'appli est compatible avec la navigation standard via le bouton Retour et n'affiche pas de commande personnalisée servant de bouton de retour. |
VX-N2 | CR-3 | L'appli est compatible avec la navigation par gestes pour accéder et revenir à l'écran d'accueil. | |
VX-N3 | CR-1 CR-3 CR-5 |
L'appli conserve et restaure correctement l'état de l'utilisateur ou son propre état. Elle préserve l'état de l'utilisateur ou son propre état lorsqu'elle quitte le premier plan, et empêche la perte accidentelle de données en cas de retour en arrière ou d'un autre changement d'état. Lors du retour au premier plan, l'appli doit restaurer l'état préservé et les éventuelles transactions avec état qui étaient en attente. Exemples : modifications effectuées dans des champs modifiables, progression dans un jeu, menus, vidéos et autres sections de l'appli ou du jeu.
|
|
Notifications | VX-S1 | CR-9 | Les notifications respectent les consignes du Material Design. En particulier :
|
VX-S2 | CR-9 | Pour les applis de chat, les applis de réseau social et les conversations :
| |
UI et graphismes | VX-U1 | CR-5 | L'appli est compatible avec les modes paysage et portrait (si possible) et le pliage/dépliage des appareils.
L'appli offre globalement les mêmes fonctionnalités et les mêmes actions quelle que soit l'orientation, et préserve la parité fonctionnelle entre les orientations. De petits changements de contenu ou d'affichage sont tolérés. |
VX-U2 | CR-5 | L'appli utilise la totalité de l'écran dans les deux orientations et n'utilise pas le format letterbox en cas de changement d'orientation, y compris lors du pliage et du dépliage des appareils.
En cas de légère variation de la géométrie de l'écran, l'utilisation du format letterbox sur une toute petite zone est tolérée. |
|
VX-U3 | CR-5 | L'appli gère correctement les transitions rapides entre les différentes orientations de l'écran et le pliage/dépliage des appareils, sans problèmes d'affichage ni perte d'état. | |
Qualité visuelle | VX-V1 | CR-all | L'appli affiche les graphismes, textes, images et autres éléments de l'interface utilisateur sans distorsion, flou ni pixélisation notable.
|
VX-V2 | CR-all | L'appli affiche le texte et les blocs de texte de manière acceptable dans chacune des langues compatibles.
|
|
VX-V3 | CR-all | Le contenu de l'appli et tous les contenus Web auxquels elle fait référence sont compatibles avec le thème sombre. | |
Accessibilité | VX-A1 | CR-all | Les zones cibles tactiles doivent faire au moins 48 dp. En savoir plus |
VX-A2 | CR-all | Le texte et les contenus de premier plan de l'appli doivent être suffisamment contrastés par rapport à l'arrière-plan :
|
|
VX-A3 | CR-all | Décrivez chaque élément d'interface utilisateur sauf TextView , avec contentDescription . |
Fonctionnalité
Votre appli doit implémenter le comportement fonctionnel attendu.
Domaine | ID | Tests | Description |
---|---|---|---|
Son | FN-A1 | CR-1 CR-8 |
Le son est réactivé lorsque l'appli revient au premier plan, sinon l'appli indique à l'utilisateur que la lecture est en pause. |
FN-A2 | CR-1 CR-2 CR-8 |
Si la lecture audio est une fonctionnalité essentielle, l'appli doit gérer la lecture en arrière-plan. | |
FN-A3 | CR-0 | Lorsque l'utilisateur lance la lecture audio, l'appli doit effectuer l'une des opérations suivantes dans un délai d'une seconde :
|
|
FN-A4 | CR-0 | L'appli doit demander la priorité audio quand la lecture audio commence, et abandonner la priorité audio quand la lecture s'arrête. | |
FN-A5 | CR-0 | L'appli doit savoir gérer les demandes de priorité audio provenant d'autres applis. Par exemple, elle peut baisser le volume de lecture lorsqu'une autre appli lit un contenu vocal. | |
Multimédia | FN-M1 | CR-0 CR-6 CR-8 |
Si l'appli lit un contenu audio en arrière-plan, elle doit créer une notification stylisée avec MediaStyle. |
FN-M2 | CR-0 | Si l'appli lit de la vidéo, elle doit gérer la lecture Picture-in-picture. | |
FN-M3 | CR-0 | Si l'appli encode de la vidéo, elle doit utiliser la norme de compression vidéo HEVC. | |
Partage | FN-S1 | CR-0 | L'appli doit utiliser Android Sharesheet pour partager des contenus. Elle peut suggérer des cibles qui ne sont pas disponibles pour les solutions personnalisées. |
Service d'arrière-plan | FN-B1 | CR-6 | L'appli évite d'exécuter des services inutilement longs en arrière-plan. Pour assurer la fluidité de l'appareil de l'utilisateur, le système applique différentes restrictions aux services d'arrière-plan. Les pratiques suivantes sont considérées comme des usages incorrects des services d'arrière-plan :
Découvrez comment choisir la solution adaptée à votre travail. |
Performances et stabilité
Votre appli doit répondre aux attentes des utilisateurs sur le plan des performances, de la stabilité, de la compatibilité et de la réactivité.
Domaine | ID | Tests | Description |
---|---|---|---|
Stabilité | PS-S1 | CR-all SD-1 |
L'appli ne plante pas et ne bloque pas le thread UI, ce qui entraînerait des erreurs ANR (Android Not Responding). Utilisez le rapport pré-lancement de Google Play pour identifier les problèmes de stabilité potentiels. Après le déploiement, pensez à consulter la page Android Vitals dans la Google Play Console. |
Performances | PS-P1 | CR-all SD-1 |
L'appli se charge rapidement, ou affiche un indicateur de progression ou un autre signal similaire si le chargement prend plus de deux secondes. |
PS-P2 | CR-all SD-1 |
Les applis doivent effectuer un rendu des images toutes les 16 ms pour atteindre 60 images par seconde. Les développeurs peuvent utiliser l'option Rendu HWUI du profil lors des tests. En cas de problème, des outils sont à votre disposition pour diagnostiquer les lenteurs d'affichage. | |
PS-P3 | PM-1 | Si StrictMode est activé (consultez ci-dessous Tests avec StrictMode), aucun clignotement rouge (avertissement StrictMode lié aux performances) n'est visible lorsque vous testez l'appli. Les clignotements rouges signalent les comportements insatisfaisants concernant le stockage, l'accès au réseau ou les fuites de mémoire. | |
SDK | PS-T1 | CR-0 | L'appli s'exécute sur la dernière version publique de la plate-forme Android sans planter ni nuire gravement aux fonctionnalités de base. |
PS-T2 | SP-1 | L'appli cible le dernier SDK Android nécessaire pour répondre aux exigences de Google Play, en définissant la valeur targetSdk . |
|
PS-T3 | SP-1 | L'appli est conçue avec le dernier SDK Android en définissant la valeur compileSdk . |
|
PS-T4 | SP-2 SP-3 |
Tous les SDK Google ou tiers utilisés sont à jour. Toutes les améliorations apportées à ces SDK, par exemple pour la stabilité, la compatibilité ou la sécurité, doivent être disponibles rapidement pour les utilisateurs.
Pour les SDK Google, envisagez d'utiliser des SDK fournis par les services Google Play, s'ils sont disponibles. Ces SDK sont rétrocompatibles, reçoivent des mises à jour automatiques, réduisent la taille de votre package d'appli et utilisent efficacement les ressources sur l'appareil. Le développeur est responsable de l'ensemble du codebase de l'appli, y compris des éventuels SDK tiers utilisés. |
|
PS-T5 | SP-3 | L'appli n'utilise pas d'interfaces autres que les SDK. | |
PS-T6 | SP-2 | Aucune bibliothèque de débogage n'est incluse dans l'appli de production, car cela pourrait entraîner des problèmes de performances et de sécurité. | |
Batterie | PS-B1 | BA-1 | L'appli gère correctement les fonctionnalités de gestion de l'alimentation introduites dans Android 6.0 (Sommeil et Mise en veille des applis). Dans le cas où la gestion de l'alimentation perturbe les fonctionnalités de base, seules les applis qualifiées peuvent demander une exception. Consultez Prise en charge d'autres scénarios d'utilisation dans Sommeil et Mise en veille des applis.
Pendant le développement, les développeurs peuvent tester le comportement des fonctionnalités Mise en veille des applis et Sommeil à l'aide de ces commandes ADB. En ce qui concerne l'utilisation de la batterie, les développeurs peuvent utiliser le profileur d'énergie d'Android Studio ou l'outil Battery Historian ainsi que des tâches programmées en arrière-plan afin de diagnostiquer une utilisation inattendue de la batterie. |
Confidentialité et sécurité
Votre appli doit traiter les données utilisateur et les informations personnelles de manière sécurisée, avec le niveau d'autorisation approprié.
En plus de cette checklist, les applis publiées sur le Google Play Store doivent également respecter les Règles sur les données utilisateur afin de protéger la confidentialité des utilisateurs.
Domaine | ID | Tests | Description |
---|---|---|---|
Autorisations | SC-P1 | SC-4 | L'appli ne demande que le nombre minimum absolu d'autorisations dont elle a besoin pour prendre en charge son scénario d'utilisation. Pour certaines autorisations comme la position, utilisez si possible la position approximative plutôt que la position précise. |
SC-P2 |
L'appli ne demande l'autorisation d'accéder à des données sensibles (SMS, journal d'appels ou position, par exemple) ou à des services payants (comme Téléphone ou SMS) que lorsque ces données ou services sont directement liés à ses principaux scénarios d'utilisation. Les implications liées à ces autorisations doivent être communiquées de façon visible à l'utilisateur. Selon la façon dont vous utilisez les autorisations, il existe une autre manière de traiter le scénario d'utilisation de votre appli sans devoir accéder à des informations sensibles. Par exemple, plutôt que de demander des autorisations liées aux contacts d'un utilisateur, il peut être plus judicieux de demander l'accès en utilisant un intent implicite. |
||
SC-P3 | CR-0 | L'appli demande des autorisations d'exécution en contexte, c'est-à-dire quand la fonctionnalité est demandée plutôt qu'au démarrage de l'appli. | |
SC-P4 | CR-0 | L'appli indique clairement pourquoi certaines autorisations sont nécessaires ou suit la procédure recommandée pour expliquer pourquoi l'autorisation est nécessaire. |
|
SC-P5 | CR-0 | L'appli doit effectuer une dégradation élégante si les utilisateurs refusent ou révoquent une autorisation. L'appli ne doit pas bloquer l'accès à l'utilisateur. | |
Données et fichiers | SC-DF1 | SC-1 | Toutes les données sensibles sont stockées dans la mémoire de stockage interne de l'appli. |
SC-DF2 | SC-10 | Aucune donnée utilisateur personnelle ou sensible n'est enregistrée dans le journal système ou dans un journal propre à l'appli. | |
SC-DF3 | L'appli n'utilise aucun identifiant de matériel non réinitialisable (code IMEI, par exemple), à des fins d'identification. | ||
Identité | SC-ID1 | CR-0 | L'appli fournit des suggestions de saisie automatique pour les identifiants de compte et d'autres informations sensibles (informations de carte de crédit, adresses physiques, numéros de téléphone, etc.). |
SC-ID2 | CR-0 | Pour faciliter la connexion au compte, intégrez One Tap pour Android. | |
SC-ID3 | CR-0 | L'appli accepte l'authentification biométrique pour protéger les transactions financières ou les informations sensibles (documents importants de l'utilisateur, par exemple). | |
Composants de l'appli | SC-AC1 | SC-5 |
L'appli définit le paramètre Seuls les composants d'appli qui partagent des données avec d'autres applis ou qui doivent être appelés par d'autres applis sont exportés. |
SC-AC2 | CR-0 SC-4 |
L'ensemble des intents et des diffusions respectent les bonnes pratiques :
|
|
SC-AC3 | SC-3 | Tous les composants qui partagent des contenus entre vos applis utilisent android:protectionLevel="signature" pour les autorisations personnalisées. C'est le cas pour les activités, les services, les broadcast receivers et en particulier pour les fournisseurs de contenu.
Les applis ne doivent pas dépendre de l'accès à une liste de packages installés. L'accès est limité depuis Android 11. |
|
Réseau | SC-N1 | SC-9 | Le trafic réseau est intégralement envoyé via le protocole SSL. |
SC-N2 | SC-6 | L'appli déclare une configuration de sécurité réseau. | |
SC-N3 | Si l'appli utilise les services Google Play, le fournisseur de sécurité est initialisé quand elle démarre. | ||
WebViews | SC-W1 | SC-6 | N'utilisez pas setAllowUniversalAccessFromFileURLs() pour accéder au contenu local. Utilisez plutôt WebViewAssetLoader. |
SC-W2 | SC-7 | Les WebViews ne doivent pas utiliser addJavaScriptInterface() avec du contenu non approuvé.
Sur Android 6.0 et versions ultérieures, utilisez plutôt les canaux de message HTML. |
|
Exécution | SC-E1 | L'appli ne charge pas dynamiquement du code extérieur à son APK. Les développeurs doivent utiliser le format Android App Bundle, qui inclut Play Feature Delivery et Play Asset Delivery.
Depuis août 2021, l'utilisation d'Android App Bundle est obligatoire pour toutes les nouvelles applis du Google Play Store. |
|
Cryptographie | SC-C1 | L'appli utilise de puissants algorithmes cryptographiques fournis par la plate-forme et un générateur de nombres aléatoires. Elle n'implémente pas d'algorithmes personnalisés. |
Google Play
Vérifiez que vos applis peuvent être publiées sur Google Play.
Domaine | ID | Tests | Description |
---|---|---|---|
Règles | GP-P1 | GP-all | L'appli respecte à la lettre le Règlement relatif au contenu Google Play pour les développeurs. Elle ne propose pas de contenus inappropriés, et elle n'utilise pas la propriété intellectuelle ni la marque d'autres personnes, etc. |
GP-P2 | GP-1 | La classification d'âge de l'appli est adéquate, en fonction des Consignes de classification du contenu. | |
Page d'informations sur l'appli | GP-D1 | GP-1 GP-2 |
L'image de présentation de l'appli respecte les consignes décrites dans cet article d'aide. Faites les vérifications suivantes :
|
GP-D2 | GP-1 | Les captures d'écran et vidéos de l'appli ne montrent et ne mentionnent pas d'appareils autres que des appareils Android. | |
GP-D3 | GP-1 | Les captures d'écran ou vidéos de l'appli ne représentent pas ses contenus ni son expérience utilisateur de manière trompeuse. | |
Assistance utilisateur | GP-X1 | GP-1 | Les bugs courants signalés par les utilisateurs dans l'onglet "Avis" de la page Google Play sont résolus s'ils sont reproductibles et surviennent sur de nombreux appareils différents. Si un bug ne survient que sur quelques appareils, vous devez quand même le résoudre si ces appareils sont particulièrement populaires ou récents. |
Configurer un environnement de test
Afin de configurer un environnement de test pour cette checklist, nous vous recommandons de suivre ces conseils :
- Concentrez-vous sur les tests avec un émulateur : Android Emulator est un excellent moyen pour tester votre appli sous différentes versions d'Android et résolutions d'écran. Vous devez configurer les appareils émulés (AVD) de façon à représenter les facteurs de forme et les combinaisons matériel/logiciels les plus utilisés par votre base d'utilisateurs cible. En plus des tests concernant les téléphones, nous vous recommandons de tester d'autres facteurs de forme en utilisant au minimum les émulateurs suivants :
- Appareils pliables : appareil de 7,6 pouces avec écran pliable (classé avec les téléphones dans AVD Manager).
- Tablette : Pixel C 9,94 pouces (2 560 x 1 800 px)
- Pour tester les notifications des applis mobiles, associez un appareil mobile/émulateur à un émulateur Wear OS (Wear OS de forme ronde 1,84 pouces).
- Matériel : votre environnement de test doit inclure quelques périphériques physiques représentant les principaux facteurs de forme et combinaisons matériel/logiciels actuellement disponibles pour le grand public. Il n'est pas nécessaire d'effectuer des tests pour tous les appareils disponibles sur le marché. Concentrez-vous sur quelques appareils représentatifs, voire un ou deux appareils par facteur de forme.
- Bancs de test d'appareils : vous pouvez également utiliser des services tiers comme Firebase Test Lab pour tester votre appli sur un plus large éventail d'appareils.
- Faites vos tests avec la dernière version d'Android : en plus de tester votre appli avec des versions d'Android représentatives de votre base d'utilisateurs cible, vous devez toujours la tester sur la dernière version d'Android (actuellement Android 11). Vous aurez ainsi la certitude que les nouveaux comportements n'ont pas d'incidence sur l'expérience utilisateur.
Pour obtenir des conseils plus complets sur les tests, dont les tests unitaires, les tests d'intégration et les tests d'UI, consultez les principes de base des tests sur Android.
Procédures de test
Ces procédures de test vous aident à détecter différents types de problèmes de qualité dans votre appli. Vous pouvez combiner les tests ou intégrer des groupes de tests dans vos propres programmes de test. Consultez les sections ci-dessus pour voir le lien entre les critères de qualité et ces procédures de test.
Type | Test | Description |
---|---|---|
Suite de tests principale | CR-0 | Accédez à l'ensemble des sections de l'appli (intégralité des écrans, boîtes de dialogue, paramètres et parcours utilisateur).
|
CR-1 | Depuis chaque écran de l'appli, appuyez sur le bouton d'accueil de l'appareil ou balayez l'écran vers le haut dans la navigation par gestes, puis relancez l'appli depuis l'écran "Toutes les applis". | |
CR-2 | Depuis chaque écran de l'appli, passez à une autre appli en cours d'exécution, puis revenez à l'appli à tester à l'aide du sélecteur d'applis récentes. | |
CR-3 | Sur chaque écran de l'appli (et dans chaque boîte de dialogue), appuyez sur le bouton Retour ou faites un geste de retour en arrière. | |
CR-5 | À partir de chaque écran de l'appli, faites pivoter l'appareil entre les modes paysage et portrait, et pliez et dépliez-le au moins trois fois. | |
CR-6 | Passez à une autre appli pour envoyer l'appli testée en arrière-plan. Accédez aux paramètres et regardez si l'appli testée exécute des services en arrière-plan. Sur Android 4.0 ou version ultérieure, accédez à l'écran "Applis", puis recherchez l'appli dans l'onglet "En cours". | |
CR-7 | Appuyez sur le bouton Marche/Arrêt pour mettre l'appareil en veille, puis appuyez à nouveau dessus pour réactiver l'écran. | |
CR-8 | Configurez le verrouillage de l'écran de l'appareil. Appuyez sur le bouton Marche/Arrêt pour mettre l'appareil en veille afin de le verrouiller. Appuyez de nouveau sur le bouton Marche/Arrêt pour réactiver l'écran et déverrouiller l'appareil. | |
CR-9 | Déclenchez tous les types de notifications que l'appli peut afficher et examinez-les dans le panneau des notifications. Développez les notifications le cas échéant (Android 4.1 et versions ultérieures), puis appuyez sur toutes les actions disponibles. | |
CR-10 | Vérifiez la compatibilité avec d'autres scénarios d'utilisation dans les fonctionnalités Sommeil et Mise en veille des applis. | |
Installation sur la carte SD | SD-1 | Répétez la suite de tests principale avec l'appli installée sur la carte SD d'un appareil (si l'appli est compatible avec cette méthode d'installation).
Pour déplacer l'appli sur la carte SD, vous pouvez utiliser Paramètres > Infos sur l'appli > Déplacer vers la carte SD. |
Performances et stabilité | SP-1 | Examinez le fichier manifeste Android et la configuration de compilation pour vous assurer que l'appli est compilée avec le dernier SDK disponible (targetSdk et compileSdk ).
|
SP-2 | Examinez le fichier build.gradle pour identifier d'éventuelles dépendances obsolètes. |
|
SP-3 | Utilisez l'outil lint d'Android Studio afin de détecter l'utilisation d'interfaces autres que les SDK. D'autres méthodes de test existent. | |
Surveillance des performances | PM-1 | Répétez la suite de tests principale avec le profilage StrictMode activé.
Soyez particulièrement attentif à la récupération de mémoire et à son impact sur l'expérience utilisateur. |
Batterie | BA-1 | Répétez la suite de tests principale sur les cycles des fonctionnalités Sommeil et Mise en veille des applis.
Soyez particulièrement attentif aux alarmes, minuteurs, notifications, synchronisations, etc. Pour connaître les conditions requises et les consignes, consultez Test avec les fonctionnalités Sommeil et Mise en veille des applis. |
Sécurité | SC-1 | Examinez toutes les données stockées dans l'espace de stockage externe. |
SC-2 | Examinez comment les données chargées depuis l'espace de stockage externe sont gérées et traitées. | |
SC-3 | Examinez tous les fournisseurs de contenu définis dans le fichier manifeste Android. Assurez-vous que chaque fournisseur dispose d'un protectionLevel approprié.
|
|
SC-4 | Sur l'appareil, passez en revue les autorisations requises par votre appli dans le fichier manifeste, au moment de l'exécution et sur l'écran des paramètres de l'appli (Paramètres > Infos sur l'appli). | |
SC-5 | Vérifiez tous les composants d'appli définis dans le fichier manifeste Android pour contrôler que l'état d'exportation est correct. La propriété exportée doit être définie explicitement pour tous les composants. | |
SC-6 | Examinez la configuration de la sécurité réseau de l'appli pour contrôler qu'aucune vérification lint n'échoue. | |
SC-7 | Pour chaque WebView, accédez à une page nécessitant JavaScript. | |
SC-8 | Dans chaque WebView, essayez d'accéder à des sites et à des contenus qui ne sont pas chargés directement par votre appli. | |
SC-9 | Déclarez une configuration de sécurité réseau qui désactive le trafic en texte clair, puis testez l'appli. | |
SC-10 | Exécutez l'appli et déclenchez toutes les fonctionnalités essentielles tout en observant le journal de l'appareil. Aucune information privée sur l'utilisateur ne doit être enregistrée. | |
Google Play | GP-1 | Connectez-vous à la Google Play Console pour consulter votre profil de développeur, la description de l'appli, les captures d'écran, l'image de présentation, la classification du contenu et les commentaires des utilisateurs. |
GP-2 | Téléchargez votre image de présentation et vos captures d'écran, puis réduisez leur taille pour qu'elle corresponde à la taille d'affichage sur les appareils et facteurs de forme que vous ciblez. | |
GP-3 | Examinez l'ensemble des assets graphiques, contenus multimédias, textes, bibliothèques de code et autres contenus inclus dans l'appli ou le fichier d'appli téléchargeable. |
Test avec StrictMode
Pour tester les performances, nous vous recommandons d'activer StrictMode
dans votre appli et de l'utiliser pour détecter les opérations susceptibles de nuire aux performances, aux accès réseau, aux opérations de lecture ou d'écriture de fichiers, etc. Recherchez les opérations susceptibles de poser problème, aussi bien sur le thread principal que sur d'autres threads.
Vous pouvez configurer une règle de surveillance par thread avec StrictMode.ThreadPolicy.Builder
et activer tous les dispositifs de surveillance compatibles dans ThreadPolicy
avec detectAll()
.
Veillez à activer la notification visuelle des cas de non-respect des règles pour ThreadPolicy
avec penaltyFlashScreen()
.