La taverne du testeur

Industrie classique ≠ Industrie logicielle

Encore trop de personnes haut placées dans les entreprises logicielles ne jurent que par la « productivité ». La sacro-sainte « productivité » !

Dans l’industrie classique cela revient à produire des pièces mécaniques. Dans l’industrie logicielle on  représente malheureusement souvent cela comme « pisser du code » (ce qui explique « productivité »).

Cela me met hors de moi lorsque j’entends : « On ne peut pas faire de bilan des campagnes de test, ni de rétrospective, ni de documentation car ce n’est pas productif » !

A cela j’ai envie de répondre : « Hé Ho, ici le 21ème siècle et l’industrie logicielle ce n’est plus le règne du fordisme ! »

Pour être honnête, je trouve que le terme « industrialisation » dans le logiciel est sujet à confusion et je souhaite donc revenir sur différents points :

·        Dans l’industrie classique on fait plusieurs fois la même pièce alors que dans l’industrie logicielle on fait 1 logiciel qui évolue ou des logiciels tous différents !

Dans l’industrie « classique » on fait toujours la même pièce et le but est juste de pouvoir en produire le plus possible au prix le plus bas possible. Cela mène à un vrai travail sur la productivité et sur la chasse à tous les moments perdus. Le film « Les temps modernes » de Chaplin le montre très bien (je sais que ce film est vieux… tout comme l’idée d’augmenter la productivité à tout prix !)

Dans l’industrie logicielle le problème n’est pas le même. Plus personne ne refait exactement le même code pour tous ses projets (sinon, c’est le même projet et un copier/coller suffit !). De plus avec le développement des méthodes itératives le logiciel évolue et est enrichi continuellement avec de nouvelles lignes de code. La problématique n’est donc plus la même (qui a déjà vu une clé à molette évoluée après son achat et proposer une option clé à laine puis une autre option tournevis ?)

·        La productivité ce n’est pas seulement des lignes de codes.

Le nombre de lignes de code ne correspond pas à la qualité ni aux capacités du produit. On pourrait comparer les pièces fabriquées aux lignes de codes. Malheureusement, les lignes de code, contrairement à la fabrication des pièces, ne sont pas suffisantes pour définir la productivité d’une équipe projet sur du logiciel. En effet, dans l’industrie logicielle, la partie test et spécifications ne peuvent pas être dissociées de la productivité.

IvI-1

A noter : Dans ce schéma je n’intègre pas l’impact des régressions. Les régressions peuvent aisément, en cas de non maitrise du logiciel, multiplier par 2 ou 3 le temps à passer sur une fonctionnalité.

La productivité en industrie logicielle se mesure plus aisément en fonctionnalités (plus ou moins complexes) implémentées ainsi que sur le temps passé à les « réparer » ou « réparer » leurs impacts lorsqu’elles sont en production. Mettre à tout prix une fonctionnalité en production ne veut pas dire que le travail sur cette dernière est finie. Dans certains cas extrême, le coût de réparation peut même être bien supérieur au coût de développement.

·        Dans l’industrie classique faire une erreur sur la deuxième pièce ne casse pas la première !

Dans l’industrie logicielle une nouvelle fonctionnalité peut casser une fonctionnalité existante, c’’est ce que l’on appelle des régressions. Ces régressions peuvent vite être très coûteuses et empêcher tout développement de nouvelles fonctionnalités.

Dans l’industrie classique ce n’est pas le cas. Des pièces sont fabriquées et une fois qu’elles sont fabriquées, s’il n’y a pas de défaut alors tout va bien. Par contre, dans l’industrie classique comme dans l’industrie logicielle les pièces (ou fonctionnalités) fonctionnent dans un système plus grand (roue pour une voiture, connexion pour un logiciel), pour ces 2 industries il est nécessaire d’avoir des tests du type tests intégration.

·        La communication entre les différentes équipes est obligatoire dans l’industrie logicielle

Dans l’industrie classique, pas besoin de connaitre celui qui fait le châssis de la voiture pour pouvoir faire des pneus. L’important est de suivre les plans et de fabriquer toujours la même pièce.

Dans l’industrie logicielle ce n’est pas le cas. Les testeurs doivent intervenir le plus tôt possible dans le cycle de développement (shift left) mais surtout beaucoup communiquer à tout moment du projet. L’idée pour le testeur est de trouver les anomalies au plus tôt pour que ces dernières soient corrigées au plus tôt. La communication entre les différents acteurs et compétences d’un projet est un point central dans les méthodes agiles (Scrum, Kanban) et la philosophie DevOps.

Conclusion :

Il faut arrêter de vivre dans le passé! Par industrialisation du développement logiciel on n’entend pas augmentation de la capacité à écrire des lignes de codes. Lorsque l’on parle d’industrialisation du développement logiciel il faut en fait entendre la mise en place de processus communs permettant de standardiser des méthodes de travail. Cela permet de faciliter le travail quotidien des acteurs du projet, de limiter au maximum les dépendances envers 1 personne qui serait le seul à avoir certaines connaissances mais aussi d’améliorer efficacement le rythme de livraison de fonctionnalités de qualité.

Pensez à rejoindre le groupe Le métier du test si le test vous intéresse !

N’hésitez pas à me suivre et lire mes autres articles si vous voulez en apprendre plus sur le test ou venir partager vos connaissances

Merci à tous ceux qui mettent « j’aime », partagent ou commentent mes articles

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

non-fonctionnel

Load testing de vos APIs avec Vegeta – Sabri Taleb

D’après l’ISTQB, le load testing est un type de test de performance effectué pour évaluer le comportement d’un composant ou d’un système sous des charges variables, habituellement entre des conditions prévues d’utilisation faible, typique et de pointe. Dans le cadre d’un projet de développement d’une application exposant des services REST,

Lire la suite »
Agilité

ATDD et BDD, quelle différence ?

On parle beaucoup d’ATDD (Acceptance Test Driven Development) et de BDD (Behaviour Driven Development) lorsque l’on parle de test et d’agilité. De manière générale le BDD et l’ATDD sont souvent confondus. Cette confusion n’est pas étonnante tant ces méthodes prônent certains principes similaires. Les principes encouragés par ces méthodes sont

Lire la suite »
ATDD

Webinaire: La communication visuelle au service du test logiciel

Revivez le Webinaire de la taverne sur « La communication visuelle au service du test logiciel ». Benjamin Butel et Elodie Bernard nous parlent: des raisons et intérêts de la communication visuelle d’exemples concrets de pratiques de test utilisant cette communication de conseils de mise en pratique de cette communication

Lire la suite »