Le WordPress d'aujourd'hui, décodé pour les développeurs

Tests

Quel taux de couverture exiger d’un prestataire avant de signer la recette

Une grille pour négocier et vérifier un niveau de couverture minimal auprès d'un prestataire externe, sans se contenter d'un chiffre affiché sans contexte.

Par Clément Hadrot • 30 juillet 2024 • 4 min de lecture • Aucun commentaire
Quel taux de couverture exiger d'un prestataire avant de signer la recette

82 % de couverture de code affichés dans le rapport de livraison d’une extension développée par un prestataire externe pour une association de tourisme solidaire — un chiffre qui semblait rassurant, jusqu’à ce qu’un examen plus poussé révèle que le module de gestion des règlements, le plus sensible du projet, plafonnait en réalité à 31 % une fois isolé du reste.

Le chef de projet qui reçoit une extension livrée par un prestataire externe fait souvent face à ce même écart entre un chiffre global rassurant et une réalité bien plus contrastée selon les modules. Une grille de vérification structurée permet d’éviter de se fier à un pourcentage affiché sans en comprendre la composition.

Pourquoi un pourcentage global ne suffit jamais

Un taux de couverture agrégé mélange des modules à faible risque (affichage, mise en forme) et des modules critiques (paiement, données personnelles, permissions). Un module d’affichage entièrement couvert peut à lui seul tirer la moyenne globale vers le haut, sans qu’aucune ligne du module de paiement ne soit réellement testée.

La grille de vérification à exiger avant validation

L'essentiel à retenir : Un pourcentage global masque souvent les zones les plus critiques ; Exiger un rapport détaillé par module, pas un seul chiffre agrégé ; Vérifier la pertinence des assertions, pas seulement leur présence
  1. Demander un rapport de couverture détaillé par fichier ou par module, jamais seulement le chiffre agrégé final, sous un format exploitable (HTML ou Clover XML généré par PHPUnit avec l’option --coverage-html).
  2. Identifier les modules critiques du projet avant même de recevoir le rapport, avec le prestataire, pour fixer un seuil minimal spécifique à chacun d’eux, distinct du seuil global.
  3. Vérifier la nature des assertions, pas seulement leur nombre : un test qui exécute une fonction sans vérifier son résultat ($this->assertTrue(true); en fin de test) compte dans la couverture sans apporter aucune garantie réelle.
  4. Faire échouer volontairement une fonctionnalité critique et vérifier qu’au moins un test du module concerné échoue en conséquence, preuve tangible que la couverture affichée correspond à une détection réelle.

Un exemple de seuils différenciés retenus

ModuleSeuil minimal exigéJustification
Traitement des règlements85 %Impact financier direct en cas de bug
Gestion des adhérents70 %Données personnelles, risque de conformité
Affichage du catalogue de séjours40 %Impact limité à l’esthétique, risque faible

Ce qui a été découvert sur ce projet

La demande d’un rapport détaillé par module a révélé que la majorité des tests portaient sur des fonctions utilitaires simples, faciles à tester et peu risquées, tandis que la logique de validation des règlements par virement différé, plus complexe à tester, avait été largement laissée de côté. Le prestataire a dû compléter la couverture de ce module spécifique avant validation finale de la recette, avec un délai supplémentaire négocié en conséquence.

Ce que cette grille ne mesure pas

Cette grille porte sur la vérification d’un niveau de couverture déclaré, pas sur la mesure technique elle-même (choix de l’outil, configuration de PCOV ou Xdebug), qui reste une décision de l’équipe de développement du prestataire, hors du périmètre de cette négociation contractuelle.

Formaliser l’exigence dans le contrat, pas seulement à l’oral

Un seuil négocié verbalement en réunion de cadrage se dilue facilement au fil du projet, surtout si le calendrier se resserre. Sur ce projet, les seuils différenciés ont été ajoutés en annexe du contrat de prestation, avec une clause précisant que la recette ne serait validée qu’après remise du rapport détaillé par module, et non sur simple déclaration du prestataire. Cette formalisation a évité toute discussion tendue au moment de la livraison, chaque partie disposant d’un critère écrit et daté pour trancher un éventuel désaccord.

La clause a également prévu le cas d’un module ajouté en cours de projet, non anticipé dans la liste initiale : dans ce cas, le seuil par défaut applicable est celui du module le plus proche par nature (paiement, données personnelles, affichage), à défaut d’un seuil spécifique négocié séparément.

Un pourcentage de couverture sans détail par module ne prouve rien de plus qu’un chiffre choisi pour rassurer.

En résumé

Exiger un rapport détaillé par module plutôt qu’un chiffre global, fixer des seuils différenciés selon le risque métier, et vérifier la pertinence réelle des assertions permet à un chef de projet de valider une recette en connaissance de cause. Sur ce projet, cette grille a permis d’identifier un écart de couverture critique avant la mise en ligne, plutôt que de le découvrir après un incident sur le module de paiement.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi