Udostępnij za pośrednictwem


Dzień z życia programisty ALM: wstrzymywanie pracy, naprawa błędów i przeprowadzanie przeglądu kodu

 

Skuteczny i dostępny za jednym kliknięciem sposób na to, aby przełączyć kontekst pracy z jednego wątku pracy do innego, jest dostępny w Visual Studio Premium i Visual Studio Ultimate z Team Foundation Server. Członkowie zespołu mogą z łatwością wymieniać wiadomości dotyczące proponowanych zmian do kodu. W tym temacie przedstawiono te funkcje jako kontynuację samouczka, którym na co dzień posługują się członkowie fikcyjnego zespołu Agile.

Piotr został zajęty napisanie kodu do spełnienia zadanie elementu zaległości.Jednakże kolegami się znaleźć błąd jest zablokowanie ich i chce go natychmiast naprawić. Wstrzymuje pracę, którą robi, i naprawia ten błąd. Prosi Julię, aby przejrzała poprawkę, po dokonaniu przeglądu ewidencjonuje poprawkę i powraca do pracy nad swoim oryginalnym zadaniem.

Uwaga

Funkcje Moja praca i Przegląd kodu, których używa Peter, są dostępne tylko w programach Visual Studio Premium i Visual Studio Ultimate.

W tym temacie:

  • Wstrzymywanie bieżącej pracy i rozpoczynanie pracy nad usterką

  • Zbadaj błąd

  • Zażądaj przeglądu kodu

  • Zaakceptuj i wykonaj (lub odrzuć) przegląd kodu

  • Otrzymanie i odpowiedź na przegląd kodu

  • Naprawianie testu i kodu

  • Zaewidencjonuj rozwiązanie problemu

  • Wznawianie pracy nad zadaniem

Wstrzymywanie bieżącej pracy

W czasie, gdy Peter pracuje na elemencie zaległości, Julia przychodzi omówić błąd, który blokuje jej pracę. Jest na obszarze, który Peter zna, więc tworzy zadanie, aby naprawić błąd i przypisuje go do siebie. Postanawia natychmiast rozpocząć pracę nad poprawką.

Zanim zacznie pracę nad nowym błędem, Peter chce mieć pewność, że jego bieżąca praca została odłożona w bezpiecznym miejscu na serwerze zespołu. Na stronie Moja praca Peter wybiera Wstrzymany , aby zapisać (na Team Foundation Server):

  • Wszystkie prace jakie wykonał, włącznie ze zmianami w kodzie, testami i innymi plikami.

  • Otwórz rozwiązania, okna, punkty przerwania, zmienne okno czujki i inne fragmenty stanu programu Visual Studio.

Teraz, gdy jego obszar roboczy jest czysty, Peter przeciągnie nowe zadanie z Dostępne elementy pracy do W toku pracy. Jest gotowy do badania źródła problemu i napisania poprawki.

Uwaga

Kontekst pracy jest połączony z elementami pracy, które wyświetlane są jako ,,w toku'' na stronie Moja praca.Za pomocą Wstrzymaj i Wznów, można szybko przełączać się między różnymi zadaniami.Rozwiązania otwarte i pliki, zmiany kodu i układ Visual Studio są włączone wszystkie razem.

Aby wstrzymać bieżącą pracę i rozpocząć pracę nad innym zadaniem

Zawieszenie niektórych prac

  1. Połącz Jeśli nie jesteś podłączony do projektu zespołowego, przy którym chcesz pracować, to połącz z projektem zespołowym:

    1. In Team Explorer, choose Ikona domu Home, and then choose Ikona mojej pracy My Work.
  2. Wstrzymaj bieżące zadanie:

    1. W sekcji Praca w toku wybierz Wstrzymaj.

    2. W wyświetlonym oknie, należy określić nazwę, którą chcesz nadać temu zestawowi prac zawieszonych, a następnie wybierz przycisk Wstrzymaj. Nazwą domyślną jest nazwa elementu roboczego będącego w danej chwili w toku.

  3. Rozpocznij pracę nad nowym zadaniem, usterką lub innym elementem roboczym:

    1. Przed wybraniem elementu roboczego możesz chcieć:

      • Utwórz nowe zadanie lub inny element roboczy wybierając Nowy w Dostępne elementy robocze; lub

      • Wybierz inne zapytanie w obszarze Dostępne elementy robocze.

    2. Przeciągnij element pracy z sekcji Dostępne elementy pracy do sekcji Praca w toku.

      Alternatywnie, możesz przełączyć się do elementu roboczego, który wcześniej zawiesiłeś, przeciągając go z Zawieszona praca.

Porada

Obecnie elementy robocze W toku są połączone z bieżącymi zmianami kodu i stanem programu Visual Studio.Aby organizowanie pracy w programie Visual Studio było łatwiejsze, upewnij się, że odpowiednie elementy są w stanie W toku podczas przełączenia się z jednego zadania do innego.

Zbadaj błąd

Peter otwiera i odczytuje błąd elementu roboczego. Zgodnie z opisem, który został napisany przez członka zespołu testowego, zapłacona faktura bywa czasami niepoprawnie oflagowana jako niezapłacona. Do błędnego elementu roboczego jest dołączona migawka środowiska laboratoryjnego. Peter jest w stanie otworzyć maszyny wirtualne, na których test był wykonywany, zobacz niepoprawne faktury i kroki wróć w dzienniku IntelliTrace. Namierzył usterkę w następującej metodzie:

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

W dzienniku narzędzia IntelliTrace Piotr widzi, że czasem metoda zwraca „fałsz”, ponieważ parametry różnią się bardzo niewiele. Peter wie, że błędy zaokrągleń tego rodzaju są nieuniknione w zmeinnoprzecinkowych punktach arytmetycznych i że złym zwyczajem jest przetestowanie liczb zmiennoprzecinkowych pod względem równości.

Udoskonal testy, aby pokazać błąd

Gdy zostanie znaleziony błąd, pokazuje to, że wystąpiła przerwa w badaniach jednostki lub że badania nie pasowały do rzeczywistych potrzeb użytkowników. Dlatego przed naprawieniem usterki Peter dodaje test, który zademonstruje obecność tego błędu.

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

Uruchamia test, który zgodnie z oczekiwaniami kończy się niepowodzeniem.

Nieudany test jednostki Test Explorer wyświetlone dla równości

Przejdź testy.

Peter naprawia kod:

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

Test kończy się powodzeniem:

Pokazywanie Test Explorer jednostki zdał egzamin dla równości

Zażądaj przeglądu kodu

Peter jest zadowolony z jego naprawieniu błędu, ale nie melduje jeszcze swojej pracy. Jego zespół używa przeglądów kodu do zwiększenia ogólnej jakości kodu i zmniejszenia ryzyka powstawania większej liczby błędów, więc Piotr używa programu Team Explorer do wnioskowania o przegląd kodu od współpracowników Julii i Adama.

Aby zażądać przeglądu kodu

Żądanie przeglądu kodu

  1. W programie Team Explorer na stronie Moja praca wybierz opcję Zażądaj przeglądu.

    Zostanie wyświetlona strona Nowy przegląd kodu.

  2. Weryfikacja Określ co najmniej jednego recenzenta.

  3. Przegląd kodu Określ nazwę przeglądu.

  4. Obszar ścieżki Określ ścieżkę obszaru.

  5. Komentarz Określ komentarz dla recenzentów.

  6. Wybierz Prześlij żądanie.

Recenzenci będą powiadamiani o wniosku pocztą e-mail.

Można także zażądać przeglądu kodu wstrzymanych prac, odłożonego zestawu lub zestawu zmian. Aby wyświetlić listę grup zmian, otwórz Eksploratora kontroli źródła i wybierz polecenie przycisk Historia.

Zaakceptuj lub odrzuć przegląd kodu

Julia odbiera żądanie przejrzenia kodu i akceptuje je. Przegląda kod, zapisuje niektóre komentarze na poziomach pliku i bloku kodu, a następnie wysyła przegląd kodu z powrotem do Petera. Adam jest zbyt zajęty, aby przeglądać kod i odmawia.

W swoich uwagach Julia wskazuje, że test jest niewłaściwy. Dopuszczalny błąd powinien być określonym ułamkiem wartości wejściowych, a nie wielkością stałą. Dlatego w teście należy pomnożyć błąd przez wartość.

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

Porada

Należy zauważyć, że członkowie zespołu uzywają testów jako fokus dla dyskusji.Jeśli testy są poprawne i wystarczające, kod również będzie.W przeciwieństwie do kodu, każdy test stanowi osobny przypadek.Z tego powodu testy są często łatwiejsze do omówienia niż kod.

Aby przeprowadzić przegląd kodu

Akceptuje i odpowiada na przegląd kodu

Wykonywaniem przeglądów kodu

  1. W Explorer zespołu, na Moja praca strony, przejdź do Moje recenzje kodu i żądań sekcji, a następnie otwórz wezwanie.

  2. Na stronie Audyt kodu można:

    • Wybierz Zaakceptuj lub Odrzuć, aby powiadomić autora, czy przeprowadzisz przegląd.

    • Wybierz Dodaj recenzenta, aby dodać innych recenzentów do żądania code–review.

    • Wyświetl zmiany do każdego pliku, który został zaktualizowany dla tego elementu pracy.

    • Rozwiń węzeł Komentarze, aby omówić zmiany z autorem oraz innymi recenzentami.

      • Wybierz Dodaj komentarz ogólny

        —lub—

        Zaznacz blok kodu, a następnie wybierz polecenie Dodaj komentarz z menu skrótów.

      • Wybierz Wyślij komentarze, aby uwidocznić autorowi i innym recenzentom swój wkład.
    • Wybierz Wyślij i Zakończ, aby przeprowadzić recenzję, wskazując, czy kod wymaga większego nakładu pracy.

Odpowiedź na przegląd kodu

Peter odbiera i odpowiada na audyt kodu Julii.

Aby odpowiedzieć na przegląd kodu

Recenzenci i autor kodu mogą dowolnie często wymieniać się komentarzami. Przegląd kończy się, gdy autor go zamyka. Uczestnicy dyskusji zostaną powiadomieni za pomocą wiadomości e-mail o każdym nowym głosie w dyskusji.

Reagowanie na przegląd kodu

  1. W Explorer zespołu, na Moja praca strony, przejdź do kod recenzje i żądania sekcji, a następnie kliknij dwukrotnie żądanie.

    Można również otworzyć menu skrótów dla żądania i wybrać opcję Otwórz.

  2. Przeczytaj komentarze i odpowiedź na nie w razie potrzeby. Aby odpowiedzieć na komentarz, wybierz opcję Odpowiedz, wpisz swój komentarz w polu, które zostanie wyświetlone, a następnie wybierz przycisk OK. Aby wysłać swoje komentarze, wybierz opcję Wyślij komentarze.

  3. Aby wyświetlić plik i sprawdzić bloki kodu zawierające komentarze lub edytować plik, przejdź do sekcji Komentarze. W podsekcji Pliki, otwórz menu skrótów dla pliku i wybierz polecenie albo Porównania (tylko do odczytu) lub Edytuj plik.

  4. Po wymianie komentarzy z innymi recenzentami, aby zamknąć przegląd, kliknij przycisk Zamknij przegląd, a następnie wybierz jedną z dwóch opcji:

    • Zakończ, aby wskazać, że przegląd został zakończony.

    • —lub—

    • Porzuć, aby wskazać, że anulujesz przegląd.

Naprawianie testu i kodu

Po przeczytaniu komentarzy Julii Piotr poprawia testy jednostkowe, jak ona wskazuje. Test wypadnie niepomyślnie. Pokazuje to, że kod nie jest jeszcze poprawny.

Peter naprawia kod:

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

Test ponownie kończy się pomyślnie:

Pokazywanie Test Explorer jednostki zdał egzamin dla równości

Porada

Aby naprawić błąd, należy postępować tak samo, jak podczas opracowywania kodu.Napisz test, który kończy się niepowodzeniem, a następnie wykonać przebieg testu.Zaewidencjonuj kod i testy tylko wtedy, gdy testy zakończą się powodzeniem.

Peter teraz zwraca uwagę na przypadek testowy, w którym zostały wykryte usterki. Kroki prowadzące do odtworzenia usterki są jasno opisane w elemencie roboczym przypadku testowego. Wykonuje kolejne kroki i odkrywa, że faktury są poprawnie wyświetlane.

Zaewidencjonuj rozwiązanie problemu

Peter sprawdza w stałych kodu i testach jednostkowych. Stan usterki jest automatycznie ustawiany jako Rozwiązana, a wartość Przypisana do jest automatycznie przypisywana do członka zespołu testowego, który wykrył usterkę. Ten członek zespołu sprawdzi, czy usterka została naprawiona, i zamknie element roboczy.

Aby zaewidencjonować rozwiązanie problemu

Sprawdzanie aktualizacji naprawić błąd

  1. W programie Team Explorer na stronie Moja praca wybierz opcję Zaewidencjonuj.

  2. Przejrzyj zawartość strony Oczekujące zmiany, aby upewnić się, że:

    • Wszystkie istotne zmiany są wymienione w Uwzględnione zmiany

    • Wszystkie istotne elementy robocze są wymienione w Powiązane elementy robocze.

  3. Określ Komentarz, aby ułatwić zespołowi zrozumienie celu tych zmian podczas przeglądania historii kontroli wersji zmienionych plików i folderów.

  4. Wybierz Zaewidencjonuj.

Wznawianie pracy nad zadaniem

Peter powraca do pracy nad swoim zadaniem. Jest w stanie wrócić do pracy w szybko, ponieważ jego wszystkie zmiany kodu są przywracane do jego obszaru roboczego wraz z ważnymi aspektami stanu, takimi jak otwarte okna, punkty przerwania i zmienne w oknie czujki.

Aby wznowić pracę nad zadaniem

Wznawianie oraz kończenie zadania

  1. W Explorer zespołu, na Moja praca strony, znajdowania Suspended & w trybie pracy listy. Otwórz menu skrótów elementu. Masz dwie możliwości:

    • Jeśli chcesz wznowić zawieszoną pracę i automatycznie zawiesić wszystkie oczekujące zmiany w obszarze roboczym, wybierz polecenie Wznów.

    • Jeśli chcesz scalić zawieszoną pracę z oczekującymi zmianami już istniejącymi w obszarze roboczym, wybierz polecenie Scal z pracą W toku.

Po wznowieniu pracy

Okienka dotkniętych zawieszające elementu pracy.

Po wznowieniu pracy, Visual Studio, przywraca:

  • Otwarte rozwiązanie

  • Zmiany kodu

  • Stan i położenie otwartych okien

  • Punkty przerwań

  • Zmienne i wyrażenia w oknie czujki

  • Zakładki

Weryfikowanie, że poszło błędów

Jeśli błąd został znaleziony przez zespół test, one zostały powiązane niektórych przypadków testowych do błędów, który będzie ponownie uruchomić. Dowiedz się więcej.