Comment rendre les tests automatisés populaires? [fermé]

13

Notre base de code augmente depuis 20 ans maintenant. Nous sommes environ 10 développeurs + sqa travaillant avec 500kloc. Il y a quelque temps, une petite équipe d'entre nous (2 développeurs, un de sqa) a commencé à travailler sur un programme de test automatisé. Actuellement, une exécution prend 11h et est en quelque sorte un test d'intégration. Nous y travaillons pour réduire cela et réduire les faux positifs et nous progressons bien dans ce domaine. Mais les détails ne devraient pas avoir d'importance.

Cela fonctionne bien et nous continuons de l'améliorer. Nous (la petite équipe) l'aimons beaucoup. Si nous cassons quelque chose, nous remarquons un jour plus tard et non 2 mois plus tard que sqa jette un œil. De plus, nos managers (dev + sqa) aiment l'idée. Mais les autres membres de l'équipe ignorent simplement les résultats des tests. Dans leur esprit, si les tests échouent après un checkin, c'est un problème de test et non de changement de code et c'est juste notre projet de jouet. Nous avons eu plusieurs discussions si un échec de test est une vraie erreur. La plupart du temps, c'est le cas.

Nous ne pouvons pas et ne voulons pas imposer quelque chose. Comment montrer que les tests automatisés sont une chose?

Peter Schneider
la source
11
Ce n'est pas un problème de génie logiciel; c'est un problème de personnes.
Robert Harvey,
@RobertHarvey J'ai eu des votes négatifs sur SO parce que "basé sur l'opinion" et un commentaire que ce site conviendrait parfaitement (et des votes positifs sur ce commentaire). Alors: où dois-je demander? Éduquez-moi.
Peter Schneider
2
Je suis avec @RobertHarvey sur le fait que ce soit un problème de personnes. Mais selon Workplace, votre question sera probablement considérée comme une dupe. Par exemple, voyez cette question qui est fondamentalement ce que vous demandez au lieu de travail.stackexchange.com/questions/44964/…
Peter M
1
Ne laissez pas ces downvoters (ou même des votes serrés) vous décourager! Certaines personnes peuvent comprendre que ces questions sont importantes et peuvent peut-être vous aider. Soit dit en passant, mes collègues ne voient pas non plus l'utilité des tests automatisés, malgré la version précédente (sans aucun test automatisé) qui est une boîte de bogues. Il suffit de changer une chose et de casser quelques autres choses apparemment sans rapport. Certaines personnes ne veulent tout simplement pas apprendre (il existe une résistance ouverte à l'apprentissage de nouvelles choses).
Bernhard Hiller
1
Dommage que cette question soit close. Si le génie logiciel signifie quelque chose, cela signifie les problèmes de travailler avec des personnes réelles, et les réponses à ces problèmes impliqueront une opinion. Cela dit, quelques idées rapides: (1) si vos tests donnent de faux négatifs, cela augmentera certainement le recul car les résultats seront une perte de temps; (2) arrêtez le temps d'exécution, si possible. 11 heures ne semblent pas immédiates, même si c'est bien mieux que deux mois; (3) sqa adoptera ces tests comme métriques qu'ils regardent. ils sont déjà reconnus par votre organisation dans ce domaine.
Dale Hagglund

Réponses:

4

Avertissement

Bien que je puisse ressembler à un manager, j'ai écrit cela en tant que développeur qui devait également être convaincu que les tests automatisés sont bons.


Vous devez comprendre la psychologie de base des développeurs. C'est un besoin intrinsèque des développeurs de valider du code. Tout ce qui les en empêche est une très, très mauvaise chose. Un test échoué est certainement quelque chose qui les empêche de le faire, ergo c'est une mauvaise chose. D'où la résistance.

Ce que vous devez souligner, c'est que, si les tests automatisés les ralentissent à court terme, à long terme, cela leur évitera beaucoup de chagrin et les accélérera, car ils pourront se concentrer davantage sur le développement de de nouvelles choses, et perdra moins de temps à faire autre chose que les développeurs détestent faire: corriger les bugs.

Et oui, vous devez l'appliquer. Vous devez obtenir le soutien inconditionnel de la direction et rendre l'écriture de tests automatisés obligatoire et non négociable. Au fil du temps, les développeurs s'y habitueront. Ce qui peut vous aider, c'est si vous pouvez concevoir des mesures qui montreront combien de nouveaux développements ont été effectués et de combien le nombre de bogues a été réduit depuis que vous avez introduit les tests automatiques. Les mots sont volatils. Les chiffres sont solides. Et les chiffres sont quelque chose qu'un développeur moyen comprend mieux que les mots. Si vous pouvez prouver en utilisant des nombres solides que les tests automatisés sont bons, vous y obtiendrez peu ou pas de résistance.

Vladimir Stokic
la source
11

Dans leur esprit, si les tests échouent après un checkin, c'est un problème de test et non de changement de code et c'est juste notre projet de jouet. Nous avons eu plusieurs discussions si un échec de test est une vraie erreur. La plupart du temps, c'est le cas.

Voilà votre problème. Si vos tests sont irréguliers (même s'ils sont fiables «la plupart du temps»), alors les gens auront tendance à ignorer les résultats. Votre équipe d'automatisation doit se concentrer sur l'élimination de ces faux négatifs. Ce n'est qu'alors que le reste de l'équipe gagnera suffisamment de confiance dans les résultats pour lui faire réellement confiance.

Eternal21
la source
5
Là encore, cela pourrait être autre chose. Comme la résistance au changement. Si un test échoue, il y a toujours quelque chose à corriger, que ce soit le code ou le test, donc l'attitude selon laquelle les gens ignoreront les tests parce que les tests sont flocons est déplacée.
Robert Harvey du
Nous leur avons parlé lorsque nous étions sûrs que quelque chose s'était cassé (par exemple, le test a échoué 3 fois de suite après son enregistrement affectant la fonctionnalité en question). Mais oui, l'augmentation de la fiabilité est la priorité actuelle.
Peter Schneider
1
@PeterSchneider un test peut échouer 100 fois de suite, il le fera surtout si le test est incorrect.
Pieter B
D'un autre côté, un test qui n'échoue jamais est probablement complètement inutile
Vladimir Stokic
1
+1 Les tests de fragilité sont définitivement un problème. Les développeurs doivent être convaincus que les tests qu'ils écrivent sont utiles, n'introduisent pas de complications inutiles et ne sont pas un travail intense .
Andres F.
6

Nous ne pouvons pas et ne voulons pas imposer quelque chose.

Vous devez absolument l'appliquer! Si quelqu'un pousse un nouveau code et que les tests échouent, le code doit être rejeté! C'est le seul moyen de gérer de manière fiable un projet logiciel plus important.

Banan
la source
Je suppose que cela dépend du système, des tests, de l'échelle et du processus de développement. Tous les bogues ne peuvent pas être résolus immédiatement, et tous les problèmes ne doivent pas être résolus immédiatement.
NickL