Découvrez comment la solution Parasoft Continuous Quality permet de contrôler et de gérer les environnements de test pour fournir des logiciels de haute qualité en toute confiance. Inscrivez-vous pour la démo >>

BLOG

Augmentez le retour sur investissement des tests unitaires grâce à la création automatique de tests unitaires

Augmentez le retour sur investissement des tests unitaires grâce à la création automatique de tests unitaires Temps de lecture : 6 minutes
La technologie de création automatique de tests unitaires de Parasoft Jtest supprime les obstacles aux tests unitaires, automatisant les aspects banals des tests unitaires, y compris la création, l'isolement, la simulation et la maintenance.

La plupart des équipes de développement conviendront que, même si elles n'aiment pas cela, les tests unitaires sont en fait extrêmement précieux. Malgré les nombreux outils qui aident à la création manuelle de tests, la création et la maintenance de tests unitaires nécessitent encore beaucoup d'efforts manuels, chronophages et souvent angoissants avant d'ajouter une logique métier à un test. En tant que tel, malgré l'intention de réaliser de bons tests unitaires, les équipes de développement effectuent généralement le minimum de tests unitaires requis, ou les ignorent complètement.

Les développeurs ont parlé

Une récente enquête auprès des clients a révélé, de manière quelque peu attendue, que la création de tests, la simulation / l'isolement et la maintenance sont des problèmes clés qui entravent le succès des tests unitaires. La figure 1 montre les résultats de cette enquête, montrant les principales préoccupations que les développeurs identifient avec tests unitaires en Java.

Figure 1: Les résultats de l'enquête montrent les principaux domaines de préoccupation (pourcentage) qui découlent des tests unitaires.

Pour répondre à ces principaux sujets de préoccupation, nous pouvons nous tourner vers des tests logiciels automatisés. Dans ce blog, je vais vous montrer comment utiliser Jtest Parasoft pour automatiser l'exécution des tests et la collecte de données, ainsi que créer automatiquement des tests unitaires, pour gagner du temps et de l'énergie au moment de la création des tests. Parasoft Jtest's technologie de création automatique de tests unitaires configure le cadre de test, instancie les objets et configure les simulations pour les objets appropriés et les appels de méthode utilisés par la méthode testée. Il crée des JUnits réguliers, effectuant tout le travail banal afin que les développeurs puissent se concentrer sur l'application de l'intelligence humaine et de la logique à leurs tests.

Avantages des tests unitaires et pourquoi les développeurs l'évitent toujours

Les tests unitaires sont itératifs et, dans les processus agiles, les tests unitaires ont de bons antécédents en matière d'amélioration des résultats des projets. Et bien sûr, il est bien prouvé que les tests plus tôt dans le cycle de vie sont le meilleur moyen de détecter et d'éliminer ultérieurement les bogues coûteux et chronophages au niveau du système. Plus précisément, voici quelques avantages clés des tests unitaires:

  • Fournir de l'agilité pour les processus agiles: Les processus agiles dépendent de suites de tests efficaces, répétables et automatisées afin de garantir que chaque itération ne s'enlève pas dans un cycle de test «big bang». Le succès de l'agilité et du DevOps dépend beaucoup de la création par les équipes de développement de suites de tests pouvant être exécutées efficacement, ainsi que du test du plus grand nombre de fonctionnalités possible.
  • Amélioration de la qualité et de la sécurité: Les équipes logicielles comprennent que les tests sont le seul moyen de s'assurer que le logiciel fait ce qui est nécessaire, mais les équipes ne parviennent souvent pas à faire suffisamment de tests ou à le faire trop tard dans le cycle de développement. La sécurité, en particulier, doit être intégrée dans une application dès les premiers stades, de sorte que les tests de sécurité doivent être effectués le plus tôt possible.
  • Réduire les coûts à long terme: Les bogues logiciels détectés dans les logiciels publiés peuvent être 1000 fois plus coûteux à corriger qu'au cours du développement. Les bogues trouvés aux premiers stades de codage des tests unitaires sont beaucoup moins chers que ceux trouvés plus tard. L'investissement à court terme dans l'automatisation des tests et l'infrastructure de test unitaire est rentable en termes de qualité des produits, de sécurité et de livraison à temps.

Malheureusement, quels que soient ces avantages, les développeurs sont toujours aux prises avec les tests unitaires, malgré le désir d'obtenir de meilleurs résultats. Ces luttes, également illustrées par les résultats de l'enquête ci-dessus, sont les suivantes:

  • La création de tests est un travail supplémentaire et souvent fastidieux: Naturellement, les tests unitaires sont un travail supplémentaire et sont souvent considérés comme l'aspect le moins souhaitable de la programmation. Créer une suite de tests complète tout en essayant de maintenir les objectifs et les délais du projet sont deux pressions concurrentes pour les équipes de développement.
  • La maintenance des tests coûte cher: Tout comme le code, les tests unitaires nécessitent une maintenance. Tout changement de code peut introduire des changements dans les tests associés. De plus, les tests qui échouent en raison de modifications de la base de code peuvent ne pas être liés, ce qui entraîne une instabilité de la suite de tests. Une maintenance supplémentaire crée «le double du travail» dans l'esprit de nombreux développeurs.
  • Les unités de simulation et d'isolation sous test sont difficiles et prennent du temps: Il est essentiel d'isoler les unités testées, mais cela nécessite de se moquer des dépendances, ce qui peut prendre du temps.

Les équipes de développement logiciel doivent résoudre ces problèmes avec la création, l'isolation et la maintenance des tests si elles veulent profiter des avantages d'un test unitaire approfondi, et la solution est l'automatisation. Parasoft Jtest's outil de création automatique de tests unitaires fournit l'assistance nécessaire à la création et à la maintenance des tests, tout en travaillant dans l'IDE du développeur et en tirant parti des cadres de test et de simulation existants.

Réduisez la charge grâce à la création automatique de tests

La création de tests unitaires est fastidieuse et détourne l'attention des parties les plus intéressantes d'un projet. Le code lui-même est répétitif et nécessite souvent autant d'efforts que le code testé, et en plus de cela, le code de test unitaire lui-même nécessite une correction et un débogage, comme n'importe quel code. Heureusement, les tests unitaires se prêtent bien à l'automatisation, et le guidage automatique d'un outil de test unitaire peut grandement simplifier la création de tests, réduire la quantité de débogage et de correction, et collecter des résultats et des métriques pour alimenter les analyses de projet.

Aller au-delà de l'IDE

De nombreux IDE fournissent des assistants de création de tests unitaires pour JUnit, par exemple, mais ne fournissent pas de «contenu» pour terminer le processus. Les assertions doivent être définies manuellement, et si des cadres de simulation sont utilisés, une quantité importante de codage manuel est nécessaire. Au lieu de cela, Parasoft Jtest fournit une assistance contextuelle en temps réel dans l'IDE du développeur. Avec la création automatique de tests unitaires, le «contenu» manquant dans les tests unitaires squelettes simples est rapidement et efficacement complété, car vous tirer parti de votre outil de test unitaire pour effectuer les opérations suivantes:

  • Crée un cadre de test, instancie des objets et configure les objets et méthodes fictifs appropriés
  • Effectue une analyse d'exécution de l'exécution de l'automatisation des tests pour mettre en évidence les valeurs d'objet qui ont changé pendant le test et recommander des assertions pour la vérification de ces valeurs.
  • Identifie les appels de méthode qui doivent être simulés afin de mieux isoler le code sous test
  • Détecte les ressources système créées mais non libérées après la fin du test, créant potentiellement un environnement de test instable
  • Recueille la couverture du code et d'autres métriques

Pour résoudre ce problème, regardons un exemple. Ici, Jtest ParasoftL'assistant de test unitaire est appelé avec un IDE pour créer des tests paramétrés:

L'outil crée le code de test unitaire suivant, auquel point le développeur complète les paramètres selon les besoins:

Pour créer des cas de test pour différentes valeurs de paramètres, l'assistant de test unitaire de Parasoft Jtest fournit un assistant de cas de test:

Et c'est parti.

Réduisez la complexité moqueuse

Les tests unitaires impliquent l'isolement de l'objet testé, ce qui nécessite une bonne quantité de travail s'il existe de nombreuses dépendances. Même avec des frameworks moqueurs tels que Mockito or PowerMock, un codage manuel important est encore nécessaire. Avec un outil d'assistant de test automatisé, vous pouvez détecter les dépendances et remplir automatiquement les détails requis par le framework.

L'outil lui-même analyse le code testé, détecte automatiquement les dépendances et fait des recommandations au développeur.

Par exemple, nous exécutons ici le test unitaire suivant de la classe IWorkspaceClass:

Les dépendances sont détectées lors de l'exécution et l'outil recommande de se moquer des dépendances qu'il a trouvées:

La sélection de «Mock It» avec l'outil génère le code de simulation nécessaire avec le test unitaire. Une fois ce code généré, il peut être personnalisé pour représenter la logique correcte selon les besoins. La détection automatisée des dépendances et la création ultérieure de code de simulation réduit considérablement la quantité de codage manuel, et potentiellement source d'erreurs, nécessaire pour simuler des objets.

Maintenance de la suite de tests réduite grâce à l'automatisation

La maintenance des suites de tests chevauche une grande partie du travail requis pour la création de tests, comme la création de nouveaux tests, la modification des tests en fonction de la logique sous-jacente, la simulation des dépendances, l'exécution des tests et la vérification. Obtenir de l'aide de l'assistant de test unitaire de Parasoft Jtest pendant la maintenance des tests est tout aussi précieux que lors de la création, car il fournit des informations mises à jour sur les résultats d'analyse d'exécution collectés pendant l'exécution des tests. Par exemple, une nouvelle dépendance dans un objet en cours de test est détectée lors de l'exécution et l'outil invite le développeur à la gérer.

Il est tout aussi essentiel au cours de cette phase de s'assurer que les affirmations sont toujours valides. L'assistant de test d'unité Parasoft Jtest fournit des recommandations qui peuvent détecter les changements dans le code et mettre à jour les assertions pour refléter la nouvelle logique métier.

Maximiser les avantages des outils existants

Les développeurs Java qui effectuent déjà des tests unitaires utilisent probablement JUnit, et éventuellement un cadre d'assertion pour leur projet, tel que Mockito ou PowerMock. Les outils d'automatisation des tests doivent tirer parti de ces outils existants, car le remplacement d'un investissement existant dans les tests unitaires éliminerait tout gain de coût et de temps. L'assistant de test unitaire de Parasoft Jtest s'intègre parfaitement à ces outils existants, ce qui est essentiel.

Conclusion

Les tests unitaires présentent des avantages évidents, et bien que la plupart des équipes de développement s'en rendent compte, beaucoup sont bloquées par l'effort de création et de maintenance des tests. L'utilisation des technologies de tests unitaires automatisés de Parasoft Jtest aidera les utilisateurs à éliminer ces obstacles, en automatisant les aspects banals des tests unitaires, y compris la création, l'isolement, la simulation et la maintenance. Pour accélérer l'adoption, Jtest Parasoft exploite l'investissement existant de l'équipe de développement dans les cadres de test et de simulation, et redonne du temps au développeur tout en redonnant de la qualité au produit.

Automatisez la création de tests JUnit et commencez à aimer les tests unitaires

Écrit par

Kapil Bhandari

Kapil est chef de produit chez Parasoft et se concentre sur Parasoft Jtest. Kapil a occupé plusieurs postes techniques allant d'ingénieur logiciel à chef de développement, avant de passer à la gestion de produit.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.