La durée d'attention moyenne d'un être humain est inférieure à 9 secondes ! Vous êtes-vous déjà demandé pourquoi ? La plupart des applications mobiles apparues récemment exigent que vous fassiez défiler un fil d’actualité, où le cerveau est réglé pour ne pas s’attarder sur quelque chose plus de quelques secondes. Cela a entraîné une diminution significative de la capacité d'attention de l'utilisateur moyen.
Avec la multitude d’applications mobiles disponibles sur l’App Store, vient la grande responsabilité du test des applications mobiles et de la mise à l’échelle des campagnes de tests de régression. C’est là que les outils de test mobile deviennent incontournables.
J’ai été parmi les premiers à adopter les frameworks de tests mobiles et, selon mon expérience, se concentrer sur l’automatisation, les facteurs de forme et les tests de performance ont joué un rôle tout aussi important pour évoluer et accroître l’impact dans le monde mobile. Dans cet article, je vais partager les techniques les plus efficaces pour automatiser vos tests d'applications mobiles.
Tests d'applications mobiles : Composants à prendre en compte
Tester sur une plateforme spécifique a ses propres défis, mais avec le mobile, il y a des paramètres supplémentaires à prendre en compte. Que vous réalisiez des tests manuels ou de l’automatisation, en plus des tests fonctionnels, vos cas de test doivent se concentrer sur :
Connectivité
Il est important de se demander ce qu’il se passe si un utilisateur utilise son appareil mobile en mode avion ou hors ligne, si la bande passante fluctue, etc., pour garantir le bon fonctionnement de l’application.
Localisation
En particulier pour les applications mobiles reposant sur le GPS ou les services géolocalisés, il est nécessaire de tester en simulant une localisation avec des outils tels que MobileSpy, Location Spoofer, etc. Sinon, il serait difficile de tester—par exemple : si vous souhaitez simuler un scénario de test pour une application mobile de covoiturage, où quelqu’un demande une course depuis New York et que des changements ont été effectués côté microservices backend spécifiques à la recherche d’un chauffeur dans cette zone. Sans simulation, les tests ne donneraient pas des résultats fiables.
Système d'exploitation
Notamment avec le nombre de téléphones Android présents sur le marché aujourd’hui, tester sur toutes les versions d’OS disponibles est pratiquement impossible – alors comment prioriser ? Avec iOS, il y a des défis supplémentaires imposés par Apple relatifs aux versions de Xcode associées aux changements de version de l’OS.
Aujourd’hui, les entreprises utilisent des prestataires tiers comme BrowserStack pour fournir des simulateurs/émulateurs pour divers systèmes d'exploitation, tests sur appareils et tests multi-navigateurs.
Les icônes de l’interface utilisateur diffèrent selon les systèmes d’exploitation : Windows, iOS, et Android. Lorsqu’il s’agit d’automatisation des tests, la plupart d’entre nous utilisons des simulateurs—ceux d’Android mettent plus de temps à charger alors que les appareils iOS sont plus rapides.
Les différentes combinaisons de touches à utiliser selon le type de système d’exploitation pour réaliser des captures d’écran afin de déboguer les problèmes est une information essentielle pour toute personne effectuant des tests sur applications mobiles.
Facteur de forme
Lors du développement d'applications mobiles, il est essentiel de prendre en compte 5 principaux facteurs de forme selon le système d’exploitation en plus de la gestion du mode portrait ou paysage pour chaque type de dispositif :
| Appareil | Taille d'écran |
| Petits mobiles | 3,5 pouces ou moins |
| Mobiles moyens | 3,5 à 5 pouces |
| Tablettes | 5 à 7 pouces |
| Petites tablettes | 7 à 8,5 pouces |
| Tablettes grand format | 8,5 pouces ou plus |
Comment choisir le bon framework pour l’automatisation mobile
Prendre en compte les facteurs de forme lors de la création d’applications mobiles revient à s’assurer de la réactivité de l’application lorsqu’elle est utilisée sur différents appareils mobiles et types d’OS. Si l’application est utilisée à travers le monde et que les entreprises souhaitent augmenter leur base d’utilisateurs, elles devront prendre très tôt la décision d’opter pour des frameworks React Native plutôt que pour le développement natif Android ou iOS.
Sinon, les entreprises devront par la suite investir du temps et des efforts à refactoriser et redessiner les applications pour basculer vers les frameworks React Native. Cela a un impact direct sur le nombre d’équipes nécessaires et la charge de maintenance, car les frameworks React Native permettent de développer des applications à la fois pour iOS et Android.
Lorsque les applications mobiles sont développées avec les frameworks React Native, cela allège également la charge des tests automatisés, car il suffit de maintenir un seul framework de test automatisé pour iOS et Android.
Il existe différentes façons de développer des applications mobiles. Certaines entreprises choisissent d’utiliser des langages de programmation natifs tels que Java et Objective C pour les applications Android et iOS respectivement. L’avantage d’utiliser des langages natifs réside dans la possibilité d’offrir une riche fonctionnalité à leurs applications.
D'un autre côté, les identifiants des éléments seront différents sur les deux plateformes — ce qui signifie que nous aurons besoin de cadres de test natifs séparés pour tester la même fonctionnalité, comme Espresso sur Android, XCUITest sur iOS, etc.
React Native est un autre langage de programmation couramment utilisé pour développer des applications mobiles réactives, qui a été rendu open-source par Facebook. L'objectif était d'unifier les efforts de développement mobile sur les deux plateformes afin qu'une seule équipe puisse suffire et que les identifiants d'éléments soient les mêmes sur les deux applications — ce qui ne nécessite alors qu'un seul cadre de test tel qu'Appium pour aider à tester les applications mobiles.
Lorsqu'il s'agit d'automatiser les tests de votre application mobile, choisir les bons outils d'automatisation QA peut faire une grande différence dans l'efficacité de vos tests.
Comment automatiser les tests d'applications mobiles iOS
Lors de la réalisation de tests manuels, il existe de nombreux critères auxquels il faut se conformer : la plupart des entreprises qui développent des applications iOS précisent clairement quels systèmes d'exploitation et quelles versions de sdk sont pris en charge. Cela permet de limiter les efforts de test.
Pour augmenter la couverture et l'efficacité des tests logiciels, il est nécessaire d'investir dans l'automatisation. Il existe de nombreux cadres populaires qui prennent en charge les tests automatisés d'applications mobiles iOS. Pour limiter notre discussion, nous allons nous concentrer sur les deux outils d'automatisation suivants :
- XCUITest
- Appium
| XCUITest | Appium |
| Cadre d'applications natives qui peut résider dans le code source iOS. | Cadre de test isolé qui est construit en dehors de la base de code source. |
| Écrit en Objective C ou Swift | Écrit en Java, Python, etc. |
| Attentes explicites qui appliquent une condition. | Attentes implicites qui impliquent l'utilisation de sleep(), ce qui rend les tests instables. |
| Simulation des réponses d'API backend à l'aide de bibliothèques open source telles que Mockingjay | Prend en charge l'utilisation d'un serveur simulé. |
| Étant donné qu'il s'agit d'un cadre natif, il peut uniquement être utilisé pour tester les applications iOS. | Puisque les tests résident en dehors de la base de code source et peuvent être écrits dans des langages comme Java, Python, etc, il peut être utilisé pour tester des applications multiplateformes telles que Windows, iOS et Android tant que les identifiants d'éléments sont les mêmes sur les deux plateformes. |
J'ai utilisé des serveurs simulés pour aider à simuler les accès au backend et tester exclusivement l'UI comme suit, en créant une classe de base :

Maintenant que la classe de base est prête, j'ajoute le test réel en utilisant le modèle de conception page object comme suit :

Comment automatiser les tests d'applications mobiles Android
Il y a plus de 2 milliards d'appareils Android actifs dans le monde. Tester votre application Android sur tous les types d'appareils et de systèmes d'exploitation est quasiment impossible ! Ainsi, les entreprises précisent explicitement les versions qu'elles prennent en charge. Cela garantit également une meilleure expérience utilisateur.
Les cadres d'automatisation Android permettent clairement d'accélérer les processus de test, comme Robotium, Selendroid, etc., et pour le cadre de notre discussion, limitons-nous aux outils d'automatisation : Espresso et Appium :
| Espresso | Appium |
| Framework natif qui peut résider au sein du code source Android. | Framework de tests isolé qui est construit en dehors du code source. |
| Écrit en Java et Kotlin | Écrit en Java, Python, etc. |
| Attentes explicites, opérations asynchrones prises en charge grâce à la fonctionnalité des ressources d'attente | Attentes implicites qui impliquent l'utilisation de sleep(), ce qui rend les tests instables. |
| Simulation des réponses back-end à l'aide de bibliothèques open source comme Mockito et Retrofit builder | Prise en charge de l'utilisation de serveurs simulés. |
| Comme il s'agit d'un framework natif, il ne peut être utilisé que pour tester des applications Android. | Étant donné que les tests résident en dehors du code source et peuvent être écrits dans des langages comme Java, Python, etc., il peut être utilisé pour tester des applications multiplateformes sur iOS et Android, à condition que les identifiants des éléments soient les mêmes sur les deux plateformes. |
L'un des avantages de l'utilisation de frameworks natifs pour applications est la possibilité d'utiliser des serveurs simulés afin de simuler les appels d'API back-end et ainsi tester uniquement l'interface utilisateur. Voici un extrait de code montrant comment je l'ai mis en œuvre :

Selon la manière dont votre architecture microservices est développée, vous récupérerez la réponse soit à partir de l’onglet réseau de votre navigateur, soit directement auprès des développeurs, puis vous les référencerez ainsi dans vos tests :

Comme vous pouvez le voir dans l'exemple ci-dessus, HomeTabPage est appelée dans le test, plutôt que de devoir vérifier explicitement chaque élément — j’ai utilisé le pattern page object dans le framework de la façon suivante :

Outils de test pour applications mobiles
Il existe différents outils de test dans l'industrie dont le choix dépend de plusieurs facteurs:
- Compétences de l'équipe
- Objectif de l'automatisation
- Audience cible de l'automatisation : chefs de produit, commerciaux, ingénieurs, testeurs
- Compatibilité du framework de test et du code source natif
- Nombre d'applications hybrides
Voici quelques outils reconnus et couramment utilisés dans l'industrie :
- Selendroid
- Robotium
- Appium
- Testdroid
- UiAutomator
Vous ne souhaitez pas réaliser vos propres tests en interne ? Vous pouvez aussi faire appel à des services de test d'applications mobiles pour le faire à votre place.
Test des performances des applications mobiles
Lors des tests d'applications mobiles, en plus de l’automatisation pour accélérer les tests, il faut également accorder une grande importance aux tests de performance, car ils sont essentiels pour savoir si un utilisateur continuera ou non à utiliser notre application.
Si l’écran met plus de 2 secondes à charger, les utilisateurs s’impatientent — cela rejoint nos recherches sur la capacité d’attention, et c’est pourquoi, pour fidéliser les utilisateurs, il est nécessaire d’investir dans les tests de performance.
Lors des tests de performance d’une application, il convient d’identifier les indicateurs clés de performance (KPI) puis de comparer les résultats :
- Délai de réponse maximal
- Délai de réponse moyen
- Débit moyen
- Nombre maximum d’utilisateurs actifs par système d’exploitation et par appareil
L’utilisation d’un outil de test pour applications mobiles peut simplifier le test de performance. Par exemple, Apptim permet d’analyser les indicateurs de performance utilisateur fin — il fournit des rapports complets sur tous les paramètres de performance clés.
Pour surveiller la performance des applications mobiles, nous pouvons utiliser Firebase Performance Monitoring qui offre un contrôle des données de performance en partageant des informations sur le fonctionnement de votre application, avec une ventilation des traces et des données réseau selon des dimensions telles que la version de l'application, le pays, l'appareil et le type de réseau.
Il existe d'autres outils comme Appium Studio, Sauce Labs, Testdroid, etc. qui offrent des capacités similaires de surveillance des performances.
Nous espérons que cet article vous a donné une introduction aux tests d'applications mobiles et aux facteurs critiques qui y sont associés !
Pour plus de bonnes pratiques et de conseils pour structurer votre processus de développement, abonnez-vous à la newsletter The QA Lead.
À lire également :
À découvrir :
- QU'EST-CE QUE TESTGEAR ? APERÇU & TOUR DES FONCTIONNALITÉS
- MÉTRIQUES DE SURVEILLANCE DES SERVEURS À SUIVRE POUR LA SANTÉ ET LES PERFORMANCES DU SYSTÈME
Autres outils recommandés :
