Simple Science

La science de pointe expliquée simplement

# Informatique# Génie logiciel

L'impact des test smells sur le débogage

Les problèmes de test empêchent les étudiants de déboguer les logiciels efficacement.

― 8 min lire


Les odeurs de test dansLes odeurs de test dansle débogagecode.retardent grave les corrections deLes mauvaises pratiques de test
Table des matières

Dans le développement logiciel, garantir la qualité d'un système est super important. Une des pratiques clés que les développeurs utilisent s'appelle les tests unitaires. Dans ce processus, les développeurs écrivent des morceaux spécifiques de code, appelés Cas de test, pour vérifier si les différentes parties du logiciel fonctionnent correctement. Tout comme le code principal, ces cas de test peuvent aussi souffrir de mauvaises pratiques. Ces mauvaises pratiques sont appelées "test smells". Les test smells peuvent rendre la maintenance du logiciel plus compliquée au fil du temps. Une partie essentielle de la maintenance d'un logiciel est de comprendre comment le code fonctionne. Ça implique de lire le code pour identifier les problèmes ou faire des mises à jour.

Dans cet article, on va explorer l'effet de deux types spécifiques de test smells : Assertion Roulette et Eager Test. On a mené une étude avec des étudiants en informatique pour voir comment ces test smells affectaient leur capacité à déboguer et à résoudre des échecs dans les cas de test. Nos résultats ont montré que quand des test smells étaient présents, les étudiants prenaient plus de temps pour corriger les erreurs dans le code de production principal.

C'est quoi les Test Smells ?

Les test smells désignent de mauvaises pratiques de programmation dans le code de test. Tout comme les code smells, qui indiquent d'éventuels problèmes plus profonds dans le code principal, les test smells peuvent être un signe de mauvaise conception ou de mauvaises décisions dans la suite de tests. Les recherches ont montré que les test smells peuvent avoir un impact négatif sur la maintenabilité d'un système logiciel. Par exemple, les test smells peuvent augmenter les chances de défauts dans le code, accroître le nombre de tests qui échouent pour des raisons floues, et rendre le code plus difficile à lire et à comprendre. Les développeurs peuvent introduire des test smells pour différentes raisons, y compris des erreurs, de la négligence, ou des lacunes dans leurs connaissances en tests.

Pourquoi étudier les Test Smells ?

Bien qu'il y ait eu des études examinant l'impact des test smells sur la compréhension du code, beaucoup de ces études se concentraient sur des étudiants écrivant des cas de test complets ou évaluant de grands systèmes open-source avec lesquels ils n'avaient aucune expérience préalable. Notre étude visait à combler cette lacune en faisant passer aux étudiants en revue des cas de test préécrits qui étaient simples à comprendre et en leur demandant de faire les mises à jour nécessaires dans le code principal afin de corriger les cas de test échoués. Cette approche nous a aidés à avoir une idée plus claire de l'impact réel des test smells sur la compréhension du code.

L'objectif de notre étude était de voir dans quelle mesure les test smells, spécifiquement Assertion Roulette et Eager Test, affectaient la capacité des étudiants à résoudre des problèmes et à déboguer des problèmes dans les cas de test. On voulait savoir si les fichiers de test ayant ces test smells rendaient plus difficile la compréhension du code, donc prenaient plus de temps à résoudre les problèmes.

L'Expérience

On a conçu une expérience contrôlée pour évaluer comment Assertion Roulette et Eager Test affectaient le temps de Débogage des étudiants. On a créé une application de calculatrice simple qui incluait diverses opérations, comme l'addition, la soustraction, la multiplication, et la division. L'application était facile à comprendre pour les étudiants puisqu'ils étaient familiers avec les calculatrices.

On a demandé aux étudiants de travailler sur un ensemble de cas de test correspondant aux fonctions de la calculatrice. On a divisé les étudiants en trois groupes. Un groupe a utilisé une suite de test sans test smells, tandis que les deux autres groupes ont utilisé des suites de tests contenant les test smells Assertion Roulette et Eager Test.

Définitions des Test Smells

  • Assertion Roulette : Ça se produit quand une méthode de test a plusieurs assertions sans explication claire. Quand l'une de ces assertions échoue, il peut être difficile pour le développeur de comprendre pourquoi ça a échoué, car il n'y a pas d'indication claire de ce qui est allé de travers.

  • Eager Test : Ce test smell se produit quand une méthode de test vérifie plusieurs fonctionnalités en appelant plusieurs méthodes. Ça rend difficile de déterminer quelle partie précise du code cause une défaillance, compliquant ainsi le processus de débogage.

Participants et Procédure

On a mené l'expérience avec 96 étudiants de premier cycle dans un cours d'ingénierie logicielle. Avant de participer, les étudiants avaient environ deux ans d'expérience en programmation. Ils ont été répartis en trois groupes selon la suite de tests qu'ils utiliseraient : Non-Smelly, Assertion Roulette, et Eager Test.

La session de laboratoire a duré deux heures. Les étudiants avaient pour tâche d'identifier et de corriger les problèmes soulevés par leurs méthodes de test assignées. Ils ont soumis leur code mis à jour une fois qu'ils avaient terminé. On a enregistré le temps que chaque étudiant a mis pour terminer la tâche, et leurs expériences ont été évaluées à travers un sondage post-session.

Résultats

Impact des Test Smells sur le Temps de Débogage

Nos découvertes ont révélé que les étudiants qui utilisaient des suites de tests avec soit Assertion Roulette soit Eager Test prenaient significativement plus de temps à déboguer leur code par rapport à ceux utilisant la suite de tests Non-Smelly. Plus précisément, les étudiants rencontraient plus de difficultés lorsqu'ils traitaient des test smells, ce qui freiné leur capacité à résoudre les problèmes efficacement.

Expériences des Étudiants

Dans notre sondage post-session, on a demandé aux étudiants à quel point ils trouvaient la tâche de débogage du code facile ou difficile. Un pourcentage plus élevé d'étudiants utilisant la suite de tests Non-Smelly a trouvé le processus simple. En revanche, ceux confrontés à l'odeur Assertion Roulette ont exprimé plus de défis, plusieurs étudiants disant qu'ils avaient du mal à corriger les erreurs en raison du manque de clarté dans les assertions.

Le groupe Eager Test a également rencontré quelques défis, mais pas autant que le groupe Assertion Roulette. Les étudiants ont rapporté que le fait de passer d'une méthode à l'autre les rendait dépassés et retardait leur débogage.

Discussion

La présence de test smells, en particulier Assertion Roulette et Eager Test, a considérablement augmenté le temps que les étudiants passaient à corriger les problèmes. Nos observations indiquent que les test smells compliquent le processus de débogage. Par exemple, avec Assertion Roulette, les multiples assertions échouées ont rendu difficile pour les étudiants de localiser où était le problème réel. En conséquence, ils ont dû dépenser plus d'efforts à trier les assertions pour trouver la source de l'échec.

D'un autre côté, Eager Test a créé de la confusion à cause des multiples méthodes testées dans une seule méthode de test. Cela a augmenté la charge cognitive sur les étudiants car ils devaient garder une trace de plusieurs parties du code de production, ce qui a finalement ralenti leur temps de débogage.

Recommandations pour l'Éducation

Étant donné nos résultats, il est important que les éducateurs soulignent l'importance d'écrire des cas de test propres et sans test smells. Apprendre aux étudiants à éviter des pratiques comme avoir plusieurs assertions dans une seule méthode de test ou tester plusieurs méthodes en une seule fois peut aider à améliorer leur compréhension du code.

Leçons Clés Apprises

  1. Qualité des Cas de Test : Il est essentiel d'instruire les étudiants sur la façon d'écrire des cas de test de haute qualité. Comprendre les dommages causés par les test smells devrait faire partie de leur formation.

  2. Utilisation d'Outils : Il existe des outils qui peuvent automatiquement détecter les test smells. Les éducateurs devraient encourager les étudiants à utiliser ces outils pour évaluer la qualité de leurs cas de test.

  3. Recherche sur les Test Smells : Plus d'investigation est nécessaire sur d'autres types de test smells qui peuvent exister dans différents langages de programmation. Les connaissances acquises peuvent être transmises aux étudiants pour mieux les préparer aux défis de la programmation dans le monde réel.

Conclusion

Notre étude met en évidence l'impact négatif des test smells, spécifiquement Assertion Roulette et Eager Test, sur la capacité des étudiants à déboguer du code efficacement. Les étudiants prenaient significativement plus de temps à résoudre des problèmes lorsqu'ils étaient confrontés à ces test smells. Il est crucial que la communauté académique se concentre sur ce problème pour mieux préparer les étudiants à leur future carrière dans le développement logiciel.

À l'avenir, on compte explorer d'autres test smells et leur impact. On espère continuer à améliorer l'éducation dans les pratiques de tests et de développement logiciel, menant finalement à des ingénieurs logiciels plus efficaces et performants.

Source originale

Titre: Do the Test Smells Assertion Roulette and Eager Test Impact Students' Troubleshooting and Debugging Capabilities?

Résumé: To ensure the quality of a software system, developers perform an activity known as unit testing, where they write code (known as test cases) that verifies the individual software units that make up the system. Like production code, test cases are subject to bad programming practices, known as test smells, that hurt maintenance activities. An essential part of most maintenance activities is program comprehension which involves developers reading the code to understand its behavior to fix issues or update features. In this study, we conduct a controlled experiment with 96 undergraduate computer science students to investigate the impact of two common types of test smells, namely Assertion Roulette and Eager Test, on a student's ability to debug and troubleshoot test case failures. Our findings show that students take longer to correct errors in production code when smells are present in their associated test cases, especially Assertion Roulette. We envision our findings supporting academia in better equipping students with the knowledge and resources in writing and maintaining high-quality test cases. Our experimental materials are available online: https://wajdialjedaani.github.io/testsmellstd/

Auteurs: Wajdi Aljedaani, Mohamed Wiem Mkaouer, Anthony Peruma, Stephanie Ludi

Dernière mise à jour: 2023-03-07 00:00:00

Langue: English

Source URL: https://arxiv.org/abs/2303.04234

Source PDF: https://arxiv.org/pdf/2303.04234

Licence: https://creativecommons.org/licenses/by/4.0/

Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.

Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.

Plus d'auteurs

Articles similaires