Comment activer la qualité à grande vitesse en 5 étapes
Par Marc Lambert
9 février 2018
5 min lire
Agile et DevOps sont souvent vendus comme un moyen de rendre les logiciels plus rapides avec moins de ressources. Mais qu'en est-il de la qualité? Dans cet article, découvrez comment activer la qualité à grande vitesse avec les tests continus.
Tout le monde veut des logiciels de meilleure qualité, plus rapidement. Les exigences des équipes de développement de logiciels modernes sont immenses - de la concurrence accrue et des pressions du marché, à une fonctionnalité et une complexité accrues, à des attentes plus élevées en matière de qualité, de sécurité et de fiabilité des produits. Les méthodes de développement agiles sont souvent recherchées en raison de la promesse d'être plus réactives au changement et de mieux répondre aux exigences des clients.
Mais les DevOps agiles et (plus récemment) sont souvent vendus comme un moyen de rendre les logiciels plus rapides avec moins de ressources, bien que ce ne soit pas l'intention. De manière réaliste, avec jusqu'à 70% des projets informatiques qui échouent ou n'atteignent pas leurs objectifs, les équipes de développement intelligentes cherchent à améliorer leurs pratiques de développement afin de pouvoir non seulement réussir un projet, mais également créer un processus reproductible pour les futures itérations et produits. . Dans cet article, nous parlerons de la manière d'atteindre l'agilité nécessaire aux méthodes agiles et itératives, tout en ne réalisant pas seulement un produit final, mais un produit qui atteint et dépasse les objectifs de qualité et de sécurité.
Les tests continus sont la réponse à la qualité à la vitesse
Il s'avère que les tests sont à la fois le problème et la solution pour obtenir une meilleure qualité plus rapidement. Dans un processus agile, de nombreuses étapes de développement peuvent être réduites afin de créer des éléments de fonctionnalité raisonnables à concevoir et à mettre en œuvre; cependant, l'intégration de la nouvelle fonctionnalité est risquée et la portée des tests n'est pas claire. Comme j'en ai parlé dans un post précédent, les tests sont l'une des principales raisons pour lesquelles les équipes logicielles ont du mal à adopter des méthodes agiles. Les équipes perdent l'agilité qu'elles recherchent parce qu'elles s'enlisent trop ou pas assez dans les tests.
Les tests continus sont considérés comme une solution aux problèmes rencontrés par les équipes logicielles adoptant le DevOps et le développement agile. Wikipédia définit les tests continus comme «… Le processus d'exécution de tests automatisés dans le cadre du pipeline de livraison de logiciels pour obtenir une rétroaction immédiate sur les risques commerciaux associés à une version de logiciel candidate.» Malgré la définition simple, la mise en œuvre de tests continus et leur optimisation au fil du temps est une tout autre chose, et c'est ce sur quoi je vais me concentrer ici aujourd'hui.
Transformez votre cornet de crème glacée en pyramide
L'idéal pyramide de test définit où il est préférable d'investir du temps et des efforts dans un projet. Dans la pyramide idéale, vous investissez votre temps et vos efforts précieux dans une suite complète de tests unitaires à la base de la pyramide, qui est soutenue par des tests d'API et de services, et au sommet de la pyramide, un nombre beaucoup plus restreint de systèmes. et les tests basés sur l'interface graphique.
Cependant, cette pyramide est souvent inversée en ce que nous appelons le cornet de crème glacée. Les équipes consacrent trop de temps et d'efforts à des tests d'interface graphique fragiles et complexes au niveau du système qui nécessitent la mise en œuvre et l'intégration de toutes les fonctionnalités, ce qui entraîne des tests qui ne peuvent pas être exécutés en continu au cours des premières étapes du SDLC. La clé pour réussir des tests continus est de faire fondre le cornet de crème glacée et se concentrer sur la création de tests unitaires et API automatisés qui peut être exécuté en continu pendant que les développeurs implémentent la nouvelle fonctionnalité.
Les cinq étapes pour activer la qualité à la vitesse avec des tests continus
1. Construire une base de tests unitaires
Construisez une base de tests unitaires en automatisant le processus de création, d'exécution et de maintenance des tests. Ce n'est qu'en facilitant la création et la maintenance du travail des tests unitaires que les équipes de développement adopteront des tests unitaires à l'échelle du projet pour tous les composants.
Adoptez l'automatisation des tests pour la création, l'exécution et la gestion des tests, en élargissant la suite de tests unitaires actuelle pour inclure autant de code du produit que possible.
Pour en savoir plus sur les tests unitaires : www.parasoft.com/solutions/unit-testing/
2. Évitez de vous fier à des tests centrés sur l'interface utilisateur de fin de cycle
Évitez de vous fier à des tests de fin de cycle, fragiles et centrés sur l'interface utilisateur, qui finissent par être les plus longs et les plus coûteux à diagnostiquer et à corriger. Plutôt que de vous concentrer sur l'automatisation de tous les scénarios de tests manuels, investissez dans une base solide de tests unitaires et API pour vous assurer que l'architecture qui communique avec l'interface utilisateur est solide en premier lieu.
Bien que les tests au niveau du système soient toujours importants et nécessaires, ils ne devraient pas être les premiers. Ce n’est pas non plus le moment de découvrir les problèmes critiques d’architecture, de performances et de sécurité. Les équipes logicielles peuvent réduire leur dépendance à ces tests d'interface utilisateur et de système en construisant une base solide de tests unitaires et d'API. En suivant les autres recommandations ici, la plupart des systèmes doivent être bien éprouvés avant le début des tests au niveau du système.
Assurez-vous également d'utiliser l'analyse statique pour analyser l'ensemble de la base de code, y compris le code hérité et tiers, afin de détecter les bogues et les vulnérabilités de sécurité que les tests pourraient manquer. L'analyse statique est également importante pour l'application des normes de codage des projets.
3. Comprendre la couverture du code pour l'ensemble de la pyramide de test
Comprenez la couverture du code de haut en bas sur toute la pyramide, ainsi que la traçabilité des exigences / user stories, car sans elle, les équipes de développement ne savent pas vraiment ce qui a été testé et ce qui ne l'a pas été. De plus, ne pas comprendre la couverture des tests signifie ne pas savoir quoi tester à chaque niveau de la pyramide, ce qui signifie que même des changements mineurs nécessitent tellement de tests que cela enlève tout le processus. Voir mon article précédent sur tests basés sur le changement.
4. Passez à la gauche avec la virtualisation des services
Tirez parti de la virtualisation des services des dépendances des applications pour permettre des tests d'API automatisés beaucoup plus tôt dans le cycle de vie du développement. Une automatisation accrue et une détection plus précoce des bogues sont essentielles à la réussite. Pousser les tests API plus tôt permet de découvrir les aspects critiques du système, tels que les performances et la solidité architecturale. Il s'agit également d'une phase importante pour les tests de sécurité.
5. Tirez parti de l'analyse d'impact du changement pour accélérer Agile
Accélérez le développement agile avec une analyse de l'impact du changement sur une base par construction pour comprendre les détails du risque que chaque nouvelle itération a introduit. Les analyses fournies par l'analyse d'impact du changement sont essentielles pour que les tests se concentrent uniquement sur ce qui doit absolument être testé plutôt que sur l'approche du fusil de chasse utilisée autrement.
Ce n'est que grâce à une prise de décision intelligente et basée sur les données que de véritables tests continus sont viables. Centrer l'équipe de développement sur l'ensemble minimum de tests pour garantir une couverture adéquate à chaque itération est la clé pour ramener l'agilité à l'agilité méthodes de développement.
La voie de l'amélioration
Sans surprise, la meilleure façon de commencer est de passer en revue la pyramide de test, puis d'évaluer où se situe actuellement un projet. Existe-t-il une base solide de tests unitaires automatisés exécutés par build? Y a-t-il autant d'API de produits testées avec automatisation que possible? La virtualisation est-elle utilisée? Les tests reposent-ils sur une suite complexe de tests manuels d'interface utilisateur qui ne peuvent pas être exécutés tant que le système n'est pas presque terminé? Le chemin vers l'amélioration est basé sur la construction d'une pyramide de test appropriée, l'automatisation, la collecte et l'analyse de données.
Les nombreuses pressions exercées sur les équipes de développement de logiciels modernes rendent difficile la création de produits dans les délais et selon les spécifications. De nouvelles méthodes de développement telles que le développement agile ont aidé les équipes à se concentrer sur la conception des bonnes choses pour le client, mais les projets sont toujours en retard et sujets aux erreurs, les tests étant un aspect clé du développement qui continue de nuire aux méthodes de développement modernes. Pour obtenir des améliorations significatives, adoptez une base solide de tests unitaires automatisés et effectuer des tests d'API tôt et souvent via la virtualisation des services. Et n'oubliez pas que les résultats des tests s'améliorent considérablement avec l'utilisation des données de analyses de test logiciel avancées pour piloter la gestion des tests.