Influence des contextes technologiques sur la pratique du test

Applications Web ou mobiles, quelle influence sur la pratique du test ?

Succédant aux classiques architectures « client/serveur », deux technologies sont de plus en plus utilisées comme support de mise en œuvre des applications: le « web » et les appareils mobiles (« smartphones » et tablettes tactiles).

Le recours à une technologie donnée aura une influence sur la façon de tester les logiciels, et cette influence tient bien évidemment aux caractéristiques spécifiques de la technologie employée.

D’une manière générale, le choix d’un support technologique influera sur les types de test à effectuer, ainsi que sur les outils et les environnements techniques employés pour procéder à certains tests.

Les applications Web et leur spécificité en matière de test

La technologie « web » se caractérise principalement par une distribution des composants sur plusieurs niveaux indépendants et inter-communicants. Chacun de ces niveaux sert une gamme précise de besoins. Le modèle le plus répandu comporte trois niveaux (on parle d’application « 3-tier ») :

  • le premier niveau traite les besoins de connexion et de présentation (mise en forme des « pages » supportant l’information échangée avec l’utilisateur (« poste client »),
  • le deuxième niveau couvre les besoins de traitement « métier » (« business logic »),
  • le troisième niveau assure le service des données (lecture / écriture).

Techniquement, chaque niveau de service est assuré par un « serveur » distinct (physique ou logique), et les langages utilisés sont spécifiques au besoin couvert. La dimension « réseau » de ces architectures est prépondérante car tous les « intervenants » (poste client et serveurs) y ont recours pour communiquer entre eux. Le poste « client » peut être un ordinateur, une tablette ou un « smartphone ». Dans ces deux derniers cas, on ne parle pas pour autant d’application « mobile ».

Spécificité des applications web

Les principaux tests spécifiques à ce type d’architecture sont :

  • les tests de navigation, qui consistent à vérifier le bon fonctionnement de tous les liens,
  • les tests de compatibilité des navigateurs et des « OS » : la quantité de navigateurs et de versions en circulation impose ces tests, qui consistent à jouer exactement le même scénario dans plusieurs configurations différentes. Certains outils permettent l’enregistrement du premier jeu du scénario pour reproduction automatique dans d’autres configurations. Il en va de même pour les différents systèmes d’exploitation (OS) côté client.
  • les tests de réactivité (« responsiveness ») si utilisation prévue aussi à partir de mobiles et/ou tablettes,
  • les tests d’échange de documents (« upload / download ») et de consultation de media (image, audio, vidéo),
  • les tests de sécurité, très importants du fait de l’accès par l’internet, afin de vérifier l’absence de risque d’intrusion, sur le poste client comme sur les différents serveurs de l’architecture,
  • les tests d’intégrité des données,
  • les tests de charge, de performance et de disponibilité, du fait d’un nombre potentiellement élevé d’utilisateurs. Les points à contrôler ne concernent pas uniquement la réponse globale, mais aussi celle de chaque point de l’architecture et chaque segment du réseau, où des conditions particulières de sollicitation peuvent révéler des « goulets d’étranglement ».

Enfin, la distribution des composants sur des plates-formes distinctes permet d’améliorer la qualité en pratiquant des tests spécifiques par plate-forme avant de procéder aux tests globaux.

Les technologies mobiles amplifient le périmètre des tests

Si les applications destinées aux appareils mobiles (« smartphones » et tablettes) sont souvent très ciblées, offrant une couverture fonctionnelle plus spécialisée que dans d’autres contextes d’utilisation, le recours à ces supports applicatifs impose de nouvelles exigences en matière de qualité.

Un appareil mobile est avant tout un ordinateur qui, dans le cas des téléphones et de certaines tablettes, intègre des dispositifs propres à la téléphonie au sens large (communication voix, SMS, MMS), ainsi que des moyens de géolocalisation (GPS).

Les principales spécificités des appareils mobiles sont :

  • la fragmentation, du fait du nombre de systèmes d’exploitation disponibles selon les modèles, (Android, IOS, Windows Phone, mais aussi RIM, Symbian, J2ME, etc.), et de la coexistence de nombreuses versions de ces derniers selon les modèles,
  • la co-existence sur le même appareil de plusieurs protocoles de communication (2G, 3G, 4G, Edge, Wifi, etc.), ainsi que le « Bluetooth »,
  • plusieurs interfaces d’échange avec l’appareil : écran tactile, clavier virtuel ou réel, voix,
  • la présence de services internes à l’appareil (téléphone, messagerie immédiate, notifications diverses) pouvant s’activer indépendamment de toute application, ainsi que des dispositifs multimédia (pĥoto, son, vidéo) et GPS.

Il existe trois formes d’applications mobiles :

  • les applications « natives« , développées dans un langage spécifique ou en Java, qui peuvent, le cas échéant, partager des données avec un serveur distant,
  • les « Web Apps« , applications développées pour le Web et accessibles via le navigateur de l’appareil,
  • les applications « hybrides » qui encapsulent du code HTML dans une application « native » et sont accédées via le navigateur de l’appareil.

Les applications natives et hybrides sont installées sur l’appareil à partir d’un « magasin » accessible en ligne (Google Play Store, App Store, etc.).

Au-delà des types de test pratiqués habituellement (tests fonctionnels, de performance, de sécurité, etc.), les spécificités de la technologie employée imposent d’autres types de tests ainsi que des formes particulières de certains tests classiques. Sans prétendre à l’exhaustivité, on citera :

  • les tests de compatibilité, renforcés du fait de la fragmentation (nombre de systèmes d’exploitation et de leurs versions),
  • les tests d’ergonomie et d’utilisabilité, qui doivent tenir compte de l’interface d’échange avec l’appareil en termes de lisibilité et d’interaction: taille de l’écran et mode de sollicitation (tactile, clavier, voix),
  • les tests d’interaction avec certains services de l’appareil (téléphone, messagerie, GPS, etc.),
  • les tests d’interruption, pour vérifier l’absence d’impact négatif d’événements tels que les appels entrants, les messages, les différentes notifications,
  • les tests de bande passante, afin de vérifier l’impact de l’état du réseau (2G, 3G, 4G, Wifi, etc), y compris l’absence de signal réseau,
  • les tests de synchronisation des données avec le serveur distant, le cas échéant,
  • les tests de déploiement sur les « stores » et d’installation à partir de ces « stores ».

et étendent la gamme des moyens nécessaires.

Le test des applications mobiles alourdit la charge de travail des testeurs, à la fois par l’extension des types de tests à effectuer et par l’obligation de répéter les tests dans de nombreuses configurations différentes, notamment pour les tests de compatibilité ou de bande passante.

Ici plus qu’ailleurs, automatiser les tests est un impératif, mais cela ne suffit pas. En effet, il faut aussi disposer des très nombreuses configurations distinctes d’appareils mobiles. Pour cela il existe deux solutions: l’émulation et les services en ligne :

  • les émulateurs sont des programmes qui s’installent sur un poste de travail et simulent le fonctionnement d’un appareil mobile donné. Les inconvénients majeurs sont qu’il n’existe pas d’émulateur pour toutes les configurations, qu’ils ne remplissent pas toutes les fonctions d’un mobile et qu’il faut disposer des moyens d’automatiser la répétition des scénarios de test sur chaque émulateur,
  • les services en ligne (voir l’offre « SauceLabs » à titre d’exemple) présentent le double avantage de mettre à disposition des très nombreuses configurations physiques d’appareils mobiles et de navigateurs, et de proposer une interface de gestion, de spécification, et d’exécution des tests.