Dag in het leven van een devops-ontwikkelaar: Werk onderbreken, een bug oplossen en een codebeoordeling uitvoeren

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

De functies Visual Studio My Work en Code Review bieden ondersteuning voor contextwisseling van de ene thread naar de andere. Teamleden kunnen ook eenvoudig berichten uitwisselen over voorgestelde wijzigingen in de code. In dit artikel worden deze functies geïllustreerd en wordt de zelfstudie van Day in het leven van een devops-ontwikkelaar voortgezet: nieuwe code schrijven voor een gebruikersverhaal.

Notitie

Visual Studio My Work en Code Review-functies zijn beschikbaar met de volgende edities:

  • Visual Studio 2022: Visual Studio Community, Visual Studio Professional en Visual Studio Enterprise
  • Visual Studio 2019: Visual Studio Professional en Visual Studio Enterprise

In deze zelfstudie wordt beschreven hoe u het werk aan een huidige taak kunt onderbreken om onmiddellijk een fout op te lossen die teamleden in een ander werkitem blokkeert. Nadat de fout is opgelost, kunt u collega's vragen de oplossing te controleren. Nadat de beoordeling is geslaagd, controleert u de fix en hervat u het werk aan de oorspronkelijke taak.

Huidig werk onderbreken

Terwijl u aan een achterstandsitem werkt, krijgt u mogelijk informatie over een bug in een ander item dat teamleden blokkeert. Als het een gebied is waarmee u bekend bent, kunt u een taak maken om de fout op te lossen en deze onmiddellijk aan uzelf toe te wijzen om aan te werken.

Voordat u aan de nieuwe fout begint, wilt u ervoor zorgen dat uw huidige werk op een veilige plaats op de server van het team wordt geplaatst. Kies in Visual Studio Team Explorer op de pagina Mijn werk de optie Onderbreken om op de server op te slaan:

  • Al het werk dat u hebt uitgevoerd, inclusief wijzigingen in code, tests en andere bestanden.

  • Open oplossingen, vensters, onderbrekingspunten, kijkvenstervariabelen en andere bits van Visual Studio-status.

Nu uw werkruimte is opgeschoond, sleept u de nieuwe taak van Beschikbare werkitems naar In voortgangswerk. U bent klaar om de oplossing te onderzoeken en te schrijven.

Notitie

Uw werkcontext is gekoppeld aan de werkitems die worden weergegeven als In uitvoering op de pagina Mijn werk . Met onderbreken en hervatten kunt u snel schakelen tussen verschillende taken. Uw geopende oplossingen en bestanden, codewijzigingen en de Indeling van Visual Studio worden allemaal overgeschakeld.

Huidige werk onderbreken en aan een andere taak beginnen

Uw werkcontext wisselen:

  1. Als u nog niet bent verbonden met het project waarin u wilt werken, maakt u verbinding met het project.

  2. Kies Mijn werk op de startpagina van TeamVerkenner.

  3. Kies Op de pagina Mijn werk in de sectie Wordt uitgevoerd werk opschorten.

  4. Wijzig in het vak dat wordt weergegeven desgewenst de naam die u wilt geven aan deze set onderbroken werk en selecteer Vervolgens Onderbreken. Het item wordt weergegeven onder Opgeschort werk.

    Schermopname van het onderbreken van werk.

  5. Sleep een werkitem van Available Work Items naar In Progress Work. U kunt ook overschakelen naar een werkitem dat u eerder hebt onderbroken door het te slepen vanuit Onderbroken werk.

    Als het werkitem dat u zelf wilt toewijzen niet wordt weergegeven onder Beschikbare werkitems, kunt u het volgende doen:

    • Maak een nieuwe taak of ander werkitem door Nieuw te kiezen.
    • Selecteer een andere query door Open Query te selecteren.

Tip

De items in voortgangswerk koppelen aan uw huidige codewijzigingen en de status van Visual Studio. Als u Visual Studio wilt toestaan om uw werk te organiseren, moet u ervoor zorgen dat de juiste items de status In voortgangswerk hebben wanneer u van de ene taak naar de andere overschakelt.

De fout onderzoeken

Open de nieuwe fout en lees de beschrijving. In dit voorbeeld geeft de beschrijving door een lid van het testteam aan dat een betaalde factuur soms onjuist is gemarkeerd als onbetaald. Er wordt een momentopname van een testomgeving gekoppeld aan het werkitem voor fouten. U opent de virtuele machine (VM) waarop de test is uitgevoerd, bekijk de onjuiste factuur en stap terug door het IntelliTrace-logboek. U kunt de fout traceren naar de volgende methode:

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

In het IntelliTrace-logboek ziet u dat de methode soms onwaar retourneert omdat de parameters verschillen met een extreem kleine hoeveelheid. U weet dat afrondingsfouten van dit soort onvermijdelijk zijn in rekenkundige drijvende komma en dat het een slechte gewoonte is om drijvendekommagetallen te testen op gelijkheid.

De tests uitbreiden om de fout weer te geven

Wanneer er een fout wordt gevonden, ziet u dat er een kloof is in de eenheidstests of dat de test niet overeenkomt met de werkelijke behoeften van de gebruikers. Voordat u de fout kunt oplossen, voegt u daarom een test toe die de aanwezigheid van deze fout laat zien:

// Added 2022-02-02 for bug 654321:
/// <summary>
/// Make sure that number equality test allows for 
/// small rounding errors.
/// </summary>
[TestMethod]
public void TestDoublesEqual()
{
    // 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));
}

Voer de test uit en mislukt zoals verwacht.

Schermopname van Unit Test Explorer met een mislukte test voor gelijk.

De tests laten slagen

Herstel de 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;
}

De test is nu geslaagd:

Schermopname van Unit Test Explorer met geslaagde test voor gelijk.

Een codebeoordeling aanvragen

Wanneer u tevreden bent met uw oplossing voor de fout, moet u uw werk nog niet inchecken. Teams gebruiken codebeoordelingen om de algehele codekwaliteit te verhogen en het risico te verminderen dat er meer fouten ontstaan. Gebruik Team Explorer om codebeoordelingen van teamleden aan te vragen.

Een codebeoordeling aanvragen

  1. Kies in Teamverkenner op de pagina Mijn werk onder In voortgang werk de optie Controle aanvragen.

    De pagina Nieuwe codebeoordeling wordt weergegeven.

    Schermopname van de pagina Aanvraagcode controleren.

    • Geef in het veld Enter de naam van een revisor op, geef een of meer revisoren op en druk na elke selectie op Enter.
    • Wijzig in het volgende veld desgewenst de naam van de beoordeling.
    • Controleer in het volgende veld of het juiste gebiedspad wordt weergegeven.
    • Typ een optionele beschrijving in het volgende veld.
  2. Kies Aanvraag verzenden.

De revisoren worden per e-mail op de hoogte gesteld van de aanvraag.

U kunt ook een codebeoordeling aanvragen van opgeschort werk, een plankenset of een wijzigingenset. Als u een lijst met wijzigingensets wilt zien, opent u Source Control Explorer en kiest u de knop Geschiedenis .

Een codebeoordeling uitvoeren

Een revisor kan de aanvraag voor codebeoordeling accepteren. De revisor beoordeelt de code, schrijft enkele opmerkingen op bestand- en codeblokniveaus en stuurt de codebeoordeling vervolgens terug naar u. Een aangevraagde revisor die te druk is om de code te controleren, kan de beoordeling weigeren.

In de opmerkingen wijst de revisor erop dat de test onjuist is. De toegestane fout moet een opgegeven fractie van de invoerwaarden zijn, niet een constante hoeveelheid. De test moet dus de fout met de waarde vermenigvuldigen.

// 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

Tip

De teamleden gebruiken de tests als een focus voor discussie. Als de tests juist zijn en voldoende zijn, is de code ook. In tegenstelling tot de code vertegenwoordigt elke test een afzonderlijk geval. Daarom zijn de tests vaak gemakkelijker te bespreken dan de code.

Een codebeoordeling uitvoeren

  1. Klik op de pagina Mijn werk in TeamVerkenner met de rechtermuisknop op de codebeoordeling in de sectie Codebeoordelingen en selecteer Openen.

    De pagina Codebeoordeling wordt weergegeven.

    Schermopname van de pagina Codebeoordeling.

  2. Op de pagina Codebeoordeling kunt u het volgende doen:

    • Kies Revisor toevoegen om andere revisoren toe te voegen aan de codebeoordelingsaanvraag.

    • Selecteer elke bestandskoppeling om de wijzigingen in de bestanden te zien die zijn bijgewerkt voor dit werkitem.

    • Gebruik Opmerkingen om de wijzigingen met de auteur en andere revisoren te bespreken.

      Opmerkingen toevoegen:

      • Kies Algemene opmerking toevoegen om een algemene opmerking toe te voegen aan de beoordeling.
      • Wanneer u een bestand bekijkt, selecteert u een regel of codeblok, klikt u met de rechtermuisknop en selecteert u Opmerking toevoegen.

      Nadat u elke opmerking hebt toegevoegd, selecteert u Opslaan of drukt u op Ctrl+Enter.

  3. Wanneer u klaar bent met het invoeren van opmerkingen, selecteert u Opmerkingen verzenden om uw bijdragen zichtbaar te maken voor de auteur en andere revisoren.

Reageren op een codebeoordeling

U ontvangt en reageert op de codebeoordeling van de revisoren. U en de revisoren kunnen zo vaak opmerkingen uitwisselen als u wilt. De beoordeling eindigt wanneer u deze sluit.

Reageren op een codebeoordeling

  1. Ga in Team Explorer op de pagina Mijn werk naar de sectie Codebeoordelingen en dubbelklik op de aanvraag of klik met de rechtermuisknop op de aanvraag en kies Openen.

    De pagina Codebeoordeling wordt weergegeven.

    Schermopname van het reageren op een codebeoordeling.

  2. Lees onder de sectie Opmerkingen de opmerkingen en beantwoord ze indien nodig. Als u een opmerking wilt beantwoorden, kiest u Beantwoorden, typt u uw opmerking in het vak dat wordt weergegeven en kiest u OK.

  3. Als u een bestand wilt weergeven en de codeblokken wilt zien die opmerkingen bevatten, of als u een bestand wilt bewerken of opmerkingen wilt maken, gaat u naar de subsectie Bestanden . Klik met de rechtermuisknop op het bestand en kies een van de volgende opties:

    • Vergelijken (alleen-lezen)
    • Lokaal bestand bewerken of
    • Bestandscommentaar toevoegen

    U kunt ook het selectievakje naast een opmerking inschakelen om aan te geven dat de opmerking is geadresseerd.

  4. Kies Opmerkingen verzenden om uw opmerkingen te verzenden.

  5. Wanneer u en de andere revisoren klaar zijn met het reageren op elkaars opmerkingen en u klaar bent om de beoordeling te sluiten, selecteert u Beoordeling sluiten en selecteert u:

    • Voltooid om aan te geven dat de beoordeling is voltooid of
    • Laat af om aan te geven dat u de beoordeling annuleert.

De test en de code herstellen

Nadat u de beoordelingsopmerkingen hebt gelezen, kunt u de eenheidstest herstellen zoals voorgesteld. De test mislukt nu. Dit laat zien dat de code nog niet juist is.

U lost de code op:

/// <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;
}

De test gaat weer voorbij.

Tip

Als u een fout wilt oplossen, volgt u dezelfde procedure als bij het ontwikkelen van code. Schrijf een test die mislukt en maak vervolgens de testpas. Controleer de code en de tests alleen wanneer de tests zijn geslaagd.

U krijgt nu aandacht voor de testcase waarin de fout is gedetecteerd. De stappen voor het reproduceren van de bug worden duidelijk beschreven in het werkitem testcase. U volgt de stappen en ontdekt dat de facturen correct worden weergegeven.

De oplossing inchecken

U controleert de vaste code en de eenheidstests. De status van de fout wordt automatisch ingesteld op Opgelost en de waarde Toegewezen aan wordt automatisch opnieuw toegewezen aan het lid van het testteam dat de fout heeft gedetecteerd. Dit teamlid controleert of de fout is opgelost en sluit het werkitem.

De oplossing inchecken

  1. KiesInchecken in TeamVerkenner op de pagina Mijn werk om de pagina Wijzigingen in behandeling te openen.

    Schermopname van het inchecken van een update om een fout op te lossen.

  2. Controleer op de pagina Wijzigingen in behandeling het volgende:

    • Alle relevante wijzigingen worden vermeld in Opgenomen wijzigingen

    • Alle relevante werkitems worden vermeld in Gerelateerde werkitems.

  3. Voer een opmerking in om uw team te helpen het doel van deze wijzigingen te begrijpen wanneer ze de versiebeheergeschiedenis van de gewijzigde bestanden en mappen bekijken.

  4. Selecteer Inchecken.

Werk aan een taak hervatten

Werk aan de oorspronkelijke taak hervatten. U kunt snel weer aan de slag, omdat al uw codewijzigingen worden hersteld naar uw werkruimte, samen met belangrijke statussen, zoals geopende vensters, onderbrekingspunten en venstervariabelen bekijken.

Werk aan een taak hervatten

  • Selecteer in Teamverkenner op de pagina Mijn werk het oorspronkelijke werkitem onder Werk onder Onder OnderBroken werk en selecteer Hervatten.

    Schermopname van het hervatten van een taak.

    Als u uw onderbroken werk wilt samenvoegen met wijzigingen in behandeling in uw werkruimte, kiest u Samenvoegen met Wordt uitgevoerd.

Wanneer u uw werk hervat, herstelt Visual Studio het volgende:

  • Uw open oplossing
  • Uw codewijzigingen
  • De status en positie van geopende vensters
  • Onderbrekingspunten
  • Venstervariabelen en expressies bekijken
  • Bladwijzers