Pourquoi voudriez-vous automatiser un test?

Pourquoi automatiseriez-vous un test? Quels avantages tirons-nous de l'automatisation des tests?

Très souvent, lorsque des personnes s'impliquent dans des tests automatisés, leur objectif principal passe de la conception de bons tests à la garantie que le code automatisé peut réellement exécuter et exécuter le test.

Pendant le sprint, lorsque les membres de l'équipe sont sous pression pour livrer les histoires dans un laps de temps limité, il n'y a généralement pas assez de temps pour tester tous les scénarios prévus, sans parler d'écrire des scripts de test automatisés pour tester la nouvelle fonctionnalité.


Nous pouvons nous enliser dans les détails du travail, coder, réviser, exécuter et oublier la raison principale Pourquoi nous automatisons en fait un test!



Pourquoi automatisons-nous un test?

C'est l'une des questions que je pose lorsque j'interroge des candidats pour un rôle d'automatisation de test et à ma grande surprise, de nombreux candidats semblent manquer la raison principale et la plus importante d'automatiser un test. Certaines des réponses que j’obtiens des candidats sont assez crédibles, mais ce n’est toujours pas la réponse que je recherche. Certaines des réponses que j'obtiens à la question ci-dessus sont:


Augmenter la couverture des tests

Cette réponse est tout à fait valable, mais comment définir la couverture? Si nous avons 100 tests, comment pouvons-nous mesurer le pourcentage de couverture?

Avec une pratique d'automatisation de test mature en place, vous pourriez exécuter des centaines de tests dans un laps de temps relativement court.

Pour cette raison, nous pouvons créer plus de cas de test, plus de scénarios de test et tester avec plus de données d'entrée pour une fonctionnalité donnée et ainsi gagner plus de confiance que le système fonctionne comme prévu.

Cependant, dans les tests et en particulier l'automatisation des tests, plus de tests ne signifie pas vraiment une meilleure qualité ou plus de chances de trouver des bogues.


Dans un article de Martin Fowler, où il discute Couverture de test , il mentionne

Si vous faites d'un certain niveau de couverture un objectif, les gens essaieront de l'atteindre. Le problème est que les chiffres de couverture élevés sont trop faciles à atteindre avec des tests de faible qualité. Au niveau le plus absurde que vous ayez AssertionFreeTest . Mais même sans cela, vous obtenez de nombreux tests à la recherche de choses qui tournent rarement mal, ce qui vous empêche de tester les choses qui comptent vraiment.

Gagner du temps

Cette réponse est également vraie car vous pouvez passer un temps précieux à faire des tests exploratoires intéressants pendant l'exécution des tests automatisés. Cependant, pour une toute nouvelle fonctionnalité qui a été développée, il pourrait en fait prendre plus de temps pour écrire des scripts automatisés que pour tester la fonctionnalité manuellement au premier instant.

Il est donc important de noter que pour gagner du temps grâce aux tests automatisés, cela nécessite un effort initial accru dans la création de scripts pour les tests automatisés, en s'assurant qu'ils sont révisés par le code et qu'il n'y a pas de hoquet dans l'exécution des tests automatisés.


Trouver plus de bogues

Cette réponse m'inquiète parfois car je n'ai jamais vu de métriques suggérant qu'il y avait plus de bogues détectés par l'automatisation que par les tests manuels / exploratoires. Les tests automatisés vérifient généralement toute régression dans le système après la mise en œuvre d'un nouveau code.

Il y a toujours plus de chances de trouver des bogues dans les nouvelles fonctionnalités que dans les fonctionnalités existantes. De plus, il y a d'autres raisons pourquoi les tests automatisés ne parviennent pas à détecter les défauts

Remplacer les testeurs manuels

C'est probablement la pire réponse que j'ai entendue en ce qui concerne la raison pour laquelle nous automatisons un test. Il existe une distinction claire entre ce que fait un testeur manuel et ce qu'un test automatisé vérifie. Les tests automatisés ne sont pas des tests, ils vérifient les faits.

Afin de pouvoir automatiser un test, nous devons connaître le résultat attendu afin de pouvoir vérifier le résultat valide ou non valide. C'est ce qui nous donne vrai ou faux, positif ou négatif, réussir ou échouer.


Les tests, quant à eux, sont un exercice d'investigation, où nous concevons et exécutons des tests simultanément. Beaucoup de choses peuvent se comporter différemment là où seul un testeur humain attentif peut le remarquer.

De bons testeurs manuels seront toujours nécessaires en raison de l'état d'esprit différent et de la capacité à remettre en question le système.



Améliorer la qualité

Bien que les tests automatisés soient capables de nous donner des commentaires rapides et de nous alerter sur la santé d'une application, afin que nous puissions annuler toute modification de code qui a cassé le système, les tests automatisés n'améliorent pas la qualité à eux seuls. Le fait que nous ayons une automatisation de test mature en place ne garantit pas qu'aucun bogue ne s'échappe en production.

Nous pouvons améliorer la qualité en veillant à ce que les bonnes pratiques soient suivies du début à la fin d'un cycle de développement. La qualité n'est pas une réflexion après coup; il doit être cuit dès le début. Il ne suffit pas de s'appuyer sur des tests automatisés pour se faire une idée de la qualité du produit.




Alors, quelle est la principale raison pour laquelle nous automatisons un test?

La réponse courte est répétabilité . Nous automatisons un test car nous devons exécuter les mêmes tests encore et encore. Voudriez-vous automatiser un test si vous ne l'exécutiez qu'une seule fois et que vous l'oublieriez? Bien sûr que non! Le temps et les efforts que vous consacrez à l'automatisation du test, vous auriez pu l'exécuter manuellement.

Désormais, par définition, nous automatisons les tests répétables, c'est-à-dire les tests de régression, que nous devons exécuter fréquemment.

Alors, la prochaine fois, lorsque vous souhaitez automatiser un test, prenez du recul et pensez à quelle fréquence êtes-vous susceptible d'exécuter ce test? Vaut-il vraiment la peine d'automatiser le test?