Entretien de la communauté Python avec Brian Okken – Real Python

By | novembre 25, 2019

Expert Python

Cette semaine, j’ai le plaisir d’interviewer Brian Okken. Brian est peut-être mieux connu comme l'auteur de Test Python avec Pytest, en plus d’être l’hôte de deux podcasts. Poursuivez votre lecture pour en savoir plus sur l'homme derrière la voix, son nouveau rendez-vous à Portland et les conseils qu'il fournit à ceux qui découvrent les logiciels de test.

Ricky: Commençons par les mêmes questions que je pose à tous mes invités. Comment êtes-vous entré dans la programmation? Quand as-tu commencé à utiliser Python?

Brian Okken

Brian: Quand j'avais probablement 14 ans, j'ai reçu un TRS-80 en cadeau de mes parents. Je n’ai pas vraiment appris à coder, mais j’ai tapé des listes de programmes BASIC pour les petites applications et les jeux à l’arrière de magazines. Ensuite, j’ai suivi un cours de base au lycée, mais je n’ai pas poussé plus loin que cela. Je ne savais pas que vous pouviez en faire une carrière.

Je ne suis revenu à la programmation qu’après deux ou trois ans à l’université lorsque je suis passée des mathématiques et des beaux-arts à la CS. J’avais utilisé Scheme, Perl, Tcl, C, C ++ et ksh à la fin de mon baccalauréat et de ma maîtrise, tous deux en informatique. Ensuite, j'ai rejoint une société de test et mesure pour la construction de systèmes et d'instruments de test électroniques.

Au début des années 2000, un cadre de test basé sur Python a été introduit dans notre équipe. Même si je développais du code C ++ intégré, mon utilisation de Python pour piloter les tests du système a pris de l'ampleur au fil des années. Depuis que j'ai commencé à bloguer et à balayer en podcast en 2012 et 2015, j’ai élargi mon utilisation de Python, tant au sein de projets que sur le tas, au point que c’est à présent où je passe la plupart de mon temps.

Ricky: Qu'est-ce qui vous a amené à tester le logiciel en tant que profession? Et qu'est-ce que vous appréciez le plus?

Brian: J'aime un peu cette question et grincer des dents en même temps. Je n’ai jamais pratiqué le «test de logiciel» en tant que profession. Mais je suppose que c’est beaucoup de ce que je fais, de toute façon.

Un développement logiciel réussi, efficace et efficient inclut les tests de logiciels. Nous nous appuyons sur des suites de tests solides, fiables, exhaustives et rapides pour nous donner le feu vert aux fusions lors de pipelines CI / CD. De plus en plus, nous misons sur la qualité des tests automatisés pour assurer la qualité de nos logiciels. Cela nous permet de développer plus rapidement, d'expédier plus rapidement, d'itérer plus rapidement, de pivoter plus rapidement, de faire des erreurs et d'apprendre plus rapidement, et bien plus encore.

Et pourtant, très peu de développeurs savent comment écrire efficacement des tests automatisés qui assument toutes les responsabilités que nous avons définies dans les suites de tests automatisés. Beaucoup disent (ou croient) qu'ils ont besoin d'écrire des tests unitaires sans vraiment savoir ce que cela signifie. La plupart croient en la théorie du test pyramidal, mais ne l'utilisez pas vraiment et ne savent pas ce que cela implique. Ainsi, mon travail a peu à peu consisté à battre le tambour, à sonner du cor et à monter sur le podium, à chanter les louanges des tests automatisés et à essayer d’apprendre aux gens à le faire.

J'aime apprendre sur les problèmes de la première implémentation d'un code, le premier brouillon. Et j'aime vraiment écrire des deuxièmes brouillons, des troisièmes brouillons, etc. J'aime bricoler avec des projets logiciels. J'aime déchirer les parties laides et essayer de la rendre lisible, ou du moins moins laide. Et pour ce faire, je dois me fier à des tests pour savoir si j’ai perdu quelque chose.

C’est l’essentiel. Je veux jouer avec des logiciels, donc je veux passer le moins de temps possible à écrire des tests, ainsi que des problèmes de débogage et de tri. De cette façon, je peux passer le plus de temps possible à écrire de nouvelles choses et à refactoriser de vieilles choses. Je veux développer un logiciel dont je suis fier. Les tests logiciels automatisés le permettent. Je ne connais aucun autre moyen. C’est ce que j’apprécie le plus des tests.

Ricky: Pour nos lecteurs qui débutent dans les tests (et peut-être la programmation en général), quel conseil leur donneriez-vous?

Brian Ne remettez pas les tests à la fin. Vous n'êtes pas obligé de le faire en premier. Vous n'êtes pas obligé de faire du développement piloté par les tests. Mais ne le faites pas non plus en dernier. Développez des tests à mesure que vous construisez du code et développez des connaissances.

Vos tests automatisés devraient vous permettre de développer plus rapidement car vous n’avez pas à revenir en arrière et à vérifier manuellement tout ce qui fonctionnait auparavant. Si vous pensez que l'ajout de tests automatisés augmente votre charge de travail, il se peut que certaines choses se passent. Vous n’êtes peut-être que novice et l’acquisition d’une nouvelle compétence prend du temps. Vous écrivez peut-être trop de tests. Tester à des niveaux plus élevés, avec de plus gros morceaux, ou une paramétrisation, ou tout ce qui précède, peut rendre votre temps d’écriture de test plus efficace.

Tester n'est pas facile. Mais ce n’est pas compliqué non plus. Accordez-vous du temps pour apprendre. Les tests vous permettent de connaître votre logiciel. Cet apprentissage vous aidera à développer de meilleurs logiciels. Cet apprentissage est précieux, alors faites très attention à ne pas vouloir donner cet apprentissage à quelqu'un d'autre. Les équipes dont les ingénieurs développent leurs propres tests construiront de meilleurs ingénieurs que les équipes qui transfèrent les tests à une autre équipe.

Je suppose que c’est bien plus qu’un conseil. 🙂

Ricky: Si vous pouviez prédire l’avenir, quel serait, selon vous, le plus gros défi que vous rencontrerez dans la façon dont nous allons tester les logiciels à l’avenir?

Brian: À moins que quelque chose ne change en ce moment, l’avenir aura les mêmes défis que nous avons maintenant. Les personnes qui enseignent la programmation n'enseignent pas les tests parallèlement au développement. Comparez cela avec l'ingénierie électrique. Un étudiant en EE diplômé d’un Bachelor ou d’un Master aura passé beaucoup de temps avec des oscilloscopes, des analyseurs logiques, des analyseurs de spectre, des fréquencemètres, des wattmètres et d’autres équipements afin de valider le fonctionnement normal de leurs circuits et systèmes.

Cependant, pour CS, nous ne passons pas beaucoup de temps, le cas échéant, à faire en sorte que les diplômés sachent comment valider les logiciels qu’ils construisent. Et Internet est un gâchis d'informations contradictoires. Il n’est vraiment pas surprenant que les tests soient si mal compris. J'essaie d'y faire une brèche. Mais en réalité, le plus grand défi est l’éducation et la lutte contre les vieilles hypothèses.

Ricky: Je m'en voudrais de ne pas mentionner les podcasts que vous hébergez (Test et Code) et co-hôte (Octets Python). Y a-t-il eu des leçons ou des expériences d'apprentissage de podcasting qui ont été transférées dans votre code? Et cela vous a-t-il aidé à améliorer votre programmation?

Brian: Il y a tellement de leçons! Mais je pense que la chose la plus importante que j’ai apprise est l’importance de développer la capacité d’écouter et de la pratiquer souvent. Poser des questions est un excellent moyen d'apprendre des choses, mais cela ne fonctionne que si vous vous laissez écouter et entendre la réponse. J'ai dû supprimer des questions de suivi d'épisodes lorsque, lors du montage, il était évident que je n'avais pas vraiment écouté ce que la personne interrogée m'avait déjà dit.

Une écoute attentive est plus difficile que ce que nous lui accordons, et tellement puissante. Etre un meilleur auditeur se retrouve définitivement dans toutes les autres parties de ma vie, y compris la gestion, la programmation, les tests et même la famille.

Ricky: Enfin, lorsque vous n’écrivez pas de code, que faites-vous de plus pendant votre temps libre? Quels autres loisirs et intérêts avez-vous? Quelque chose que vous souhaitez brancher?

Brian: J'aime le plus passer du temps avec ma femme et mes enfants. Ma femme et moi avons toujours collectionné de beaux objets anciens et vintage et nous avons essayé de construire une maison remplie d'éléments éclectiques et théâtraux. Nous traitons notre espace de vie comme une installation artistique géante. Plus récemment, cet intérêt s'est déplacé vers le commerce de détail et nous vendons par l'intermédiaire d'un centre commercial d'antiquités local. N'hésitez pas à voir les photos sur Instagram, où nous sommes FrivolityPDX.

Je viens tout juste de lancer le Meetup Python PDX West pour West Portland avec mon co-organisateur de Python Bytes, Michael Kennedy. J'ai aussi écrit un livre. Vous apprendrez non seulement à utiliser très bien pytest, mais vous obtiendrez également de nombreux conseils de stratégie de test dans un livre suffisamment court pour être lu en fin de semaine. Test Python avec Pytest peut être trouvé chez Pragmatic ou sur Amazon. Et s'il vous plaît, écoutez Test & Code. Tester, ce n’est pas simplement une question de test, c’est une question de développement. Même chose pour le podcast. C’est pourquoi il y a une partie «& Code» dans le nom. 🙂


Merci Brian de m'avoir rejoint pour cette interview! C’est formidable de vous avoir de l’autre côté du micro de l’interview (pour ainsi dire).

Comme toujours, s’il ya quelqu'un que vous voudriez interviewer dans le futur, contactez-moi dans les commentaires ci-dessous ou envoyez moi un message sur Twitter.