Journée d'un développeur ALM : interruption du travail, correction d'un bogue et révision du code
Un puissant moyen en un un clic de basculer de votre contexte de travail à un autre thread de travail est disponible dans Visual Studio Premium et Visual Studio Ultimate avec Team Foundation Server.En outre, les membres de l'équipe peuvent facilement échanger des messages sur les modifications proposées au code.Cette rubrique illustre ces fonctionnalités, reprenant un didacticiel qui suit les membres d'une équipe agile factice pendant un jour.
Peter était occupé à écrire du code pour accomplir une tâche d'élément de journal des travaux en souffrance. Toutefois, ses collègues ont trouvés un bogue qui les bloque, et il souhaite le résoudre immédiatement.Il suspend le travail qu'il effectue et corrige le bogue.Il demande à Julia d'examiner le correctif et, après que la révision, archive le correctif et reprend son travail sur sa tâche d'origine.
[!REMARQUE]
Les fonctionnalités Mon Travail et Révision du code que Peter utilise sont uniquement disponibles dans Visual Studio Premium et Visual Studio Ultimate.
Dans cette rubrique
Interrompez le travail en cours et commencez à travailler sur un bogue
Analyser le bogue
Demandez une révision du code .
Accepter et exécuter (ou refuser) une révision du code
Recevoir et répondre à une révision du code
Corriger le test et le code
Archivez la solution.
Reprendre le travail sur une tâche
Suspendre les travaux en cours
Lorsque Peter travaille à un élément de journal des travaux en souffrance, Julia provient d'évoquer un bogue qui la bloque.Il est dans une zone familière à Peter, donc il crée une tâche pour corriger le bogue et se l'assigne.Il décide de démarrer le travail sur le correctif immédiatement.
Avant qu'il commence à travailler sur le nouveau bogue, Peter souhaite vérifier que son travail actuel est mis de côté les dans un emplacement sécurisé sur le serveur de l'équipe.Dans la page Mon travail , Peter choisit Suspendre pour enregistrer (sur Team Foundation Server) :
Tout le travail qu'il a effectué, y compris des modifications au code, des tests, et d'autres fichiers.
Ouvre les solutions, fenêtres, points d'arrêt, variables de fenêtre Espion, et d'autres bits d'état de Visual Studio.
Maintenant que son espace de travail est propre, Peter glisser la nouvelle tâche Éléments de travail disponibles à travail en cours.Il est prêt à effectuer des recherches et écrire le correctif.
[!REMARQUE]
Votre contexte qui est lié aux éléments de travail qui affichent en cours sur la ma page de travail.à l'aide de Suspendre et de Reprendre, vous pouvez rapidement basculer entre différentes tâches.Vos solutions et fichiers, les modifications du code, et disposition Visual Studio sont tous basculés ensemble.
Pour interrompre le travail en cours et démarrer le travail sur une tâche différente
Connexion : Si vous n'êtes pas déjà connecté au projet d'équipe dans lequel vous souhaitez travailler, alors connexion au projet d'équipe:
- Dans Team Explorer , choisissez Accueil, puis choisissez Mon travail.
Suspendre votre tâche en cours :
Dans la section travail en cours , choisissez Suspendre.
Dans la zone qui s'affiche, spécifiez le nom que vous souhaitez donner à ce travail suspendu, puis choisissez le bouton Suspendre .Le nom par défaut est votre élément de travail en cours.
Démarrez le travail sur une nouvelle tâche, bogue, ou un autre élément de travail :
Avant de sélectionner un élément de travail, vous pouvez :
Créez une nouvelle tâche ou un autre élément de travail en choisissant Nouveau sous Éléments de travail disponibles; ou
Sélectionnez une requête différente dans Éléments de travail disponibles.
Faites glisser un élément de travail Éléments de travail disponibles à travail en cours.
Sinon, vous pouvez basculer vers un élément de travail que vous avez déjà interrompu en le faisant glisser de sous Travail suspendu.
Conseil |
---|
Les éléments de travail en cours sont liés à vos modifications de code et état actuel de Visual Studio.Pour permettre à Visual Studio pour vous aider à planifier votre travail, assurez -vous que les éléments appropriés sont dans l'état en cours lorsque vous basculez d'une tâche à un autre. |
Analyser le bogue
Peter ouvre et lit le Bogue de l'élément de travail.Conformément à la description écrite par un membre de l'équipe des tests, une facture payée est parfois correctement marquée d'une indication comme impayée.Il existe un instantané d'environnement lab lié à l'élément de travail Bogue.Peter est en mesure d'ouvrir les ordinateurs virtuels sur lesquels le test a été exécuté, voir la facture incorrecte et remonter dans le journal IntelliTrace.Il trace les erreurs avec la méthode suivante :
public class LocalMath
{
public static bool EqualTo(double a, double b)
{
return a == b;
}
Le journal IntelliTrace, Peter voit que parfois la méthode retourne la valeur false car les paramètres diffèrent d'un extrème petit montant.Peter sait que les erreurs d'arrondi de ce type sont inévitables dans le calcul à virgule flottante, et que c'est une mauvaise pratique de tester des nombres à virgule flottante d'égalité.
Compléter les tests pour afficher l'erreur
Lorsqu'un bogue est trouvé, il indique qu'il y avait une plage dans les tests unitaires, ou que le test ne correspond pas à les besoins réels des utilisateurs.Par conséquent, avant de résoudre le bogue, Peter ajoute un test qui représentera la présence de cette erreur.
// Added 2012-02-02 for bug 654321:
/// <summary>
/// Make sure that number equality test allows for
/// small rounding errors.
/// </summary>
[TestMethod]
public void TestDoublesEqual()
{
// We allow a rounding error of 1 in 1000000:
TestEqual(1, 1e-7, true); // Less than allowed error
TestEqual(1, 1e-5, false); // More than allowed error
TestEqual(1000, 1e-7, true); // Less than allowed error
TestEqual(1000, 1e-5, false); // More than allowed error
}
private void TestEqual(double value, double error, bool result)
{
// Try different combinations of error and value:
Assert.IsTrue(result == LocalMath.EqualTo(value + error, value));
Assert.IsTrue(result == LocalMath.EqualTo(value, value + error));
Assert.IsTrue(result == LocalMath.EqualTo(value - error, value));
Assert.IsTrue(result == LocalMath.EqualTo(value, value - error));
}
Il exécute le test et qu'il échoue comme prévu.
Les tests sont concluants.
Peter corrige le code :
public static bool EqualTo(double a, double b)
{
// Allow for rounding errors.
// For example, a == 2.0 and b = 1.99999999999
const double allowedError = 1/1000000;
return System.Math.Abs(a - b) < allowedError;
}
Le test est réussi.
Demandez une révision du code .
Peter est satisfait de son correctif pour le bogue, mais il ne signe pas son travail encore.L'équipe utilise des révisions du code pour améliorer la qualité globale de code et pour réduire le risque de créer plus de bogues, donc Peter utilise Team Explorer pour demander une révision du code de les assistants Julia et Adam d'équipe.
Pour demander une révision du code .
Dans Team Explorer, dans la page Mon travail , choisissez Examen de requête.
La page Nouvelle révision du Code s'affiche.
Spécifiez un ou plusieurs relecteurs.
Spécifiez le nom de la cible.
Spécifiez le chemin d'accès de build.
Spécifiez un commentaire à vos relecteurs.
Choisissez Envoyer une demande.
Les critiques seront avisés de la demande par email.
Vous pouvez également demander une révision du code de travail suspendu, d'un jeu de réservations, ou un ensemble de modifications.
Accepter ou refuser une révision du code
Julia reçoit la demande de révision du code et l'accepte.Elle passe en revue le code, écrit quelques commentaires au niveau du bloc de code et de fichier et puis envoie la révision du code à Peter.Adam est trop occupé pour examiner le code et décline.
Dans ses commentaires, Julia fait remarquer que le test est incorrect.L'erreur autorisée doit être une fraction spécifiée les valeurs d'entrée, pas une quantité constante.Donc le test doit multiplier l'erreur par la valeur.
// We allow a rounding error of 1 in 1000000
// as a fraction of the value:
TestEqual(1, 1e-7, true); // Less than allowed error
TestEqual(1, 1e-5, false); // More than allowed error
TestEqual(1000, 1000*1e-7, true); // Less than allowed error
TestEqual(1000, 1000*1e-5, false); // More than allowed error
Conseil |
---|
Notez que les membres de l'équipe utilisent les tests comme focus pour la discussion.Si les tests sont corrects et suffisants, le code le sera également.Contrairement au code, chaque test représente un cas distinct.Pour cette raison, les tests sont souvent plus faciles à expliquer que le code. |
Pour exécuter d'une révision du code
Dans Team Explorer, dans la page Mon travail , accédez à Mes révisions du code et des demandes la section et ouvrez la requête.
Sur la page Révision du Code , vous pouvez :
Choisissez Accepter ou Refuser pour informer l'auteur si vous exécuterez la révision.
Choisissez Ajouter un relecteur pour ajouter d'autres relecteurs à la demande de révision du code.
Afficher les modifications apportées à chaque fichier qui ont été mis à jour pour cet élément de travail.
Développez Commentaires pour discuter des modifications avec l'auteur et d'autres relecteurs.
Choisissez Ajouter un commentaire général
ou
Sélectionnez un bloc de code puis choisissez Ajouter un commentaire depuis le menu contextuel.
- Choisissez Envoyer des commentaires pour apporter les contributions visibles à l'auteur et à d'autres relecteurs.
Choisissez Envoyer et terminer pour exécuter votre révision, en indiquant si le code a besoin de plus de travail.
Répondre à une révision du code
Peter reçoit et répond à la révision du code de Julia.
Répondre à une révision du code
Les relecteurs et l'auteur du code peuvent échanger des commentaires aussi souvent que ils voudront.La révision terminée lorsque l'auteur la ferme.À chaque contribution à la discussion, les autres participants seront avertis par email.
Dans Team Explorer, dans la page Mon travail, accédez à la section Mes révisions du code et des demandes et ouvrez la requête.
Vous pouvez également ouvrir le menu contextuel pour la demande et choisissez Ouvrir.
Lire les commentaires et répondre à leurs besoins.Pour répondre à un commentaire, choisissez Répondre, entrez votre commentaire dans la zone qui apparaît, puis choisissez OK.Pour envoyer vos commentaires, choisissez Envoyer les commentaires.
Pour afficher un fichier et les blocs de code qui ont des commentaires, ou modifiez un fichier, accédez à la section Commentaires.Dans la sous-section fichiers, ouvrez le menu contextuel pour le fichier et sélectionnez une des comparer (lecture seule) ou Modifier le fichier.
Lorsque vous et les autres relecteurs avez terminé de répondre aux commentaires de la fois et vous êtes prêt à fermer une révision, cliquez sur Fermez la révision, puis choisissez l'un ou l'autre :
Tterminer pour indiquer que l'examen est terminé.
- ou -
Abandon pour indiquer que vous annulez la révision.
Corriger le test et le code
Après avoir lu les commentaires de Julia, Peter résout le test unitaire telle qu'elle propose.Le test échoue désormais.Cela montre que le code n'est pas encore correct.
Peter corrige le code :
/// <summary>
/// Returns true if two numbers are equal.
/// </summary>
public static bool EqualTo(double a, double b)
{
// Allow for rounding errors.
const double allowedErrorMultiple = 1/1000000;
double allowedError = (System.Math.Abs(a) + System.Math.Abs(b)) * allowedErrorMultiple/2;
return System.Math.Abs(a - b) < allowedError;
}
Le test réussit une fois encore :
Conseil |
---|
Pour corriger un bogue, suivez les mêmes pratique que dans le développement de code.Entrez un test qui échoue puis faites passer le test.Archivez le code et les tests uniquement lorsque les tests sont concluants. |
Peter tourne maintenant son attention au cas de test dans lequel le bogue a été découvert.Les étapes à suivre pour reproduire le bogue sont clairement décrites dans l'élément de travail de scénario de test.Il suit les étapes et découvre que les factures sont correctement répertoriés.
Archivez la solution.
Peter archive du code corrigé et les tests unitaires.L'état du bogue est automatiquement à Résolu, et la valeur Assigné à est automatiquement réassignée au membre de l'équipe des tests qui a découvert le bogue.Ce membre de l'équipe vérifie que le bogue a été résolu et clôt l'élément de travail.
Pour archiver la solution
Dans Team Explorer, dans la page Mon travail , choisissez Archiver.
Passez en revue le contenu de la Les modifications en attente page pour vous assurer que :
Toutes les modifications appropriées sont répertoriées Modifications incorporées
Tous les éléments de travail pertinents sont répertoriés dans Les éléments de travail associés.
Spécifiez Commentaire pour aider votre équipe à comprendre le but de ces modifications lorsqu'elles regardent l'historique de contrôle de version des fichiers et des dossiers modifiés.
Choisissez Archiver.
Reprendre le travail sur une tâche
Peter reprend son travail sur sa tâche.Il peut obtenir en arrière pour fonctionner rapidement car toutes ses modifications du code sont restaurées à son espace de travail avec les bits importants de l'état endommagé tels que les fenêtres actives, des points d'arrêt, et les variables de fenêtre Espion.
Reprendre le travail sur une tâche
Dans Team Explorer, dans la page Mon travail , recherchez la liste travail interrompu et enterré .Ouvrez le menu contextuel pour l'élément.Vous avez maintenant deux choix :
Si vous souhaitez continuer le travail interrompu et interrompre automatiquement toutes les modifications en attente dans votre espace de travail, choisissez Reprendre.
Si vous souhaitez fusionner le travail interrompu avec des modifications en attente déjà dans votre espace de travail, choisissez fusionnez avec en cours.
Lorsque vous passez votre travail
Lorsque vous passez votre travail, Visual Studio restaure :
Votre solution ouverte
Vos changements dans le code
L'état et la position des fenêtres ouvertes
Points d'arrêt
Espion fenêtre variables et expressions
Signets