La plupart des gens se font une idée très simplifiée ce que c’est que développer du logciel :

⌨️ développer du logiciel, c’est écrire du code ⌨️

Cet archétype, au sein même de l’industrie du développement et du conseil, omniprésent. Exemples :

🤖 on se demande si chatGPT (ou autre LLM) va remplacer les développeurs étant donnée la vitesse à laquelle ces outils peuvent produire du code relativement utile

📉 la performance des développeurs s’exprime en points de vélocité, une approximation de la quantité de code livrée en production, ou bien du temps passé à produire ce code

(pour vous en convaincre, proposez à une équipe d’ajouter à sa “definition of done” la documentation, la vérification ainsi que les tests : quelqu’un dans l’équipe vous opposera que cela risque de faire baisser la vélocité.)

🕳 en cas de retard, on préfère toujours livrer plus de code moins testé, moins vérifié et moins documenté, que livrer moins de code, mais du code testé, vérifié et documenté.

Sachant qu’il n’y a pas assez de testeurs·es dans les entreprises, et me demandant si on ne ferait pas bien d’écrire moins de code et plus de tests, en lisant l’introduction de Software Testing Techniques, j’ai eu envie de poser cette question :

À quel point faut-il distinguer testeur et programmeur ?

📖 La plupart des techniques présentées dans ce livre peuvent être utilisées à tous les niveaux de tests — depuis l’unité jusqu’au système. Lorsque la technique est utilisée au niveau du système, le concepteur et le testeur sont probablement des individus distincts. En revanche lorsque cette même technique est utilisée au niveau des tests unitaires, le testeur et le programmeur sont une seule et même personne, qui agit un temps comme programmeur et un temps comme testeur.

📖Vous devez être un schizophrène constructif. Ayez clairement en tête la différence entre votre rôle de programmeur et votre rôle de testeur. Le testeur en vous doit être méfiant, intransigeant, hostile, et compulsivement obsédé par la destruction, la destruction ultime, du logiciel du programmeur. Le testeur en vous est votre Mr Hyde — votre Incroyable Hulk. Le programmeur en vous essaie de réaliser une tâche de la manière la plus simple et la plus propre possible, à temps, et dans les budgets. Quelque fois vous y arrivez grâce à une idée géniale à propos du problème, laquelle réduit la complexité et l’effort, tout en étant presque correcte. Et avec ce testeur/Hulk tapi dans un recoin de votre esprit, il devient très utile de développer une saine paranoïa concernant les bugs. Rappelez-vous, par conséquent, que lorsque je me réfère au “concepteur de tests” et au “programmeur” en tant qu’individus distincts, le degré de séparation entre eux dépend du niveau de test et du contexte dans lequel la technique est appliquée.

Software Testing Techniques

publié sur Linked In le 05/10/2023