Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez aussi afficher la version anglaise dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte.
Traduction
Anglais

Journée d'un développeur ALM : interruption du travail, correction d'un bogue et révision du code

 

Publication: mars 2016

Une méthode efficace en un clic pour passer votre contexte de travail d'un thread de travail à un autre 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 et fait suite à un didacticiel qui suit les membres d'une équipe Agile fictive pendant une journée.

Peter était occupé à écrire du code pour accomplir une tâche d'un élément de backlog. Toutefois, ses collègues ont trouvé un bogue qui les bloque, et il souhaite le corriger immédiatement. Il suspend le travail qu'il exécute et corrige le bogue. Il demande à Julia d'examiner le correctif et, après la révision, archive le correctif et continue à travailler sur sa tâche d'origine.

System_CAPS_noteRemarque

Les fonctionnalités Mon travail et Révision du code utilisées par Peter sont uniquement disponibles dans Visual Studio Premium et Visual Studio Ultimate.

Dans cette rubrique

Comme Peter travaille dans un élément du journal des travaux en souffrance, Julia vient discuter d'un bogue qui bloque son travail. Il s'agit d'un domaine familier à Peter, donc il crée une tâche pour corriger le bogue et se l'assigne. Il décide de commencer à travailler sur le correctif immédiatement.

Avant qu'il commence à travailler sur le nouveau bogue, Pete souhaite vérifier que son travail actuel est mis de côté dans un emplacement sécurisé sur le serveur de l'équipe. Sur la page Mon travail, Pete choisit Suspendre pour l'enregistrement (dans Team Foundation Server) :

  • Tout le travail qu'il a effectué, notamment les modifications du code, les tests et autres fichiers.

  • Solutions ouvertes, fenêtres, points d'arrêt, variables de fenêtre Espion et autres bits d'état de Visual Studio.

Maintenant que son espace de travail est propre, Pete fait glisser la nouvelle tâche depuis Éléments de travail disponibles vers Travail en cours. Il est prêt à effectuer des recherches et à écrire le correctif.

System_CAPS_noteRemarque

Votre contexte de travail est lié aux éléments de travail qui s'affichent comme étant en cours sur la page Mon travail. En utilisant Suspendre et Reprendre, vous pouvez rapidement basculer entre différentes tâches. Vos solutions et fichiers ouverts, vos modifications du code et votre disposition Visual Studio sont tous commutés ensemble.

Suspension d'un travail
  1. Connexion : si vous n'êtes pas déjà connecté au projet d'équipe auquel vous souhaitez participer, connectez-vous au projet d'équipe :

    1. Dans Team Explorer, choisissez Icône AccueilAccueil, puis choisissez Icône Mon travailMon travail.

  2. Interrompez votre tâche actuelle :

    1. Dans la section Travail en cours, choisissez Suspendre.

    2. Dans la zone qui apparaît, spécifiez le nom que vous souhaitez attribuer à cet ensemble de travaux suspendus, puis choisissez le bouton Suspendre. Le nom par défaut est votre élément de travail en cours.

  3. Démarrez le travail sur une nouvelle tâche, un nouveau bogue ou tout autre élément de travail :

    1. Avant de sélectionner un élément de travail, vous pouvez :

      • Créer une tâche ou un autre élément de travail en sélectionnant Nouveau sous Éléments de travail disponibles ; ou

      • Sélectionner une autre requête sous Éléments de travail disponibles.

    2. Faites glisser un élément de travail depuis Éléments de travail disponibles vers Travail en cours.

      Sinon, vous pouvez basculer vers un élément de travail que vous avez précédemment suspendu en le faisant glisser sous Travail suspendu.

System_CAPS_tipConseil

Les éléments de travail en cours sont liés à votre état Visual Studio et à vos changements de code actuels. Pour que Visual Studio vous aide à organiser votre travail, assurez-vous que les éléments appropriés sont définis sur l'état En cours lorsque vous passez d'une tâche à une autre.

Peter ouvre et lit l'élément de travail Bogue. Selon la description écrite par un membre de l'équipe des tests, une facture payée est parfois marquée comme impayée par erreur. Un instantané de l'environnement lab est attaché à l'élément de travail Bogue. Peter peut ouvrir les ordinateurs virtuels sur lesquels le test a été exécuté, consulter la facture incorrecte et effectuer une restauration à partir du journal IntelliTrace. Il indique l'erreur de la méthode suivante :


public class LocalMath
{       
    public static bool EqualTo(double a, double b)
    {
      return a == b;
    }

Dans le journal IntelliTrace, Pete voit que, parfois, la méthode retourne la valeur false car les paramètres diffèrent de très peu. Peter sait que les erreurs d'arrondi de ce type sont inévitables dans le calcul à virgule flottante, et qu'il n'est pas recommandé de tester des nombres à virgule flottante pour établir une égalité.

Lorsqu'un bogue est trouvé, il indique qu'il existait un écart dans les tests unitaires, ou que le test ne correspondait pas aux besoins réels des utilisateurs. Par conséquent, avant de résoudre le bogue, Peter ajoute un test qui démontrera 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 il échoue comme prévu.

Explorateur de tests unitaires indiquant un échec de test pour l'égalité

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 :

Explorateur de tests unitaires indiquant un test réussi pour l'égalité

Peter est satisfait de sa correction du bogue, mais n'archive pas encore son travail. Son équipe utilise les révisions du code pour améliorer la qualité de code globale et pour réduire le risque de créer des bogues ; par conséquent, Peter utilise Team Explorer pour demander une révision du code à ses collègues Julia et Adam.

ALM_CodeReviewCreateRequest
  1. Dans Team Explorer, sur la page Mon travail, choisissez Demander une révision.

    La page Nouvelle révision du code s'affiche.

  2. Réviseur Spécifiez un ou plusieurs réviseurs.

  3. Révision du code Spécifiez le nom de la révision.

  4. Chemin de la zone Spécifiez le chemin de zone.

  5. Commentaire Spécifiez un commentaire à vos réviseurs.

  6. Sélectionnez Envoyer une demande.

Les réviseurs seront informés de la requête par courrier électronique.

Vous pouvez également demander une révision de code du travail suspendu, un jeu de réservations ou un ensemble de modifications. Pour afficher la liste des ensembles de modifications, ouvrez l'Explorateur du contrôle de code source et sélectionnez le bouton Historique.

Julia reçoit la demande de révision du code et l'accepte. Elle examine le code, écrit des commentaires aux niveaux fichier et bloc de code, puis envoie la révision du code à Peter. Adam est trop occupé à examiner le code et refuse.

Dans les commentaires, Julia signale que le test est erroné. L'erreur autorisée doit être une fraction spécifiée des valeurs d'entrée, pas une quantité constante. Ainsi 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


System_CAPS_tipConseil

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 séparé. Pour cette raison, il est souvent plus facile de discuter des tests que du code.

ALM_CodeReviewRequestAccept
ALM_CodeReviewRequestAccept2
  1. Dans Team Explorer, dans la page Mon travail, accédez à la section Mes révisions du code et demandes, puis ouvrez la demande.

  2. Sur la page Révision du code, vous pouvez :

    • Choisissez Accepter ou Refuser pour informer l'auteur si vous effectuez la révision.

    • Cliquez sur Ajouter un vérificateur pour ajouter d'autres réviseurs à la demande de révision du code.

    • Affichez les modifications apportées à chaque fichier mis à jour pour cet élément de travail.

    • Développez Commentaires pour discuter des modifications avec l'auteur et d'autres réviseurs.

      • Choisissez Ajouter un commentaire général

        ou

        Sélectionnez un bloc de code, puis choisissez Ajouter un commentaire dans le menu contextuel.

      • Sélectionnez Envoyer des commentaires pour rendre les contributions visibles à l'auteur et à d'autres réviseurs.

    • Choisissez Envoyer et terminer pour effectuer votre révision, indiquant si le code a besoin de plus de travail.

Peter reçoit et répond à la révision du code de Julia.

Les réviseurs et l'auteur du code peuvent échanger des commentaires aussi souvent qu'ils le souhaitent. La révision se termine lorsque l'auteur la ferme. Avec chaque contribution à la discussion, les autres participants seront notifiés par courrier électronique.

ALM_CodeReviewReact
  1. Dans Team Explorer, dans la page Mon travail, accédez à la section Révisions du code et demande et double-cliquez sur la demande.

    Vous pouvez également ouvrir le menu contextuel de la requête et sélectionnez Ouvrir.

  2. Lisez les commentaires et répondez-y si nécessaire. Pour répondre à un commentaire, sélectionnez Répondre, entrez votre commentaire dans la zone qui apparaît, puis sélectionnez OK. Pour envoyer vos commentaires, sélectionnez Envoyer des commentaires.

  3. Pour afficher un fichier et voir les blocs de code contenant des commentaires, ou pour modifier un fichier, accédez à la section Commentaires. Dans le paragraphe Fichiers, ouvrez le menu contextuel du fichier et choisissez Comparer (lecture seule) ou Modifier le fichier.

  4. Lorsque vous et les autres réviseurs avez terminé de répondre à vos commentaires respectifs et que vous êtes prêt à fermer la révision, cliquez sur Fermer la révision, puis choisissez l'une des opérations suivantes :

    • Terminé pour indiquer que l'examen est terminé.

    • - ou -

    • Abandonner indique que vous annulez la révision.

Après avoir lu les commentaires de Julia, Pete résout le test unitaire telle qu'elle le propose. Le test échoue maintenant. Cela indique 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 à nouveau :

Explorateur de tests unitaires indiquant un test réussi pour l'égalité
System_CAPS_tipConseil

Pour corriger un bogue, suivez la même procédure que dans le développement du code. Écrivez un test qui échoue, puis faites en sorte que le test réussisse. Archivez le code et les tests uniquement en cas de réussite des tests.

Peter porte désormais son attention sur le cas de test dans lequel le bogue a été trouvé. Les étapes pour reproduire le bogue sont clairement décrites dans l'élément de travail de cas de test. Il suit les étapes et découvre que les factures sont correctement répertoriées.

Peter archive le code fixe et les tests unitaires. L'état du bogue est automatiquement défini sur Résolu, et la valeur Assigné à est automatiquement réassignée au membre de l'équipe de tests qui a découvert le bogue. Ce membre de l'équipe vérifiera que le bogue a été corrigé et fermera l'élément de travail.

Archivage dans une mise à jour pour résoudre un bogue
  1. Dans Team Explorer, sur la page Mon travail, choisissez Archiver.

  2. Passez en revue le contenu de la page Modifications en attente pour vous assurer que :

    • Toutes les modifications appropriées sont répertoriées dans Modifications incluses

    • Tous les éléments de travail pertinents sont répertoriés dans Éléments de travail associés.

  3. Spécifiez un Commentaire pour aider votre équipe à comprendre le but de ces modifications lorsqu'elle regarde l'historique de contrôle de version des fichiers et des dossiers modifiés.

  4. Choisissez Archiver.

Peter reprend sa tâche. Il peut se remettre rapidement au travail car toutes ses modifications de code sont restaurées dans son espace de travail avec les bits d'état importants, tels que les fenêtres actives, les points d'arrêt et les variables de fenêtre Espion.

Reprise et achèvement d'une tâche
  1. Dans Team Explorer, dans la page Mon travail, recherchez la liste Travail suspendu et réservé. Ouvrez le menu contextuel de l'élément. Vous avez maintenant deux choix :

    • Si vous souhaitez reprendre un travail suspendu 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 Fusionner avec En cours.

Volets affectés par la suspension d'un élément de travail.

Lorsque vous reprenez votre travail, Visual Studio restaure :

  • Votre solution ouverte

  • Vos modifications de code

  • L'état et la position des fenêtres actives

  • Points d'arrêt

  • Les variables et expressions de la fenêtre Espion

  • Signets

Si le bogue a été trouvé par l'équipe de test, elle a dû lier des cas de test au bogue et elle va les réexécuter. En savoir plus.

Afficher: