Dev
Les fondamentaux du passage aux tests automatisés des logiciels
Par La rédaction, publié le 06 octobre 2016
Souhaitable parce qu’elle permet de fournir des logiciels de grande qualité à un rythme plus soutenu, l’automatisation des tests doit être réalisée habilement au risque de produire plus de problèmes qu’elle en résout. Elle doit être traitée comme un projet de développement logiciel, avec la nécessité de développer et de gérer le code d’automatisation et ses composants afférents.
1• FIXER UN ENSEMBLE CLAIR D’OBJECTIFS
Alors que l’objectif fondamental des tests est de détecter les défauts en amont et de réduire les risques pour la qualité, il convient ici de définir un ensemble d’objectifs mesurables. Ceux-ci peuvent inclure l’accélération du processus de codage et de test, la répétabilité et l’amélioration de la durée des cycles pour les tests de régression, une plus grande efficience des tests, etc. Le choix des outils en sera facilité, de même que la transition depuis des processus essentiellement manuels. Les parties prenantes comprendront mieux la démarche et adhéreront au projet.
2• LES RETOMBÉES NE SERONT PAS FORCÉMENT IMMÉDIATES
Certains constituants des tests manuels pourront être réutilisés, mais pas tous. Du temps, de la recherche, du matériel, des logiciels et des ressources informatiques supplémentaires seront nécessaires. De même qu’une adaptation des compétences des testeurs. Les programmeurs devront être là pour combler les éventuelles lacunes dans les compétences en automatisation des tests. Au fil du temps, les rôles deviendront plus spécialisés. En sensibilisant l’équipe dès le début, vous réduirez les inquiétudes quant aux rôles et pratiques.
3• TOUT NE PEUT ET NE DOIT PAS ÊTRE AUTOMATISÉ
Tous les scénarios ne conviennent pas à l’automatisation des tests. La pertinence de l’automatisation est à déterminer d’après plusieurs facteurs : fréquence nécessaire des tests, complexité générée par l’interaction avec des systèmes externes, encapsulation éventuelle d’anciens codes (qui approchent pour certains de leur fin de vie), etc. Il s’agit donc de trouver le bon équilibre.
4• DES TESTS MANUELS RESTERONT NÉCESSAIRES
Si presque tous les types et niveaux de tests peuvent être automatisés, les tests exploratoires et de convivialité sont des exemples de tests qui nécessitent l’intervention et l’intelligence humaines. Les applications mobiles sont un autre cas particulier : le test de fonctions spécifiques de l’appareil (données de localisation, du capteur environnemental, etc.) nécessitera des tests manuels sur le terrain.
5• L’AUTOMATISATION BÉNÉFICIE À PLUSIEURS TYPES DE TEST
La plupart des équipes commencent leur effort d’automatisation avec des tests fonctionnels de l’interface utilisateur, mais comme ses composants ont tendance à changer fréquemment, ces tests sont chers à élaborer, lents à exécuter et fragiles à maintenir. Il est souhaitable de s’intéresser à d’autres types de tests : les tests statiques ; les tests de vérification de build (intégration continue) ; les tests unitaires ou de composants ; les API et services web ; ou encore les tests de performances, de charge et de sécurité.
6• PRÉVOYEZ DES EFFORTS DE CONCEPTION
Les pratiques médiocres en conception des tests produisent des tests difficiles à comprendre et à maintenir, délivrant des résultats complexes à interpréter ou de fausses défaillances longues à examiner. L’automatisation de tels tests peu fiables générera un manque de confiance et un rejet de la part des équipes. Des tests conçus selon les bonnes pratiques seront simples, constamment restructurés et gérables. Les bibliothèques d’objets et de modules de tests s’enrichiront avec le temps et permettront d’accélérer l’automatisation des nouveaux tests.
7• ADAPTEZ LES OUTILS AUX COMPÉTENCES DES ÉQUIPES ET AUX OBJECTIFS
Aucun fournisseur ne propose une solution unique qui répondra à tous les besoins. La plupart des équipes agiles retirent de la valeur d’une combinaison d’outils commerciaux et open source, tandis que d’autres préfèrent une approche personnalisée d’écriture de scripts pour automatiser les tâches nécessaires, générer les données de tests ou piloter d’autres outils. Avant de s’équiper, il convient d’examiner la maturité du processus actuel de tests et de comprendre les exigences des équipes en regard des objectifs à atteindre par l’entreprise.
8• ASSUREZ-VOUS DE LA STABILITÉ DE VOTRE BASE DE CODE
S’agissant des tests automatisés, l’application doit être bien développée et suffisamment stable pour supporter les exigences des tests, en particulier dans le contexte des projets agiles où le résultat de chaque itération est potentiellement livrable. Programmeurs et testeurs doivent collaborer pour organiser le code de tests en fonction de l’objectif de l’application.
Maritess Sobejana, Joachim Herschmann
Analystes, Gartner