2010-11-23 3 views
3

Notre équipe envisage de re-facteur une partie du module dans le code héritage base.Its une application Web écrite en java. Il n'a aucun test unitaire.Assurance Qualité du Code héritage étant refactorisé

J'ai demandé au développeur d'écrire un junit pour les fonctionnalités existantes avant de refactoriser, mais je suis sûr que ce ne sera pas très vaste.

Quelles sont les autres mesures (blackbox/whitebox/processus) que je peux prendre pour m'assurer que la recréation ne perturbe aucune fonctionnalité existante.

le système actuel est assez stable et a été en cours d'exécution plus de 8 ans.

Merci Gris

Répondre

0

Autre que d'écrire plus junits, vous pouvez toujours record test scripts with JMeter. inclure des affirmations pour vous assurer que vous obtenez les résultats que vous attendez.

+0

Hey, c'est une bonne idée. Mais le projet a déplacé beaucoup de FWD que je ne peux pas investir dans la version actuelle. Je peux utiliser cette approche dans une future initiative de refactoring. Merci. –

1

Vous pourriez rencontrer 2 problèmes: que le code n'est pas testable unitairement au sens moderne et qu'il y a des bugs dans le code qui n'ont pas encore été détectés. Face à cette situation, je vous encourage fortement à utiliser autant de tests en boîte en noir et blanc que possible. Je comprends que c'est un processus douloureux, mais il existe un moyen de l'atténuer.

peut vos ingénieurs factoriser quelques interfaces afin que vous puissiez créer des tests d'intégration. C'est-à-dire, si elles sont refactoring peuvent-ils se solidifier autour de certaines zones communes et diviser l'application (s) en morceaux plus petits qui, pour l'avenir prévisible, resteront en grande partie statique pendant un cycle de développement? Cela vous permettrait au moins de plus grands moyens d'effectuer plus de tests. Cela vous permettrait également, le gars du qa, d'interoguer le code existant pour ce qu'il attendrait.

+0

Vous avez raison. la plupart du code ne sont pas testables à l'unité. une partie du refactoring consiste essentiellement à supprimer les variables et méthodes inutilisées et à mettre le code répété dans la méthode commune. Nous nous assurons par des outils que les méthodes et les variables sont vraiment inutilisées Et oui couvrant avec des tests blackbox où le test unitaire n'est pas possible –

+0

@Jenga Blocks soyez prudent alors. Parfois, le code existant a tendance à avoir des «corrections de bogues» aux mauvais endroits. Logique peut être trouvé dans un endroit qui est directement lié à la logique boguée dans un autre endroit. En corrigeant le bug, vous pouvez introduire un bug dans un autre. – wheaties

2

Lire Michael Feathers' Working Effectively with Legacy Code avant de commencer.

Il est très probable que le code dans son état actuel ne puisse pas être efficacement testé (car il n'est probablement pas en unités). Ce que j'ai vu fonctionne bien, ce sont des tests au niveau de l'intégration qui fonctionnent simplement avec des entrées raisonnables et enregistrent les résultats; les applications web rendent cela particulièrement approprié. Écrivez-les, puis créez de petites méthodes et classes - une unité qui teste tout ce qui est nouveau - tout en faisant fonctionner ces tests de haut niveau. C'est plus de travail que de faire TDD dès le début, mais c'est définitivement faisable.

+0

Ceci est un excellent livre qui m'a donné une toute nouvelle perspective (plus optimiste) sur la maintenance du code. – nont

+0

Merci d'avoir suggéré le livre. Je suis en train de le parcourir et de le trouver utile. J'ai demandé au développeur de passer un test puis de le modifier. Mais il y aurait un compromis sur le respect des délais/contraintes budgétaires. –

Questions connexes