Les testeurs devraient-ils automatiser leur travail?


9

Nous essayons de configurer notre processus de test. Nous nous demandons si nos testeurs devraient développer des tests de régression automatisés, ou si les développeurs devraient le faire.

Et qu'en est-il des autres types de tests automatisés? Les testeurs devraient-ils les développer?


Commencez simplement à les appeler "développeurs en test" et l'ambiguïté est résolue.
Edward Strange,

@Crazy Mais n'est-ce pas plus cher d'avoir 2 équipes de développeurs?
Jader Dias

5
Plus cher que quoi? Vendre un produit mal testé? Goulot d'étranglement du processus de développement parce que les développeurs écrivent des tests au lieu du produit?
Edward Strange

Réponses:


12

Je dis que les testeurs devraient développer les tests automatisés - ils ont l'approche "paire extérieure d'yeux" du code, et repèreront (ou devrait-ce juste "peut-être"?) Des bogues auxquels vous n'avez pas pensé, et encore moins gérer .

De plus, leur compréhension des exigences fonctionnelles pourrait être plus élevée que celle des développeurs - donc assis entre la connaissance hardcore de bas niveau du programmeur, mais pas aussi élevée que celle du BA.


Mais ne pouvaient-ils pas simplement demander aux développeurs d'écrire ce scénario de test?
Jader Dias

1
Pour les raisons que j'ai mentionnées ci-dessus, les développeurs en sauraient beaucoup plus sur l'implémentation interne et aborderaient le logiciel différemment de celui provenant de l'extérieur.
James Love

Je ne vois pas comment une implémentation de scénario de test pourrait différer d'une personne à l'autre.
Jader Dias

5
@Jader, vous souhaitez que des personnes différentes écrivent les tests automatisés par rapport au code original. Sinon, les tests seront biaisés pour fonctionner avec le code tel qu'il a été écrit.
Marcie

3
Au cours des deux dernières semaines, un développeur m'a aidé à écrire des montages pour son code. C'est un très bon développeur, mais il manque définitivement certaines nuances de couverture pour son code simplement parce qu'il ne pense pas à la couverture en profondeur sur une base régulière. Si les développeurs aident avec les tests, demandez à un testeur de revoir leur travail.
Ethel Evans

11

Si vous pouvez l'automatiser, automatisez-le.

Laissez les testeurs libres de trouver les choses que vous ne pouvez pas automatiser. Et lorsqu'ils trouvent un nouveau bogue, s'il peut être automatisé et ajouté aux tests automatisés, ajoutez-le.


Mais pourquoi devraient-ils et pas seulement les développeurs?
Jader Dias

@JaderDias, comme cela a été mentionné, les testeurs ne devraient pas avoir de préjugés préconçus sur le code qu'ils tentent de tester
CaffGeek

3

À mon avis, les développeurs et les testeurs sont responsables de différents types de tests.

Le développeur, tout en écrivant la logique, devrait également écrire des tests unitaires et d'intégration. Cela permettra au développeur de s'assurer que ce qu'il a écrit jusqu'à présent fonctionne comme prévu. En outre, ces tests seront toujours disponibles pour que le développeur s'exécute lorsqu'ils apporteront des modifications futures. Une fois la logique terminée, le développeur peut être assuré que ce qui est écrit fonctionne car il comprend les spécifications et peut passer au testeur.

À partir de ce moment, le testeur doit être responsable de l'écriture de tests à l'échelle du système qui garantissent que la logique métier fonctionne comme prévu.

Étant donné que les développeurs sont souvent beaucoup trop attachés au code, les testeurs devraient être en mesure d'aider à nettoyer les tests des développeurs, mais pas l'inverse.


Vous êtes curieux de connaître votre dernière phrase - vous ne pensez pas que les développeurs peuvent contribuer aux tests fonctionnels? Que se passe-t-il si les testeurs décrivent la structure de test et identifient les cas de test et que les développeurs aident uniquement à la mise en œuvre?
Miss Cellanie

1
Je pense que j'imagine des testeurs qui sont des développeurs à part entière et qui peuvent écrire leurs propres tests. Leur travail consisterait à parcourir les exigences et à parler à l'utilisateur pour identifier les cas de test, puis rédiger les cas. Cela laisse les développeurs de logique libres d'être proches de la logique lorsqu'ils l'écrivent. Cela laisse également les testeurs assez éloignés de la «possession» de la logique pour qu'ils puissent essayer de la briser avec objectivité et sans remords.
Taylor Price

2

D'après mon expérience, la façon dont un testeur configure et exécute automatiquement un cas de test diffère en fait de la façon dont un développeur le fait. Les testeurs réfléchiront davantage à la manière de tirer le maximum d'informations du scénario de test, à exécuter rapidement les tests, à maintenir les tests maintenables, etc. Plus important encore, les testeurs verront des nuances de couverture de test que les développeurs manqueront.

Si les ressources de développement de test sont faibles, les développeurs peuvent aider - mais un testeur doit examiner attentivement son travail. Les développeurs devraient travailler sur les fixtures et les outils de test avant d'écrire les cas de test réels, et les développeurs ne devraient jamais écrire de cas de test pour leur propre code. Le fait que les développeurs aident les tests a des avantages - cela expose les développeurs à d'autres éléments du produit, et les tests peuvent les aider à devenir de meilleurs développeurs. Cependant, tout comme le travail d'un développeur junior ne se passerait jamais d'un examen du code, le travail d'AQ d'un développeur devrait obtenir un examen d'AQ par quelqu'un ayant plus d'expérience dans les tests.

Modifié pour ajouter: je suis un SDET avec 5 ans d'expérience. Je travaille avec de grands développeurs avec plus de 10 ans d'expérience chacun, et j'ai récemment travaillé avec eux pour surmonter un goulot d'étranglement.


0

Une chose que j'aimerais vraiment voir, ce sont des outils d'automatisation solides pour les testeurs qui leur permettront d'enregistrer efficacement leur progression via un script de test, puis de permettre à ce script d'être exécuté automatiquement à l'avenir. Surtout si cela facilite également l'exécution du même script sur différentes versions du système d'exploitation sans que le testeur doive les parcourir toutes à la main.

Malheureusement, certainement pour le produit sur lequel je travaille, aucun des outils sur le marché ne fait tout à fait l'affaire. Mais cela vaut la peine de garder cela à l'esprit et de regarder ce qui est disponible sur le marché au cas où il y aurait quelque chose qui fonctionnerait pour ce que vous faites.


Visual Studio 2010 (Premium ou Ultimate, je ne me souviens pas lequel) a quelque chose qui enregistre les actions d'écran pour automatiser les tests d'interface utilisateur. J'ai vu une démonstration de cela par Andrew Woodward MVP lors d'une démonstration de UI Testing SharePoint, des trucs incroyables.
James Love

Record & play a à juste titre une assez mauvaise réputation. Il a tendance à être assez fragile et difficile à entretenir. Oui, comme un rapide & sale "Je dois l'exécuter sur 4 centres de données différents, je ne veux pas le garder pour une utilisation future", c'est bien, mais c'est horrible à maintenir parce que vous vous retrouvez avec des tonnes de répétitions. Un petit élément change - et soudain, vous devez mettre à jour 100 tests. Douloureux. Il ne remplace en aucun cas le test manuel, qui a tendance à être conçu avec l'hypothèse qu'un humain remarquera toutes ces autres choses que vous n'avez pas vérifiées explicitement.
testerab

Ce qui serait assez doux serait quelque chose qui pourrait amener les choses à un niveau légèrement inférieur à celui de déplacer le pointeur et de cliquer sur la souris, de sorte que vous enregistrez réellement le bouton sur lequel vous avez cliqué plutôt que l'endroit où le clic s'est produit. Cela rendrait ce type de test plus résistant et plus pratique. Lorsque vous devez exécuter chaque script sur, par exemple, neuf versions différentes de Windows, c'est un cauchemar de devoir le faire manuellement sur chacune d'elles.
glenatron

L'identification du bouton par identifiant plutôt que par emplacement est parfaitement possible avec certains outils. L'enregistrement et la lecture de scripts réalisés de cette façon sont encore horribles à maintenir, malheureusement - cela ne résout pas le problème de la répétition. Je ne pense pas que l'on puisse s'éloigner de la nécessité de concevoir soigneusement l'automatisation de vos tests, si vous voulez réellement conserver des scripts ou en créer plus d'une douzaine. Avez-vous pensé à utiliser quelque chose de mot-clé comme Robot Framework avec Auto-It?
testerab

0

Une distinction essentielle qui est vraiment important ici est la suivante: sont vos testeurs simplement vérifier , ou sont - ils à l' essai ?

Ce billet de blog de Michael Bolton l' explique mieux, mais essentiellement: cherche-t-il simplement à confirmer le comportement, ou cherche-t-il à trouver des problèmes avec le système?

Je pense qu'il est également utile de considérer les Quadrants Agile Testing (Brian Marick les a décrits à l'origine, mais je les ai rencontrés dans le livre "Agile Testing" de Lisa Crispin et Janet Gregory: même si vous ne suivez pas une méthodologie de développement Agile, je pense que le la distinction entre les tests qui critiquent le produit et les tests qui soutiennent l'équipe est vraiment utile lorsque l'on considère l'automatisation et que l'on essaie de développer un plan pour qui fait quoi et pourquoi.

Par exemple, les vérifications unitaires écrites par les développeurs agissent comme des détecteurs de changement, vous permettant de détecter les régressions tôt lorsqu'elles sont réexécutées régulièrement - ce sont des tests qui soutiennent l'équipe. Les contrôles de régression au niveau du système qui sont automatisés afin qu'ils puissent être réexécutés régulièrement et rapidement prennent également en charge l'équipe en détectant les régressions tôt et complètent les tests unitaires effectués par les développeurs. Cela libère le temps de vos testeurs pour effectuer des tests qui critiquent le produit - des tests exploratoires, par exemple. Ou peut-être en appliquant certaines des vérifications automatisées pour tester la résistance du produit.

L'autre chose que j'aime beaucoup dans la présentation de Lisa Crispin que j'ai liée est qu'elle souligne que l'automatisation peut également être utilisée pour prendre en charge les tests manuels - création de données de test, automatisation utilisée pour obtenir un scénario au point sur lequel vous souhaitez vous concentrer aujourd'hui, pour exemple.

Il est à espérer que ces deux articles vous aideront à analyser le type de test que vous souhaitez effectuer, à faciliter la sélection de ce qui pourrait convenir à l'automatisation et à déterminer les éléments d'automatisation qui conviennent le mieux aux testeurs, et lesquels par les développeurs.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.