Fermer

août 19, 2021

L'importance de maintenir vos tests automatisés


Maintenir vos tests automatisés les rendra plus faciles à modifier et à exécuter en douceur, maintenant et à long terme. Voici quelques moyens simples de maintenir votre suite de tests dans des conditions optimales sans passer beaucoup de temps.

Les avantages d'une suite de tests automatisés sont clairs. Il vous aidera, vous et votre organisation, à créer de meilleurs logiciels rapidement et efficacement. Vous détecterez les régressions dès qu'elles seront introduites dans la base de code, ce qui vous aidera à éliminer rapidement les bogues. Il donne aux développeurs et aux tests une marge de manœuvre pour travailler sur des tâches de grande valeur au lieu d'éteindre des incendies. Cela permet également aux équipes de gagner en confiance pour livrer de nouvelles fonctionnalités afin de ravir les clients fréquemment. Cependant, la plupart de ces avantages diminuent rapidement si vous ne prenez pas le temps de maintenir vos tests.

La maintenance est une tâche inévitable lorsque vous disposez d'une suite de tests automatisés. À moins que votre base de code ou les systèmes sous-jacents qui l'exécutent ne changent jamais, vous devrez vous assurer que vos tests continuent de bien fonctionner à mesure que l'application évolue. Le travail effectué pendant le processus de développement logiciel, comme l'ajout de nouvelles fonctionnalités ou la correction de bogues récemment découverts, affectera d'une manière ou d'une autre vos tests existants. L'équipe peut avoir besoin de créer de nouveaux tests ou d'ajuster ceux qui existent déjà en raison de ces modifications.

Que votre équipe ait besoin de valider que les nouvelles fonctionnalités fonctionnent comme prévu ou de s'assurer que les bogues corrigés ne reviennent pas vous hanter au pire moment possible, vous devrez passer du temps à maintenir votre automatisation de test en parfait état. Négliger vos tests est un moyen infaillible de ralentir le travail de chacun dans le présent et le futur. . Les tests qui ne sont pas mis à jour augmentent la possibilité de faux positifs, des flocons et des tests lents. Étant donné que personne dans l'équipe ne passe suffisamment de temps à s'occuper des tests, il est presque impossible de savoir comment résoudre les problèmes, alors ils continuent de se produire. Un test échoué devient deux, puis trois et ainsi de suite.

Pour aggraver les choses, ces problèmes s'aggravent lentement jusqu'à ce qu'ils finissent par atteindre un point où personne dans l'équipe ne veut les résoudre. La confiance dans la suite de tests diminue, les tests deviennent de moins en moins précieux et deviennent un fardeau pour l'équipe. Inévitablement, ces efforts sont abandonnés et tout le monde perd les avantages de l'automatisation des tests.

D'un autre côté, une suite de tests bien entretenue aide les développeurs et les testeurs à faire face aux inévitables problèmes d'automatisation des tests qui surviennent occasionnellement. Les tests deviennent plus faciles à suivre, à mettre à jour et à développer. Si un test commence à échouer en raison d'un faux positif ou d'une anomalie, il faut moins de temps pour isoler et résoudre le problème avec des tests à jour. Si une exécution de test devient soudainement plus lente, une suite de tests bien structurée permet de localiser plus facilement le coupable et d'éliminer le goulot d'étranglement.

Les suites de tests organisés offrent des bonus supplémentaires dans toute l'organisation. Les tests peuvent devenir une excellente source de documentation sur l'application que la suite teste. Les nouveaux développeurs et testeurs peuvent voir de première main comment l'application est censée se comporter, ce qui les aide à s'intégrer beaucoup plus rapidement au projet. La suite de tests peut également aider à guider la stratégie de test de l'équipe, car elle offre de meilleures opportunités pour déterminer où concentrer l'attention de l'équipe. Par exemple, il est plus facile de repérer les lacunes dans la couverture des tests ou les endroits où les tests manuels sont mieux adaptés.

Plus important encore, le maintien de vos tests apportera une valeur immédiate, et sa valeur augmentera à mesure que l'application mûrit et que des tests plus pertinents sont ajoutés. Lorsque les développeurs et les testeurs n'ont pas à s'inquiéter de casser quelque chose lorsque l'application change, ils peuvent utiliser cette énergie pour se concentrer sur la production d'un excellent travail. Les équipes doivent s'efforcer de faire fonctionner leurs suites de tests comme une machine bien huilée, fonctionnant aussi efficacement et efficacement que possible. et tâche épuisante. La meilleure façon de garder un haut niveau de qualité dans votre stratégie d'automatisation est d'avoir un état d'esprit de maintenabilité tout en travaillant sur les tests. Vous pouvez vous en sortir rapidement avec la construction de votre suite de tests et gérer la maintenance plus tard, mais c'est toujours plus gérable pendant que vous êtes au milieu du travail. La création d'une suite de tests organisée dès le départ économisera d'innombrables heures et beaucoup de frustration à l'avenir. Les conseils suivants vous aideront à organiser et à ranger votre travail de test.

Testez uniquement ce dont vous avez besoin

L'une des erreurs les plus courantes commises par les testeurs, en particulier ceux qui découvrent l'automatisation des tests, est d'essayer d'automatiser tout ce qui est possible. C'est une idée tentante. Après tout, la raison d'automatiser les tests n'est-elle pas pour nous donner le temps et l'espace pour nous concentrer sur d'autres travaux importants ? Cependant, ce n'est pas parce que vous pouvez automatiser la plupart de vos cas de test que vous devriez. Certains cas de test ne fournissent pas suffisamment de valeur pour investir le temps nécessaire à l'écriture et à la mise à jour.

Chaque nouveau cas de test ajouté à une suite de tests automatisés introduit des risques et des exigences de maintenance supplémentaires. Les nouveaux tests peuvent souvent échouer en raison de changements fréquents dans la base de code, et ils augmentent le temps d'exécution total de l'exécution du test. Plus vous avez de tests, plus vous et votre équipe aurez besoin de temps pour le maintenir. Vous voudrez garder votre suite de tests légère pour tirer le meilleur parti de chaque exécution sans vous enliser dans des cas de test inutiles.

Si vous n'êtes pas clair sur ce que votre équipe doit se concentrer sur les tests, soyez à l'affût des ces endroits dans l'application testée :

  • Les sections qui se cassent souvent pour les utilisateurs : Concentrer vos efforts de test sur les sections avec un taux de défauts plus élevé peut augmenter la qualité de votre application plus rapidement que tout autre domaine.

  • Scénarios difficiles à tester manuellement : Les scénarios de test qui nécessitent de nombreuses étapes pour tester manuellement sont sujets aux erreurs humaines et peuvent bénéficier de tests automatisés.

  • Domaines à haute valeur commerciale qui doivent être solides : Tout scénario qui doit fonctionner de manière fiable à tout moment doit avoir une couverture de test automatisée pour alerter l'organisation des problèmes dès qu'ils apparaissent.

Séparez vos scénarios en cas de test plus petits

Certains types de tests, comme l'intégration -finir tests, vous permettent d'automatiser de longs scénarios avec plusieurs étapes du début à la fin. Il est intéressant de créer un cas de test qui couvre beaucoup de terrain pour votre application. Bien que le but de ces types de tests soit de passer par des flux plus longs et de valider la façon dont les différentes pièces du puzzle fonctionnent ensemble, des tests trop longs rendront votre suite de tests peu fiable et difficile à corriger.

Chaque étape franchie par un test automatisé a le potentiel d'échouer, que ce soit à cause d'un changement dans l'application ou d'un problème inattendu. Plus d'étapes dans un seul cas de test le rendent plus susceptible d'échouer quelque part en cours de route. Étant donné que ces tests gèrent souvent trop de responsabilités en un seul endroit, déterminer ce qui s'est mal passé devient une tâche fastidieuse qui vous fera regretter d'avoir écrit un si long scénario de test en premier lieu.

Au lieu d'écrire quelques longs tests. qui en font trop, concentrez-vous sur le fait de garder vos tests petits et spécifiques. Des tests plus courts sont plus faciles à déboguer et à corriger lorsque des problèmes surviennent. Il aide également à organiser votre code de test en segments clairs de fonctionnalités, afin que vous puissiez facilement ajouter de nouveaux cas de test et gérer ceux qui existent déjà. Par exemple, Telerik Test Studio vous permet de séparer vos cas de test dans des dossiers, ce qui vous permet de visualiser les différentes zones que vous testez en un coup d'œil. C'est un moyen très simple de visualiser votre hiérarchie de test et de savoir où vous en êtes avec votre couverture.

Gardez votre code de test AU SEC

Une compétence essentielle pour les ingénieurs en automatisation de test est de minimiser et d'éliminer toute redondance dans la base de code. La plupart des développeurs de logiciels connaissent le Principe DRY—Ne vous répétez pas—qui stipule qu'il ne doit y avoir qu'une seule source de vérité dans un système. Malheureusement, les équipes ne traitent souvent pas le code de leurs tests de la même manière qu'elles le feraient pour le code de production, car il ne s'agit pas d'une fonctionnalité destinée aux clients.

Lorsque vous avez les mêmes lignes de code écrites dans plusieurs sections de votre base de code, cela ' ralentira considérablement votre équipe. C'est également l'une des principales causes d'une suite de tests peu fiable et non évolutive. Un seul changement à un endroit nécessitera que la même modification se produise à d'autres endroits. Étant donné que vous devez garder une trace de tous les domaines que vous devez modifier, il est probable que vous oubliiez de faire tous les ajustements nécessaires, ce qui vous ferait perdre du temps à réparer les tests défectueux. Pour éviter les maux de tête et les tracas causés par la duplication de code, vous devez créer votre suite de tests en gardant à l'esprit le principe DRY.

Quelques modèles largement utilisés pour l'automatisation des tests sont le modèle d'objet de page et les modèles de fabrique de données. Ces modèles vous permettent de définir des fonctionnalités communes d'une suite de tests, telles que la définition de sélecteurs de page, la génération de données de test ou la consolidation de fonctionnalités répétées, en un seul endroit, que vous pouvez référencer dans vos scénarios. Si, par exemple, vous devez mettre à jour un sélecteur ou modifier certaines données de test, modifiez-le à l'endroit unique où il est défini, et toute votre suite de tests reprendra les modifications. En plus de vous permettre de mettre à jour vos tests plus rapidement et avec beaucoup moins de risques, ces modèles peuvent également rendre vos tests plus lisibles et plus faciles à suivre.

La plupart des frameworks et outils d'automatisation des tests modernes fournissent des moyens intégrés pour mettre en œuvre ces pratiques dès le départ. . Par exemple, Telerik Test Studio dispose d'un excellent Element Repository pour stocker les localisateurs utilisés dans votre suite de tests, que vous pouvez utiliser dans plusieurs tests, le tout sans avoir à vous répéter. Examinez les meilleures pratiques pour votre pile de tests et tirez-en parti lors de la création de votre suite de tests. Ces modèles et techniques permettront à votre équipe d'économiser des tonnes de temps à rechercher des tests défectueux en raison de la duplication. Toutes les bases de code changent fréquemment pour plusieurs raisons, comme la mise en œuvre de nouvelles fonctionnalités dans le système ou l'élimination de sections qui n'apportent plus de valeur au client. La plupart des changements effectués dans une application ne dureront pas éternellement, et il en va de même pour l'automatisation des tests. Les tests peuvent éventuellement survivre à leur utilité et alourdir le reste des tests, se présentant souvent sous la forme d'une suite de tests lente et cassée.

De nombreux développeurs et testeurs n'aiment pas supprimer les tests de leur base de code, en particulier les tests qu'ils ont écrits. . Ils ressentent une certaine proximité avec la chose qu'ils ont créée et ne veulent pas lâcher prise, même lorsqu'il est clair que cela ne fonctionne plus ou n'est plus nécessaire. Au lieu d'effacer la saleté, ils font des choses comme commenter le code ou marquer le test comme en attente, pensant que le test servira un objectif à l'avenir. Alerte spoiler : Une fois qu'un test n'a plus de valeur ou ne fonctionne plus comme prévu, il revient rarement à son ancien état de valeur.

Voici quelques bons candidats à la suppression de votre suite de tests :

  • Tests couvrant des scénarios redondants : Si vous avez des cas de test qui passent par des flux plus longs, vous n'aurez peut-être pas besoin de tests dédiés qui sont déjà couverts dans ces scénarios. Par exemple, si certains scénarios passent par l'authentification d'un utilisateur, vous n'avez pas besoin d'avoir beaucoup de cas de test dédiés pour l'authentification uniquement.

  • Tests qui couvrent les fonctionnalités bientôt obsolètes : Si votre équipe prévoit de supprimer ou supprimer des fonctionnalités sous peu, c'est une bonne idée de commencer à supprimer les tests pour ces sections car ils ne sont plus essentiels.

  • Fonctionnalités de faible valeur qui peuvent être testées manuellement : De nombreuses applications ont des sections qui, bien que nécessaires pour vérifier occasionnellement, ne sont pas aussi essentiels pour s'assurer qu'ils fonctionnent à tout moment. Certains exemples sont la soumission de formulaires « Contactez-nous », en veillant à ce que les pages statiques se chargent correctement et en vérifiant le contenu pour l'internationalisation et la localisation.

Le fait de devoir supprimer d'anciens tests n'est pas un signe que le travail que vous avez effectué n'a jamais été utile. Cela signifie souvent que le système testé a évolué et que la suite de tests devrait avoir évolué avec ces changements. Si l'application sous-jacente a changé de façon permanente et a cassé quelque chose, ou si votre équipe a trouvé de meilleurs moyens de tester certaines fonctionnalités, vous n'avez plus besoin de ces tests. Dans presque tous les cas, chaque fois que vous remarquez qu'un test automatisé n'est plus utile, supprimez-le de votre base de code et ne regardez pas en arrière. Cela améliorera la vitesse et la maintenance de votre suite de tests et vous apportera une tranquillité d'esprit. les erreurs que les équipes font avec leurs efforts d'automatisation. Lorsque les calendriers et les délais entrent en jeu, les organisations préfèrent garder le cap, ce qui les amène à ignorer les problèmes de la suite de tests pour le plaisir de franchir leurs jalons. Alors que l'équipe peut penser qu'elle accélère son travail, la réalité est qu'elle fait le contraire. Un mauvais code commence à glisser dans la base de code et la qualité commence à baisser, ralentissant leurs efforts futurs plus que s'ils avaient pris le temps de résoudre rapidement les problèmes.

Plus un problème est ignoré dans votre environnement, plus il est difficile. devient à réparer. Le domaine de la criminologie a une théorie appelée La théorie des fenêtres brisées qui explique comment le fait de laisser des infractions mineures sans surveillance, comme le vandalisme et le vagabondage, conduit à des crimes plus graves. La théorie vient d'observations où un bâtiment avec une fenêtre cassée a entraîné le bris des autres fenêtres de la structure. Le livre The Pragmatic Programmer a popularisé cette théorie dans le développement de logiciels. Les auteurs ont souligné que le fait de laisser un mauvais code ou des implémentations inefficaces dans une base de code peut « pourrir » le code plus rapidement qu'autre chose. . Réparer un test bancal que quelqu'un a présenté à la suite de tests il y a quelques jours est beaucoup plus facile que de réparer le même test six mois plus tard. Vous aurez probablement oublié les détails du scénario de test et devrez passer des heures à revenir à un état où vous aurez le contexte approprié pour résoudre le problème. Cela conduit également à la paresse et à la procrastination – une fois que l'équipe décide qu'il est normal de vivre avec une suite de tests cassée, il est presque impossible de revenir sur cette mentalité.

Si votre équipe a l'habitude d'ignorer les problèmes de la suite de tests tout en ajoutant de nouveaux fonctionnalité, même en cas d'échec des tests, mettez-y un terme dès que possible. Établissez un flux de travail où la correction des tests défectueux est prioritaire sur l'ajout de nouveaux. Cela ne signifie pas que lorsqu'un test échoue, l'équipe doit tout abandonner pour résoudre le problème. Tant que quelqu'un prend la responsabilité de ramener rapidement la construction à un état stable au lieu de négliger le problème, cela aidera à garder votre suite de tests en ordre. Le but n'est pas de laisser des fenêtres « cassées » trop longtemps.

Résumé : Une suite de tests maintenable améliorera toujours la qualité de votre travail.

Une suite de tests saine commence par une maintenance à long terme à l'esprit. Peu importe le temps que vous passez à travailler sur l'automatisation de vos tests, vous et votre équipe devez toujours maintenir vos efforts à mesure que l'application testée évolue et mûrit. On peut parfois avoir l'impression que le temps passé à organiser et à nettoyer les tests est une perte de temps, mais cela en vaut toujours la peine. Les équipes qui ne prêtent pas attention à l'écriture de tests maintenables dès le début se retrouveront bientôt à passer plus de temps à réparer les tests défectueux ou à abandonner l'intégralité de la suite de tests.

La maintenance de votre suite de tests automatisée ne doit pas nécessairement prendre beaucoup de temps. effort. Vous pouvez maintenir vos tests en excellent état en établissant de bonnes pratiques au fur et à mesure que vous avancez dans votre stratégie d'automatisation des tests. Concentrez-vous sur le test de ce qui est essentiel et supprimez les tests lorsqu'ils ne sont plus utiles. Organisez vos tests en groupes logiques et évitez les doublons inutiles avec des modèles et des techniques comme le modèle d'objet de page ou les usines. Si votre suite de tests tombe en panne, réparez-la avant de continuer pour éviter que la situation ne s'aggrave.

Garder vos tests simples et ordonnés vous donnera la vitesse et la flexibilité nécessaires pour résoudre les problèmes et améliorer votre suite de tests avec peu ou pas de friction. Personne n'est à l'abri d'échecs de test dus à des applications en constante évolution. Mais avec un peu de soin dès le départ, une suite de tests bien entretenue peut aider votre organisation à développer et à fournir facilement des applications de haute qualité pour les années à venir.




Source link