Le développement des applications mobiles donne un coup de vieux au test de performance traditionnel

Les attentes des utilisateurs vis-à-vis des applications mobiles influencent la manière dont les développeurs les créent. Elles doivent être simples et performantes. Deux principes pas toujours faciles à concilier pour les développeurs qui s’appuient sur des méthodes et des outils de test de performance traditionnels.

La performance joue un rôle déterminant pour garantir une expérience utilisateur mobile satisfaisante. Si les performances de l’application ne sont pas à la hauteur, celle-ci sera probablement abandonnée et désinstallée le jour-même, réduisant à néant tous les investissements en R&D et marketing. Des performances faibles peuvent même dégrader l’image de marque. Dans un monde idéal, le processus complet de développement d’une application mobile correspondrait parfaitement à ces nouvelles attentes des utilisateurs et bénéficierait du budget nécessaire pour répondre à ces exigences.
 
Mais la première attente – les appli doivent être simples – se traduit souvent par : l’appli mobile est une version light de l’application web et, par conséquent, elle devrait être moins chère à développer. Le résultat est que les budgets dévolus au développement des applications mobiles sont limités et, dans cette nouvelle équation, le test de performance a de fortes chances de devenir une variable d’ajustement.

Voilà ce qui rend fou les développeurs d’applications mobiles

Les besoins en test de performance vont croissant, mais les budgets alloués se réduisent. Les processus et les outils traditionnels de test de performance – conçus pour des applications plus complexes, bénéficiant de budgets plus importants et de cycles de développement plus longs – ne correspondent plus à la réalité. Ils ne correspondent plus à l’équation économique liée à la création des applications mobiles.
De plus, tester les performances des applications mobiles est autrement plus complexe que tester une application PC traditionnelle fonctionnant sur un navigateur web. Ceci parce qu’il est nécessaire de simuler un certain nombre de conditions liées au réseau (bande passante, temps de latence et perte de paquets, etc.) et au comportement des appareils mobiles. Or ces conditions ne font pas partie de celles qui sont testées pour les applications PC traditionnelles.

Le mobile modifie profondément trois aspects du développement applicatif :

1) Technologie

De nouvelles fonctionnalités sont nécessaires pour tester les applications mobiles de manière réaliste

2) Processus

Le test exige d’aller plus vite afin de NE PAS devenir un goulet d’étranglement au sein du projet de développement applicatif

3) Coût

Le processus complet de test incluant les outils et les hommes doit être optimisé pour correspondre à l’équation économique lié à la conception des applications mobiles.
Le modèle actuel est obsolète. Dans cet article, nous allons étudier les trois points que nous venons de lister, les challenges qui en découlent et comment ils peuvent être appréhendés par les développeurs et les testeurs.

Travailler sur une nouvelle technologie

Certains besoins spécifiques liés au test de performance des applications mobiles ne sont pas adressés par les techniques de test traditionnelles. Les applications mobiles demandent une attention particulière concernant l’enregistrement des scénarios de test mobile, l’exécution de tests réalistes simulant les caractéristiques réelles de bande passante et de navigateur, et l’analyse des résultats. Répondre à ces enjeux est essentiel pour garantir que les applications web mobiles ont été suffisamment testées avant leur mise en production et qu’elles affichent des performances satisfaisantes en situation d’utilisation et de charge.

Il existe trois différences clés entre le test de charge traditionnel et le test de charge mobile :

1) La simulation réseau pour les protocoles mobiles

Avec les protocoles mobiles 3G, les appareils mobiles se connectent à internet en utilisant une connexion plus lente et de qualité inférieure que celle des PC de bureau ou des PC portables. Ce qui a des effets en termes de temps de réponse du côté client et sur le serveur lui-même, que les développeurs devront prendre en compte lors de la définition des tests et de l’analyse des résultats. De plus, les temps de latence et les pertes de paquets sont plus fréquents avec les applications mobiles et doivent faire l’objet d’une attention spécifique.

2) L’enregistrement sur les appareils mobiles

Les applications mobiles fonctionnent évidemment sur des appareils mobiles, ce qui peut compliquer l’enregistrement des scénarios de test, particulièrement pour les applications sécurisés utilisant HTTPS.

3) Le support d’une grande variété d’appareils

Les nombreuses catégories d’appareils mobiles disponibles sur le marché ont conduit les concepteurs d’applications web à adapter le contenu en fonction des capacités de la plateforme du client. Ce qui ne facilite pas l’enregistrement et la réutilisation des scénarios de test.

La définition des bonnes valeurs pour les réglages des tests – comme le user agent, la bande passante ou le nombre de connexions simultanées – peut représenter un challenge. Les outils de test de charge les plus avancés peuvent aider les testeurs à définir ces valeurs.
Par exemple, la réutilisation d’un scénario de test est grandement simplifiée avec les outils qui sont capables d’informer automatiquement le testeur à propos du user agent et du nombre de connexions parallèles à utiliser en fonction du navigateur, de la version et de la plateforme.
Le processus est encore plus fluide lorsque les outils peuvent suggérer les réglages de bande passante ascendante et descendante les plus appropriés en fonction de la technologie utilisée (par exemple Wifi, 3G, 3G+, etc.) et de la qualité du signal (faible, moyen ou bon).

Tester plus rapidement et plus efficacement

Les applications mobiles n’ont pas le même cycle de développement que les applications PC traditionnelles. Elles sont plus simples et possèdent moins de fonctionnalités. Le cycle de développement est par conséquent plus court. De plus, parce que les technologies de développement évoluent rapidement, une application mobile a tendance à faire l’objet d’un plus grand nombre de versions qu’une application PC. Il est également important de noter que les utilisateurs mobiles attendent constamment des nouvelles applis, entrainant un rythme très élevé de nouvelles versions.
 
Avec des cycles de développement initiaux plus courts, plus de versions et plus d’applis, le test de performance et de charge – qui est souvent relégué à la fin du cycle de développement – est plus que jamais soumis à des contraintes de temps importantes. La pression est mise sur la capacité à délivrer des résultats tangibles aussi rapidement que possible, sans devenir un frein pour le projet.

Les développeurs et les testeurs ont donc besoin d’outils capables de s’adapter à ces nouvelles contraintes de temps. Il existe trois raisons expliquant comment un outil de test peut aider un testeur d’assurer plus efficacement sa mission tout en s’assurant qu’il respecte le plan de développement de l’équipe.

1) Courbe d’apprentissage rapide

Le test de performance est une tâche très complexe qui requiert une grande expertise en termes d’outils de test de performance (pour enregistrer les scripts et exécuter les tests), mais aussi en termes de maîtrise de l’architecture applicative, de ses blocs technologiques et de la manière dont ils interagissent. Ce dernier point ne s’acquiert qu’avec l’expérience, aucun outil ne l’enseigne. Mais l’acquisition de l’expertise des outils de test de performance peut être significativement accélérée grâce à une nouvelle catégorie de logiciels qui ne nécessitent pas de scripting complexe.

Les outils de test de performance peuvent accélérer la courbe d’apprentissage sans avoir à apprendre une API ou un langage de script pour définir les tests. C’est à présent possible avec des solutions utilisant des modules et une interface graphique intuitifs. Les outils permettent à une équipe d’ingénieurs de développer une expertise pointue qui était précédemment réservée aux spécialistes. Ce qui permet à l’équipe d’améliorer très rapidement ses compétences et de disposer de plus de ressources pour effectuer les tests. Il s’agit-là d’un point clé pour le cycle de développement applicatif.

2) Automatisation

Les améliorations de productivité sont essentielles pour les opérations de test de performance. Tester les performances d’une application implique des centaines de tâches, à cause du grand nombre de workflows possibles et parce que le test doit être réglé correctement, nécessitant la réitération d’un grand nombre de tâches. Par conséquent, la capacité d’automatisation des outils de test de performance permet aux testeurs de définir et d’exécuter plus rapidement les tests.
Le schéma ci-dessous montre quelles phases du processus de test de charge et de performance peuvent être accélérées avec les bonnes fonctions d’automatisation de l’outil.

3) Collaboration

Les contraintes de temps s’accroissant et les cycles de développement se raccourcissant, de nouvelles façons de travailler ont vu le jour autour des organisations agiles, où de nombreux membres d’une équipe peuvent participer au design, à l’utilisation et à l’analyse des scénarios de test. Les meilleures pratiques pour mener des tests continus de performance (quotidiennement) au cours de la phase développement obligent encore plus l’équipe à devoir travailler avec les mêmes projets et scripts de test, ceci afin de suivre les changements et revenir à une précédente version du projet test.
 
Les outils de test de performance qui fournissent les fonctionnalités collaboratives nécessaires permettent de tester plus vite et autorisent les différentes équipes projet à travailler avec des scénarios ou des utilisateurs virtuels prédéfinis. Dans un environnement mobile où les cycles de développement sont courts et les projets multiples, beaucoup de sources de gains de productivité existent.

Résoudre l’équation économique

Il y a beaucoup de facteurs rendant l’équation économique du test de charge difficile à résoudre pour les applications mobiles. Il y a tout d’abord les applications développées avant tout pour des raisons de marketing et d’image de marque, et qui ne sont par nature pas directement rentables en raison de leur gratuité.
Les applications mobiles développées pour générer des revenus (comme les jeux) ou pour accéder à des services web ou des applications professionnelles (applications mobiles pour la banque, CRM, …) sont des versions light de plus grosses applications dotées de plus de fonctionnalités. Par conséquent, les budgets alloués au développement d’applications mobiles sont inférieurs à ceux habituellement consacrés aux applications PC traditionnelle. Comme évoqué précédemment, le test de charge est plus complexe pour les applications mobiles en raison des différentes conditions de réseau et des différentes plateformes.
 
 

Applications PC traditionnelles

Applications mobiles
Complexité du test de charge

Standard (pas d’impact sur les conditions réseau, nombre limité de plateformes)

Complexe Nombre virtuellement illimité de conditions réseau Nombreuses plateformes différentes

Cycle de développement / délai du test en charge

6 à 12 mois / 1-2 semaines

1-3 mois / souvent peu de temps restant pour les tests de performance

 
Budget global / Budget pour le test de performance

Centaines de milliers d’€ / habituellement sous forme de licence

1K€ à 30K€ / souvent pas de budget restant pour la licence


Les méthodes et outils de test traditionnels ne correspondent pas à cette équation pour deux raisons principales.

1) Les méthodes et outils de test traditionnels demandent beaucoup de ressources et leur coût ne correspond pas aux budgets de développement des applications mobiles

Les méthodes et outils de test traditionnels sont trop lents pour le test de performance des applications mobiles. Ce qui impacte les délais de mise sur le marché (le test de performance peut alors devenir un frein) et le budget car le coût du design et de l’exécution des tests sont prohibitifs par rapport au budget alloué au projet de développement. Nous avons vu précédemment les points à considérer pour mettre en place un processus de test de performance plus rapide et plus efficace. Ceci a un impact direct sur les coûts associés au test de performance. Un outil qui permet aux testeurs d’effectuer des tâches plus rapidement se traduit par une meilleure efficacité en termes de coûts, et permet à une équipe de R&D de mener des tests réalistes et s’assurer que l’application affichera de bonnes performances en production sans demander un délai important pour apprendre à utiliser l’outil et définir les scripts de test.

2)  Les modèles CAPEX ne sont pas efficaces

Si l’amélioration de la productivité des testeurs est une composante de l’équation, les équipes de R&D ont besoin de solutions compatibles avec les nouveaux business models correspondant aux exigences de coût des tests des applications mobiles. Comme souligné précédemment, les budgets liés au développement d’applications mobiles sont bien inférieurs à ceux alloués aux applications PC.
Par conséquent, un business model de type CAPEX où une équipe projet doit investir pour acquérir une licence d’outil de test de charge n’est pas adapté car ces coûts peuvent dépasser le budget total de développement de l’application. Les responsables de test ont intérêt à rechercher une solution fournissant des business models flexibles et basés sur les modèles de paiement à l’utilisation ou de location qui permettent d’adapter les coûts des tests de performance aux contraintes de budget.

Les cycles de développement devenant de plus en plus courts, le nombre de nouvelles applications mobiles va croissant. La phase de test de performance n’intervient pas tous les 6 ou 12 mois (comme c’est le cas pour les applications PC), mais plusieurs fois par an, au fur et à mesure que les nouvelles versions sont développées. Les outils de test de performance ne doivent pas être attachés à un projet ou une application en particulier. Les testeurs devraient pouvoir partager la même licence sur différents projets.

Conclusion 

La performance n’a jamais été aussi critique dans le succès d’une application qu’avec les applis mobiles. Il s’agit-là d’une opportunité pour les testeurs de performance de mettre leur rôle en valeur au sein de la chaîne de développement et de contribuer à la réussite de toute l’équipe. La mobilité crée de nouveaux challenges pour les testeurs de performance, aussi bien du point de vue technologique que du point de vue organisationnel.
C’est le rôle de la technologie d’accompagner ces changements et de permettre aux testeurs de contribuer efficacement au cycle de développement des applications avec les outils appropriés.
Choisir le bon outil pour le test de performance ne se résume pas seulement à vérifier la capacité à prendre en charge les technologies mobiles, mais aussi à sélectionner un outil permettant les changements organisationnels qui influencent le marché, et où les tests de performance doivent être menés plus vite, sur de équipes distribuées et avec des exigences de fiabilités plus élevées que jamais.