Giornata di uno sviluppatore ALM: sospendere il lavoro, risolvere un bug e condurre una revisione del codice
Pubblicato: aprile 2016
In Visual Studio Premium e in Visual Studio Ultimate con Team Foundation Server è disponibile un metodo efficace con un clic per cambiare contesto di lavoro passando da un thread di lavoro a un altro. Inoltre, i membri del team possono facilmente scambiarsi messaggi sulle modifiche al codice proposte. In questo argomento vengono illustrate queste funzionalità, continuando un'esercitazione che segue i membri di un team Agile fittizio per un giorno.
Peter è impegnato a scrivere una parte di codice per eseguire un'attività elemento backlog.Tuttavia, i suoi colleghi hanno trovato un bug che li sta bloccando e Peter vuole correggerlo immediatamente. Peter sospende il lavoro che sta facendo e corregge il bug. Peter chiede a Julia di esaminare la correzione e dopo la revisione archivia la correzione e riprende a lavorare all'attività originale.
Nota
Le funzionalità Lavoro e Revisione del codice che Peter utilizza sono disponibili solo in Visual Studio Premium e in Visual Studio Ultimate.
In questo argomento
Sospendere il lavoro corrente e iniziare a lavorare a un bug
Analizzare il bug
Richiedere una revisione del codice
Accettare ed eseguire (o rifiutare) una revisione del codice
Ricevere e rispondere a una revisione del codice
Correggere il test e il codice
Archiviare la correzione
Riprendere a lavorare a un'attività
Sospendere il lavoro corrente
Mentre Peter lavora su un elemento backlog, Julia si avvicina per discutere di un bug che la sta bloccando. Poiché si è verificato in un'area con cui ha familiarità, Peter crea un'attività per correggere il bug e l'assegna a se stesso. Peter decide di iniziare a lavorare alla correzione immediatamente.
Prima di iniziare a lavorare al nuovo bug, Peter desidera assicurarsi che il lavoro corrente venga collocato in una posizione sicura nel server del team. Nella pagina Lavoro Peter sceglie Sospendi per salvare (in Team Foundation Server):
Tutto il lavoro che ha eseguito, incluse le modifiche al codice, i test e altri file.
Soluzioni aperte, finestre, punti di interruzione, variabili della finestra Espressione di controllo e altre situazioni di Visual Studio.
Ora che la sua area di lavoro è pulita, Peter trascina la nuova attività da Elementi di lavoro disponibili a Lavoro in corso. Peter è pronto per ricercare e scrivere la correzione.
Nota
Il contesto di lavoro viene collegato agli elementi di lavoro visualizzati come In corso nella pagina Lavoro.Utilizzando Sospendi e Riprendi, è possibile passare rapidamente tra le diverse attività.Le soluzioni e i file aperti, le modifiche al codice e il layout di Visual Studio vengono attivati contemporaneamente.
Per sospendere il lavoro corrente e iniziare a lavorare a un'attività diversa
Connettersi. Connettersi al progetto team in cui si desidera lavorare, se non si è già connessi:
- In Team Explorer scegliere Home, quindi scegliere Lavoro.
Sospendere l'attività corrente:
Nella sezione Lavoro in corso scegliere Sospendi.
Nella casella visualizzata specificare il nome che si desidera assegnare al lavoro sospeso, quindi scegliere il pulsante Sospendi. Il nome predefinito è quello dell'elemento di lavoro attualmente in corso.
Iniziare a lavorare a una nuova attività, un bug o un altro elemento di lavoro:
Prima di selezionare un elemento di lavoro, è necessario:
Creare una nuova attività o un altro elemento di lavoro scegliendo Nuovo in Elementi di lavoro disponibili oppure
Selezionare una query diversa in Elementi di lavoro disponibili.
Trascinare un elemento di lavoro da Elementi di lavoro disponibili a Lavoro in corso.
In alternativa, è possibile passare a un elemento di lavoro precedentemente sospeso trascinandolo da Lavoro sospeso.
Suggerimento
Gli elementi di lavoro attualmente in corso sono collegati alle modifiche al codice correnti e allo stato di Visual Studio.Per semplificare l'organizzazione del lavoro in Visual Studio, verificare che gli elementi appropriati siano nello stato In corso quando si passa da un'attività all'altra.
Analizzare il bug
Peter apre e legge l'elemento di lavoro bug. Secondo la descrizione scritta da un membro del team di test, una fattura pagata viene talvolta contrassegnata erroneamente come non pagata. All'elemento di lavoro bug è associato uno snapshot dell'ambiente lab. Peter può aprire le macchine virtuali in cui è stato eseguito il test, vedere la fattura errata e scorrere indietro il log IntelliTrace. Peter tiene traccia dell'errore con il metodo seguente:
public class LocalMath
{
public static bool EqualTo(double a, double b)
{
return a == b;
}
Nel log IntelliTrace Peter vede che talvolta il metodo restituisce false, poiché i parametri differiscono per una quantità estremamente piccola. Peter sa che gli errori di arrotondamento di questo tipo sono inevitabili nell'aritmetica a virgola mobile e che è una prassi sbagliata testare i numeri a virgola mobile per verificarne l'uguaglianza.
Aumentare i test per mostrare l'errore
Quando viene trovato un bug, esso indica che è presente un gap negli unit test oppure che il test non corrisponde alle necessità effettive degli utenti. Pertanto, prima di correggere il bug, Peter aggiunge un test che illustrerà la presenza di questo errore.
// 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));
}
Peter esegue il test che avrà esito negativo come previsto.
Fare in modo che i test abbiano esito positivo
Peter corregge il codice:
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;
}
Il test ha ora esito positivo:
Richiedere una revisione del codice
Peter è soddisfatto della correzione del bug, ma non archivia ancora il lavoro. Il suo team utilizza le revisioni del codice per aumentare la qualità generale del codice e ridurre il rischio di creazione di altri bug, pertanto Peter utilizza Team Explorer per richiedere una revisione del codice ai suoi colleghi del team Julia e Adam.
Per richiedere una revisione del codice
In Team Explorer nella pagina Lavoro scegliere Richiesta revisione.
Viene visualizzata la pagina Nuova revisione del codice.
Specificare uno o più revisori.
Specificare il nome della revisione.
Specificare il percorso area.
Specificare un commento per i revisori.
Scegliere Invia richiesta.
I revisori riceveranno una notifica della richiesta tramite posta elettronica.
È inoltre possibile richiedere una revisione del codice di un lavoro sospeso, uno shelveset o un insieme di modifiche. Per visualizzare un elenco degli insiemi di modifiche, aprire Esplora controllo codice sorgente e scegliere il pulsante Cronologia.
Accettare o rifiutare una revisione del codice
Julia riceve la richiesta di revisione del codice e la accetta. Julia esamina il codice, scrive alcuni commenti a livello di blocco di codice e di file, quindi rimanda la revisione del codice a Peter. Adam è troppo occupato per esaminare il codice e non accetta la richiesta.
Nei commenti Julia indica che il test non è corretto. L'errore consentito deve essere una frazione specificata dei valori di input, non una quantità costante. Pertanto, il test deve moltiplicare l'errore per il valore.
// 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
Suggerimento
Si noti che i membri del team utilizzano i test come un punto di riferimento per instaurare una discussione.Se i test sono corretti e sufficienti, lo sarà anche il codice.A differenza del codice, ogni test rappresenta un caso separato.Per questo motivo, i test sono spesso più semplici per instaurare una discussione rispetto al codice.
Per eseguire una revisione del codice
In Team Explorer nella pagina Lavoro passare alla sezione Revisioni del codice e richieste e aprire la richiesta.
Nella pagina Revisione del codice è possibile:
Scegliere Accetta o Rifiuta per notificare all'autore se si eseguirà la revisione.
Scegliere Aggiungi revisore per aggiungere altri revisori alla richiesta di revisione del codice.
Visualizzare le modifiche a ogni file che è stato aggiornato per questo elemento di lavoro.
Espandere Commenti per discutere le modifiche con l'autore e gli altri revisori.
Scegliere Aggiungi commento generale
-oppure-
Selezionare un blocco di codice, quindi scegliere Aggiungi commento dal menu di scelta rapida.
- Scegliere Invia commenti per rendere i contributi visibili all'autore e agli altri revisori.
Scegliere Invia e termina per completare la revisione, indicando se il codice richiede ulteriore lavoro.
Rispondere a una revisione del codice
Peter riceve e risponde alla revisione del codice inviata da Julia.
Per rispondere a una revisione del codice
I revisori e l'autore del codice possono scambiarsi commenti tutte le volte che desiderano. La revisione termina quando l'autore la chiude. Ogni contributo alla discussione viene comunicato agli altri partecipanti tramite posta elettronica.
In Team Explorer nella pagina Lavoro passare alla sezione Revisioni del codice e richieste e fare doppio clic sulla richiesta.
È inoltre possibile aprire il menu di scelta rapida per la richiesta e scegliere Apri.
Leggere i commenti e rispondere in base alle necessità. Per rispondere a un commento, scegliere Rispondi, inserire il commento nella casella visualizzata, quindi scegliere OK. Per inviare i commenti, scegliere Invia commenti.
Per visualizzare un file con i blocchi di codice che contengono i commenti o modificare un file, andare nella sezione Commenti. Nella sottosezione File aprire il menu di scelta rapida per il file e scegliere Confronta (Sola lettura) o Modifica file.
Quando l'utente corrente e gli altri revisori terminano di rispondere a tutti i commenti e si è pronti a chiudere la revisione, fare clic su Chiudi revisione, quindi scegliere:
Completa per indicare che la revisione è terminata.
-oppure-
Abbandona per annullare la revisione.
Correggere il test e il codice
Dopo avere letto i commenti di Julia, Peter corregge lo unit test come suggerito. Il test ha ora esito negativo. Ciò indica che il codice non è ancora corretto.
Peter corregge il codice:
/// <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;
}
Il test ha di nuovo esito positivo:
Suggerimento
Per correggere un bug, seguire la stessa procedura utilizzata nello sviluppo del codice.Scrivere un test che abbia esito negativo e quindi che abbia esito positivo.Archiviare il codice e i test solo dopo il superamento dei test.
Peter ora rivolge la sua attenzione al test case in cui è stato rilevato il bug. La procedura per riprodurre il bug è descritta chiaramente nell'elemento di lavoro test case. Peter esegue la procedura e rileva che le fatture sono elencate correttamente.
Archiviare la correzione
Peter archivia il codice corretto e gli unit test. Lo stato del bug viene impostato automaticamente su Risolto e il valore Assegnato a viene riassegnato automaticamente al membro del team di test che ha rilevato il bug. Tale membro del team verificherà che il bug sia stato corretto e chiuderà l'elemento di lavoro.
Per archiviare la correzione
In Team Explorer nella pagina Lavoro scegliere Archivia.
Esaminare il contenuto della pagina Modifiche in sospeso per verificare che:
Tutte le modifiche pertinenti siano elencate in Modifiche incluse
Tutti gli elementi di lavoro pertinenti siano elencati in Elementi di lavoro correlati.
Specificare un Commento per consentire al team di comprendere lo scopo di queste modifiche quando guardano la cronologia di controllo delle versioni dei file e delle cartelle modificate.
Scegliere Archivia.
Riprendere a lavorare a un'attività
Peter riprende a lavorare alla sua attività. Peter può tornare a lavorare rapidamente perché tutte le modifiche al codice verranno ripristinate nella sua area di lavoro insieme a tutte le altre situazioni importanti come finestre aperte, punti di interruzione e variabili della finestra Espressioni di controllo.
Per riprendere a lavorare a un'attività
In Team Explorer nella pagina Lavoro individuare l'elenco Lavoro sospeso e sottoposto a shelving. Aprire il menu di scelta rapida per l'elemento. Sono disponibili due opzioni:
Se si desidera riprendere il lavoro sospeso e sospendere automaticamente tutte le modifiche in sospeso nell'area di lavoro, scegliere Riprendi.
Se si desidera eseguire il merge del lavoro sospeso con le modifiche in sospeso già presenti nell'area di lavoro, scegliere Merge con In corso.
Quando si riprende il lavoro
Quando si riprende il lavoro, in Visual Studio vengono ripristinati gli elementi seguenti:
Soluzione aperta
Modifiche al codice
Stato e posizione delle finestre aperte
Punti di interruzione
Espressioni e variabili della finestra Espressioni di controllo
Segnalibri
Verifica della risoluzione del bug
Se il bug è stato trovato dal team di testing, gli utenti avranno collegato al bug alcuni test che potranno eseguire di nuovo. Altre informazioni.