L'habitude de test qui empêche les surprises de dernière minute

DEV - 20/08
Je teste mes hypothèses avant de tester mon code. La plupart des développeurs approchent des tests à l'envers. Ils écrivent ...

Je teste mes hypothèses avant de tester mon code.

La plupart des développeurs approchent des tests à l'envers. Ils écrivent du code basé sur des hypothèses sur le fonctionnement des choses, puis rédigent des tests pour vérifier que le code fait ce qu'ils pensent qu'il devrait faire. Lorsque quelque chose se casse en production, ils sont vraiment surpris parce que "tous les tests passaient".

Le problème n'est pas avec les tests - c'est avec les hypothèses sur lesquelles les tests ont été construits.

Les tests réels commencent avant d'écrire une seule ligne d'implémentation. Cela commence par se demander si votre modèle mental du problème correspond à la réalité.

L'écart entre l'hypothèse et la réalité

Chaque morceau de code que vous écrivez contient des hypothèses intégrées sur le comportement des utilisateurs, les contraintes du système, les formats de données et les exigences commerciales. Ces hypothèses sont évidemment vraies lorsque vous êtes en train de résoudre un problème, mais ils sont souvent la source des insectes les plus douloureux.

J'ai appris cela lors d'une implémentation de fonctionnalité apparemment simple. L'exigence était simple: "Laissez les utilisateurs télécharger des images de profil." Mes hypothèses étaient raisonnables: les utilisateurs téléchargeraient des fichiers JPEG ou PNG de taille raisonnable, le téléchargement se produirait sur une connexion Internet décente et le modèle d'utilisateur existant pourrait gérer un champ d'image supplémentaire.

Trois semaines plus tard, la production s'est écrasée parce que les utilisateurs ont téléchargé des fichiers de caméra bruts de 50 Mo sur les connexions mobiles, provoquant des fuites de mémoire et des erreurs de délai d'expiration qui ne sont jamais apparues dans mon environnement de développement local.

Tous mes tests unitaires ont réussi. Mes tests d'intégration ont réussi. Mais mes hypothèses sur les modèles d'utilisation du monde réel étaient complètement erronées.

Tester les modèles mentaux, pas seulement les chemins de code

L'habitude de test la plus précieuse que j'ai développée était la validation de l'hypothèse - la pra...
[Courte citation de 8% de l'article original]

Loading...