Quelles sont les premières tâches à accomplir pour implémenter les tests unitaires dans les applications Brownfield?

StackOverflow https://stackoverflow.com/questions/66361

Question

Est-ce que vous refactorisez votre SQL d'abord? Votre architecture? ou votre base de code? Changez-vous de langue? Avez-vous tout jeter et recommencer à zéro? [Pas de refactoring]

Était-ce utile?

La solution

J'ajoute les tests unitaires à une grande base de code spaghetti existante.

Mon approche consiste, lorsqu’on me demande de résoudre un problème, d’essayer de créer un nouveau wrapper autour de la partie de la base de code qui est pertinente pour ma tâche actuelle. Ce nouveau wrapper est développé à l’aide de TTD (écriture du test en premier). Parfois, appeler dans le code hérité non testé par l'unité. À d'autres moments, je fais une nouvelle copie d'un module existant et commence à lui faire subir de graves actes de violence. Parfois, je réécris les fonctionnalités à partir de zéro.

Mais comme je le garde assez bien testé, je me sens assez en contrôle.

Ce que je trouve dans cette base de code, qui a été développée avec beaucoup trop de copier-coller, est qu’une fois que je comprends un élément particulier et que je lui extrait certaines fonctions (qui sont testées d’abord). .. ces fonctions s'avèrent souvent utilisables dans de nombreux autres endroits et le taux de remplacement du code hérité par le mien, des bibliothèques testées par unité, augmente donc.

Je n'ai pas (et je n'ai aucune autorité pour) essayer de réécrire ou d'ajouter des tests à des parties du code qui ne sont pas touchées par mon problème actuel (généralement un bogue que j'essaie de corriger), mais j'ai un problème assez grave. attitude proactive agressive sur tout ce qui est touché et pourrait être pertinent.

Mise à jour: Penguinix a demandé: "Dans quelles langues travaillez-vous? Recommandez-vous un harnais de test spécifique? & Quot;

En ce moment, je travaille dans ... euh ... des oreillons! Mais le même principe fonctionne n'importe où.

L'un des éléments qui ont transformé ma compréhension de l'UT était MinUnit: http: //www.jera .com / techinfo / jtns / jtn002.html

Quand j'ai vu MinUnit, c'était un peu un "zen". moment d'illumination pour moi. Cela m'a permis d'éliminer les malentendus que j'avais sur le fait que les tests unitaires soient compliqués et requièrent des structures OO sophistiquées, etc. J'ai compris qu'UT consistait simplement à écrire de nombreux tests. Le "harnais" vous pouvez écrire vous-même, en environ 3 minutes, dans la langue de votre choix. Il suffit de monter et de le faire.

Autres conseils

Cela dépend vraiment de l’état de la base de code ... existe-t-il des classes massives? une classe avec méga-méthodes? Les classes sont-elles bien couplées? la configuration est-elle un fardeau?

Compte tenu de cela, je suggère de lire Travailler efficacement avec du code hérité , en sélectionnant résoudre vos problèmes et appliquer les recommandations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top