Tests et qualité logicielle : les contours de l’offre

La qualité des applications est un enjeu sensible, voire stratégique dans bien des cas. Une application qui ne fonctionne pas, ou mal, nuit à la productivité, et peut même perturber fortement les activités de l’entreprise.

Les spécialistes s’accordent à dire que lorsque la complexité d’une application double, le nombre de bugs quadruple et qu’environ 90 % des vulnérabilités proviennent de catégories de problèmes connus, mais insuffisamment testés. Mieux vaut donc être à même de prévenir les dysfonctionnements, et s’ils surviennent néanmoins, d’en identifier rapidement les causes.

Historiquement, le marché du test et de la qualité logicielle a évolué selon trois phases : la contrainte (des années 1970 à 1990), le besoin (des années 1990 aux années 2000) et l’atout compétitif pour la performance de l’entreprise et son image. L’assurance qualité des applications est souvent ramenée aux seuls tests. Ces derniers sont eux-mêmes fréquemment relégués en fin de développement, excepté dans certaines approches de développement agile. Cependant, pour être réellement efficace, l’assurance qualité doit dans l’idéal inclure un ensemble d’activités intervenant tout au long du processus de développement, et se poursuivant également une fois l’application en production.

Si les tests constituent bien le cœur de l’assurance qualité, il en existe de nombreuses sortes :

  • analyses statiques et dynamiques,
  • tests fonctionnels,
  • tests de performance ou de charge,
  • tests de non-régression,
  • tests de sécurité…

En outre, il existe plusieurs niveaux de test, comme le définit le Comité Français du Test Logiciel (CFTL) : tests unitaires (composant par composant), tests intégrés (plusieurs composants ensemble) ou tests du système et enfin tests d’acceptation (la recette). Il convient donc de définir une stratégie de test adaptée en fonction des applications et du contexte. Les scénarios de tests eux-mêmes doivent être conçus et planifiés le plus tôt possible, faute de quoi le risque est grand de les voir passer à la trappe par manque de temps. Enfin, même une batterie de tests très poussée ne garantit pas l’absence de bugs. Aussi, une fois l’application livrée, il est important d’analyser son comportement en production afin de détecter d’éventuels problèmes non-identifiés lors du développement.

Une offre structurée en quatre grands domaines

Une fois ces enjeux posés, il faut les confronter à la réalité du terrain : toutes ces tâches demandent du temps, et de par leur caractère répétitif et peu créatif, elles suscitent rarement l’enthousiasme des équipes. Des solutions permettant d’automatiser tout ou partie de ces tâches ont donc un intérêt aisément compréhensible pour toute entreprise souhaitant améliorer la qualité globale de ses livrables.

Certaines sont orientées vers l’industrialisation de bout en bout du processus, tandis que d’autres couvrent un type spécifique d’analyse ou ont un périmètre plus restreint. Une nouvelle étude de Best Research propose un panorama de ces solutions, avec une étude de 25 éditeurs de logiciels. Le marché global de l’assurance qualité peut se découper en quatre grands domaines :

Les solutions d’analyse du portefeuille applicatif

Cette catégorie regroupe les solutions centrées sur l’analyse statique. Celles-ci permettent d’identifier des défauts dans le code et l’architecture applicative : structures trop complexes, écarts par rapport aux règles de dénomination, usages inadaptés de certains frameworks, failles potentielles, etc. Elles servent notamment à évaluer la lisibilité et la qualité du code, ainsi que le degré de complexité et l’évolutivité des applications. Peut-on facilement en assurer la maintenance ? Présentent-elles des risques ? Quelques solutions sont spécialisées dans la détection des vulnérabilités.

Les solutions d’automatisation des tests

Dans cette catégorie figurent les solutions permettant de créer, d’enregistrer et de gérer des scénarios de test, puis de les rejouer lors des campagnes de tests. Certaines solutions ont une couverture très large, couvrant à la fois les tests unitaires et les tests globaux, les tests fonctionnels et de performance, ou encore la non-régression, et fonctionnant sur un grand nombre de plates-formes. D’autres sont plus ciblées, visant une technologie précise (Java, .Net, C/C++, ERP, SOA…) ou un type de test (tests unitaires, intégration continue, sécurité…). Les solutions les plus avancées permettent également de suivre différentes échelles de mesure de la qualité des applications. On parle alors d’industrialisation des tests.

Les solutions pour les tests de performances

Il existe un certain nombre de solutions destinées uniquement aux tests de performances. Aussi avons-nous souhaité en faire une catégorie à part. Ces solutions sont capables de mesurer les performances des applications quand celles-ci s’exécutent : temps de réponse, consommation des ressources réseau, mémoire ou CPU, etc. Certains de ces outils permettent également de réaliser des tests de charge, qui ont pour objectif d’évaluer la charge maximum que peut soutenir une application sans voir ses performances se dégrader en deçà de certains seuils. Ces solutions doivent être capables de simuler un nombre important de requêtes sur des périodes courtes.

Les solutions d’analyse des performances en production

Dans cette catégorie se situent les solutions analysant les performances des applications en production. Ce type d’outil sort du registre des tests à proprement parler, mais il est utile pour améliorer la qualité des applications en production. À la différence des solutions de supervision classiques, ces logiciels ne sont pas destinés à la surveillance en temps réel des différents composants d’un système d’information, mais au suivi du ressenti des utilisateurs. En effet, l’environnement opérationnel est parfois bien plus complexe que les environnements de développement et de préproduction, notamment quand il s’agit d’applications très distribuées, voire en mode cloud computing. Il s’avère alors très difficile de savoir précisément quelles sont les performances en bout de chaîne. Les solutions situées dans cette catégorie tiennent compte de cette complexité. Elles sont capables d’analyser finement le comportement des applications et celui des différents maillons de la chaîne, pour remonter jusqu’aux causes des problèmes de performances. Les plus avancées de ces solutions sont capables de prendre en compte la diversité des navigateurs, terminaux, configurations, réseaux et points d’accès existant dans le monde.

 

Les quatre segments du marché de l’assurance qualité logicielle
 Types de solutions  Pour quoi faire ?
 Solutions d’analyse du portefeuille applicatif  Identifier des défauts dans le code et l’architecture applicative
 Solutions d’automatisation des tests  Créer, enregistrer et gérer des scénarios de test
 Solutions pour les tests de performances  Examiner les performances des applications quand celles-ci s’exécutent
Solutions d’analyse des performances en production  Améliorer la qualité des applications en production
 Source : Assurance qualité des logiciels, panorama des solutions, 25 éditeurs étudiés, Best Research, avril 2012, 74 pages.