2010-03-24 4 views
0

Je vais créer une application métier typique qui sera utilisée par quelques centaines de consultants. Normalement, les consultants recevront un message d'erreur avec un texte standard. Comme l'application sera compliquée avec beaucoup de changements qui y sont constamment apportés, je voudrais ce qui suit:"Rejouer" les étapes nécessaires pour recréer une erreur

Lorsqu'un message d'erreur est présenté, l'utilisateur a la possibilité d '"envoyer" le message d'erreur aux développeurs. Les développeurs devraient être en mesure d'ouvrir le fichier entrant dans Eclipse et de déboguer les étapes des 10 dernières minutes de travail étape par étape (une ligne à la fois si elles le souhaitent). Tout devrait être transparent, ce qui signifie qu'ils devraient par exemple pouvoir voir les valeurs de retour des appels à la base de données.

Y at-il des solutions qui offrent une telle fonctionnalité aujourd'hui, ma langue préférée est Python ou Java. Je sais qu'il y aura un énorme impact sur les performances à cause de cette fonctionnalité, mais c'est acceptable car ce type de logiciel n'est pas sensible aux performances. Ce serait très bien si la base de données avait aussi une cronologie pour qu'on puisse interroger la base de données pour les valeurs qui existaient au moment exact où une ligne de code spécifique a été exécutée dans l'application, menant au bogue.

Répondre

1

Vous devriez essayer d'utiliser la journalisation, par ex. enregistrer les journaux de la base de données et consigner les interactions de l'utilisateur avec l'application, s'il s'agit d'une application Web, vous pouvez démarrer avec les fichiers journaux du serveur Web. Assurez-vous que les fichiers journaux incluent toutes les données soumises, telles que l'URL GET complète avec les paramètres et POST avec le corps de l'entité. Vous pouvez configurer le serveur Web pour générer ces journaux lorsque cela est nécessaire.

Puis vous construisez un client de test qui peut analyser les fichiers journaux et recréer toute l'interaction de l'utilisateur qui a causé l'apparition du problème. Si vous suspectez des conditions de course, vous devez vous connecter avec une grande précision (résolution en ms) et vous assurer que le client de test peut parcourir les mêmes séquences encore et encore pour accentuer ces parties critiques. Replay (comme votre titre l'indique) est le meilleur moyen de reproduire une erreur, il suffit de recueillir toutes les données nécessaires pour recréer l'entrée qui a généré un état/situation spécifique. Ne vous concentrez pas sur les structures internes et les valeurs de retour, quand il s'agit de traquer une erreur ou un bug, vous ne devriez pas travailler en mode forensique, par ex. en essayant d'analyser la cause de l'accident en analysant l'épave, vous devriez planter l'avion encore et encore et ajouter de plus en plus de journalisation/ou utiliser un débogueur jusqu'à ce que vous sachiez que cela ne va pas.

Questions connexes