Rejoignez-nous le 30 avril : dévoilement de Parasoft C/C++test CT pour l'excellence en matière de tests continus et de conformité | En savoir plus

Comment la pyramide d'automatisation des tests est-elle utilisée dans le développement de logiciels?

Tête de Wilhelm Haaker, directeur, ingénierie de solutions, fonctionnel chez Parasoft
6 avril 2021
6 min lire

Voici une discussion approfondie sur la façon dont la pyramide d'automatisation des tests peut être déployée dans le développement de logiciels et les solutions que Parasoft fournit pour chaque phase de la pyramide des tests.

La pyramide d'automatisation des tests, créée par Mike Cohn et popularisée par Martin Fowler, a changé notre façon de penser les tests de logiciels. Il s'agit d'un guide sur les types et le nombre de chaque type de test à effectuer. La pyramide d'automatisation des tests a contribué à créer des tests plus efficaces et a abouti à logiciel plus fiable étant remis aux clients.

Avantages de la pyramide d'automatisation des tests

La plupart des avantages de l'automatisation des tests sont évidents:

  • Économies de coûts et de temps.
  • Meilleure précision éliminant les erreurs humaines.
  • Capacité à répéter, réutiliser et adapter les tests à vos besoins logiciels.

Mais pourquoi la pyramide d'automatisation des tests est-elle si importante dans les tests logiciels automatisés?

L'automatisation seule ne vous mènera pas là où vous voulez aller dans le développement de logiciels avec un calendrier et un budget serrés. Les ressources et le temps seront encore limités.

Tests continus pour DevOps : évoluer au-delà de la simple automatisation

Comment pouvons-nous concevoir les types appropriés de tests automatisés au bon volume afin d'intensifier les tests avec les pratiques de développement? La pyramide de test est un excellent guide pour faire exactement cela!

Vous trouverez ci-dessous un aperçu de la pyramide de test et comment chaque phase de la pyramide est utilisée dans le développement logiciel.

Traversée de la pyramide d'automatisation des tests

La pyramide des tests est une excellente métaphore visuelle qui décrit les différentes couches de test et la quantité de tests à effectuer dans chaque couche.

Triangle bleu séparé en 3 parties: le bas est l'unité, le milieu est le service, le haut est E2E

Tests unitaires sont en bas et représentent les tests les plus granulaires, dont vous devriez en avoir beaucoup.

La couche suivante de la pyramide a couche de service ou tests d'intégration. C'est là que vous commencez à tester la manière dont vos composants logiciels interagissent les uns avec les autres, qu'il s'agisse d'intégrations internes ou externes.

La test de bout en bout (E2E) est le plus complexe et teste le logiciel dans son ensemble pour s'assurer qu'il fonctionne comme prévu du début à la fin.

Garder le volume de vos suites de tests dans chaque couche aligné sur cette métaphore visuelle d'une pyramide vous permet de faire évoluer les tests pour aboutir à un logiciel plus fiable. Voyons pourquoi.

Tests unitaires

Un test unitaire est effectué sur une petite portion de code, généralement une fonction/méthode ou jusqu'à une classe, pour déterminer si elle remplit correctement sa fonction. Les caractéristiques de ces tests sont simples et rapides, c'est pourquoi vous voulez un grand pourcentage de vos tests dans cette couche. Lorsqu'un test unitaire échoue, les développeurs sont alertés et peuvent rapidement déterminer quelles sont les conséquences involontaires de leurs modifications de code, ce qui constitue un filet de sécurité essentiel pour modifier le code en toute confiance.

Malgré tous leurs avantages, les tests unitaires ne sont pas la finalité des tests. Avec des tests à portée aussi étroite qui utilisent des doubles de test (tels que des simulacres et des stubs), vous perdez la vérification de la façon dont de grandes parties du logiciel fonctionnent ensemble.

Si vous souhaitez vérifier les exigences de l'entreprise, il est difficile de faciliter les tests unitaires et, comme le dit l'expression, «vous ne pouvez pas voir la forêt pour les arbres». Cependant, une politique de mappage et de suivi des tests unitaires aux user stories au fur et à mesure de leur travail peut aider à identifier les risques associés à certaines fonctionnalités lorsque l'instabilité des tests unitaires échoue.

Comment Parasoft aide avec les tests unitaires

Parasoft Test C / C ++ détecte rapidement les défauts et économise de l'argent en intégrant les tests C et C ++ dans le développement de logiciels pour les applications intégrées critiques pour la sûreté et la sécurité.

Parasoft Jtest s'intègre étroitement à votre écosystème de développement et à votre pipeline CI/CD pour un retour intelligent en temps réel sur votre Tests Java et les progrès en matière de conformité. Jtest met en évidence la couverture du code, utilise une analyse approfondie du code pour faciliter la création de JUnit et identifie les problèmes de sécurité et de fiabilité afin que les parties prenantes puissent comprendre la qualité des livrables et prendre des décisions éclairées sur le risque de publication.

Tests d'intégration

Les tests d'intégration sont le niveau intermédiaire de la pyramide de tests standard. Là où les tests unitaires sont très granulaires, à ce niveau, nous utilisons des tests qui commencent à vérifier que des packages de code plus volumineux fonctionnent correctement ensemble.

Les tests d'intégration sont plus importants que jamais en raison de la popularité des architectures de systèmes distribués avec des microservices et des déploiements dans le cloud. L'époque du développement d'applications monolithiques est révolue et de nombreux composants logiciels déployés indépendamment de nombreux systèmes modernes s'intègrent les uns aux autres via leurs interfaces exposées, souvent via REST ou un courtier de messages comme Apache Kafka ou ActiveMQ. Les systèmes hérités sont lentement découplés et divisés en nouveaux composants logiciels plus faciles à mettre à l'échelle et à tester, bien qu'il s'agisse d'un déploiement plus complexe.

Fitch offre une couverture et une qualité de code élevées pour les applications de microservices

Ces tests sont plus lents à exécuter que les tests unitaires et nécessitent que votre logiciel soit déployé dans un environnement de test, mais ils peuvent détecter des problèmes délicats que les tests unitaires manquent. Et ils sont essentiels pour tester efficacement votre logiciel par rapport aux tests de bout en bout ou au niveau du système.

En raison de la nature d'une plus grande portée de test, le temps de diagnostic et de résolution des problèmes augmente. Cependant, comme pour les tests unitaires, les tests d'intégration peuvent être répétés jusqu'à ce que tous les tests soient réussis et que le pipeline de construction soit prêt à passer (ou à revenir dans) des tests de bout en bout, décrits ci-dessous.

Dans le développement logiciel aujourd'hui, les tests d'intégration sont un domaine très sous-testé car ils peuvent être considérés comme le «terrain d'entente» entre les tests de développement et les tests d'assurance qualité. Les doigts peuvent être pointés sur qui devrait tester cette couche (alerte spoiler… la réponse est LES DEUX). Il faut un testeur très expérimenté avec les outils appropriés pour effectuer correctement les tests d'intégration.

Comment Parasoft aide avec les tests d'intégration

Parasoft SOAtest fournit des outils de test d'API et de services Web entièrement intégrés qui automatisent tests d'API fonctionnels et non fonctionnels. Les équipes peuvent rationaliser les tests automatisés avec des capacités avancées de création de tests sans code pour les applications avec plusieurs interfaces (API REST et SOAP, microservices, architectures réactives, bases de données, systèmes hérités, etc.).

Les outils réduisent le risque de failles de sécurité et de pannes de performances en transformant les artefacts de tests fonctionnels en équivalents de sécurité et de charge. L'exécution de test intelligente facilitée par une analyse de différence binaire des changements dans le logiciel packagé entre les versions garantit que les versions intra-journalières testent ce qui doit être testé tout en ignorant le reste. Ces optimisations et réutilisation, ainsi que la surveillance continue des API pour le changement, permettent des tests plus rapides et plus efficaces.

Parasoft Virtualiser va au-delà de la simulation de base et du stubbing pour créer un environnement de simulation plus robuste pour les API et les services. Il déploie un «jumeau numérique» de votre environnement de test à utiliser comme bac à sable pour le développement de partenaires ou comme point de terminaison virtuel pour les tests internes.

La virtualisation permet aux testeurs et aux développeurs de simuler des services ou des données lorsque l'accès est limité ou peu fiable. Adopter la virtualisation des services entraîne également des économies directes sur les coûts d'infrastructure tandis que la portée de l'automatisation des tests augmente. Les résultats peuvent être facilement intégrés à d'autres pratiques de test et visualisés pour une détection et un débogage plus rapides des défaillances avec une interface intuitive sans code.

Créez, déployez et gérez des environnements de test virtuels avec Parasoft Virtualize

Tests de bout en bout

Les tests de bout en bout testent la plus grande quantité de code (comme dans l'ensemble de l'application logicielle, de bout en bout). Ils utilisent des données et un environnement de test pour simuler le fonctionnement réel du logiciel. C'est le plus coûteux à entretenir et le plus lent à exécuter. Étant donné que cela teste des applications entièrement assemblées, c'est également la phase de test la plus difficile pour diagnostiquer les problèmes (yikes).

Mais c'est le plus simple à concevoir car il suit les exigences métier du logiciel. Un analyste commercial ou un propriétaire de produit moins technique pourrait définir ce que ces tests doivent faire. Cela peut expliquer en partie la popularité des pratiques BDD dans l'automatisation des tests.

Au fur et à mesure que les organisations mûrissent leur processus de développement logiciel et commencent à automatiser les tests, beaucoup tombent dans un piège où la plupart de leurs tests entrent dans cette catégorie. Finalement, ils ont rencontré un goulot d'étranglement.

Le développement adopte les pratiques Agile et DevOps et s'accélère. Pourtant, les tests sont toujours en retard, manquant les tests de nouvelles fonctionnalités. Et les tests ont généralement un impact entravé sur la capture qualité du logiciel problèmes à mesure que le rythme de développement s'accélère. C'est pourquoi la pyramide des tests est si précieuse à mesure que les équipes se modernisent.

Vous ne pouvez pas suivre le rythme sans automatisation. Plus important encore, vous ne pouvez pas suivre le rythme à moins d'avoir un plan solide qui vous montre comment vous devriez tester. C'est là que les organisations commencent à valoriser les «tests d'interface utilisateur allégés» comme mantra, car elles voient de première main comment leur stratégie de test ne peut plus évoluer avec le rythme du développement.

Si vous voyez votre organisation piégée dans ce paradigme, commencez à rechercher des opportunités de refactoriser les tests fonctionnels de la couche d'interface utilisateur à la couche de service. Concentrez-vous sur les tests d'interface utilisateur pour tester la logique côté client, le parcours utilisateur, les chemins critiques et la certification multiplateforme.

Comment Parasoft aide avec les tests de bout en bout

Parasoft Sélénique est un ajout léger pour Testeurs de sélénium qui applique l'apprentissage automatique pour réparer automatiquement les tests instables ou obsolètes souffrant de DOM HTML en constante évolution et de temps de réponse imprévisibles.

Exécutez vos tests d'interface utilisateur Selenium en toute confiance, sachant que la capacité d'auto-réparation de Selenic avec des stratégies améliorées de localisation et de condition d'attente détectera les tests instables, les récupérera à la volée pendant l'exécution et activera les flux de travail de résolution rapide de l'IDE pour réduire le fardeau de maintenance de votre Tests d'interface utilisateur. Selenic fournit également une extension Chrome pour enregistrer les actions de l'interface utilisateur et générer du code Selenium WebDriver en Java qui suit le Modèle d'objet de page des meilleures pratiques Selenium motif.

Pyramide de test Parasoft

Alors que la pyramide d'automatisation des tests fournit un modèle pour une stratégie d'automatisation des tests efficace, vous ne pouvez pas tester la qualité dans une application. La pyramide doit être construite sur une base solide d'analyse approfondie du code axée sur l'identification et la prévention des problèmes de fiabilité et de sécurité. La pyramide de test Parasoft, illustrée ci-dessous, montre comment Parasoft aide à tester des solutions pour chaque niveau.

Triangle divisé en 5 parties. Les 4 du bas sont bleus de bas en haut: 1) analyse de code: fiabilité + sécurité; 2) tests unitaires; 3) tests API; 4) tests d'interface utilisateur automatisés. La pointe est en blanc et déconnectée du reste de la pyramide: test manuel.

Les résultats à tous les niveaux peuvent être consolidés dans le tableau de bord de reporting, d'analyse et de conformité de Parasoft, Parasoft DTP, offrant une vue unifiée de la qualité des logiciels et de la couverture des tests. Votre équipe obtient des informations pour analyser l'état de votre candidature et déterminer les prochaines étapes pour atteindre vos objectifs.

Quelle solution de qualité continue répond le mieux à vos besoins ?

Article connexe + ressources