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 >>
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.
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.
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:
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:
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.
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.
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:
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.
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.
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.
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.
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.
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.