Día en la vida de un desarrollador de devops: suspender el trabajo, corregir un error y realizar una revisión de código

Azure Repos | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 | TFS 2017 | TFS 2015 | VS 2017 | VS 2015 | VS 2013

Hay disponible una manera eficaz de cambiar el contexto de trabajo de un subproceso de trabajo a otro en Visual Studio Premium y Visual Studio Ultimate con Team Foundation Server. Además, los miembros del equipo pueden intercambiar fácilmente mensajes sobre los cambios propuestos para el código. En este tema se explican estas características y, a continuación, se incluye un tutorial en el que se hace un seguimiento de un día de trabajo de los miembros de un equipo ágil ficticio.

Peter ha estado ocupado escribiendo código para completar una tarea de elementos de trabajo pendientes. Sin embargo, sus compañeros han encontrado un error que los bloquea y quiere corregirlo inmediatamente. Decide dejar el trabajo que está haciendo y corrige el error. Le pide a Julia que revise la corrección y, una vez revisada, la protege y reanuda la tarea que le ocupaba anteriormente.

Nota:

Las características Mi trabajo y Revisión de código que usa Peter solo están disponibles en Visual Studio Premium y Visual Studio Ultimate.

Suspender el trabajo actual

Mientras Peter trabaja en un elemento de trabajo pendiente, Julia se acerca para hablarle de un error que le impide continuar. Este error se produce en un área que Peter conoce bien, así que crea una tarea para corregir el error y se la asigna a sí mismo. Peter decide iniciar el trabajo de corrección inmediatamente.

Antes de empezar a trabajar en el nuevo error, Peter quiere asegurarse de que su trabajo actual se reserva en un lugar seguro en el servidor del equipo. En la página Mi trabajo, Peter elige Suspender para guardar (en Team Foundation Server):

  • Todo el trabajo que ha realizado, incluidos los cambios de código, las pruebas y otros archivos.

  • Las ventanas, los puntos de interrupción, las variables de la ventana Inspección, las soluciones abiertas y otros elementos de estado de Visual Studio.

Ahora que su área de trabajo está limpia, Peter arrastra la nueva tarea de Elementos de trabajo disponibles a En curso. Está listo para investigar y escribir la corrección.

Nota:

El contexto de trabajo está vinculado a los elementos de trabajo que se muestran con el estado En curso en la página Mi Trabajo. Al usar Suspender y reanudar, puede cambiar rápidamente entre diferentes tareas. Las soluciones y archivos abiertos, los cambios de código y el diseño de Visual Studio se cambian a la vez.

Para suspender el trabajo actual y comenzar a trabajar en una tarea diferente

Suspender un trabajo

  1. Conectar: Si aún no está conectado al proyecto en el que desea trabajar, conéctese al proyecto:

    1. En Team Explorer, elija Inicio icono Inicioy, a continuación, elija Icono Mi trabajoMi trabajo.
  2. Suspenda la tarea actual:

    1. En la sección In Progress Work (En curso), elija Suspend (Suspender).

    2. En el cuadro que aparece, especifique el nombre que desea dar a este conjunto de trabajos suspendidos y, a continuación, elija el botón Suspender. El nombre predeterminado es el nombre del elemento de trabajo que está actualmente en curso.

  3. Inicie el trabajo en una nueva tarea,error u otro elemento de trabajo:

    1. Antes de seleccionar un elemento de trabajo, tal vez desee:

      • Para crear una tarea u otro elemento de trabajo, elija Nuevo en Elementos de trabajo disponibles; O

      • Seleccione otra consulta en Elementos de trabajo disponibles.

    2. Arrastre un elemento de trabajo de Elementos de trabajo disponibles a En curso.

      Como alternativa, puede cambiar a un elemento de trabajo que suspendió previamente arrastrando desde en Trabajo suspendido.

Sugerencia

Los elementos de trabajo que se encuentran actualmente en curso están vinculados con los cambios del código actual y el estado de Visual Studio. Para permitir que Visual Studio le ayude a organizar el trabajo, asegúrese de que los elementos correspondientes tienen el estado En curso cuando cambia entre una tarea y otra.

Investigar el error

Peter abre y lee el elemento de trabajo que da error. De acuerdo con la descripción escrita por un miembro del equipo de pruebas, a veces, una factura pagada aparece marcada incorrectamente como no pagada. Hay una instantánea del entorno de laboratorio asociada al elemento de trabajo de error. Peter puede abrir las máquinas virtuales en las que se ejecutó la prueba, consultar la factura incorrecta y retroceder a través del registro de IntelliTrace. Peter realiza un seguimiento de errores hasta el método siguiente:

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

En el registro de IntelliTrace, Peter ve que, en ocasiones, el método devuelve false porque los parámetros difieren en una cantidad extremadamente pequeña. Peter sabe que los errores de redondeo de este tipo son inevitables en aritmética de punto flotante y que no es aconsejable comprobar la igualdad en los números de punto flotante.

Aumentar las pruebas para mostrar el error

Cuando se encuentra un error, muestra que hubo una brecha en las pruebas unitarias o que la prueba no se aseó con las necesidades reales de los usuarios. Por lo tanto, antes de corregir el error, Peter agrega una prueba que sirva para demostrar la presencia de este error.

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

Ejecuta la prueba y se produce el error esperado.

Explorador de pruebas unitarias que muestra una prueba no superada para Equal

Conseguir que se superen las pruebas

Peter corrige el código:

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

Ahora la prueba se supera:

Explorador de pruebas unitarias que muestra una prueba superada para Equal

Solicitar una revisión de código

Peter está satisfecho con la solución del error, pero aún no protege el trabajo. Su equipo usa revisiones de código para aumentar la calidad general del código y reducir el riesgo de crear más errores, por lo que Peter usa Team Explorer para solicitar una revisión de código a sus compañeros de equipo Julia y Adam.

Para solicitar una revisión de código

Página Mi trabajo: vínculo Solicitar revisión. Página Nueva revisión de código: escriba el nombre de una lista desplegable de revisores, escriba un cuadro de texto description (opcional) y el botón Submit Request (Enviar solicitud).

  1. En Team Explorer, en la página Mi trabajo, elija Solicitar revisión.

    Aparece la página Nueva revisión de código.

  2. Revisor Especifique uno o varios revisores.

  3. Revisión de código Especifique el nombre de la revisión.

  4. Ruta de acceso del área Especifique la ruta de acceso del área.

  5. Comentario Especifique un comentario para los revisores.

  6. Elija Enviar solicitud.

Los revisores recibirán por correo electrónico una notificación de la solicitud.

También puede solicitar una revisión del código de un trabajo suspendido, un conjunto de cambios aplazados o un conjunto de cambios. Para ver una lista de conjuntos de cambios, abra Explorador de control de código fuente y elija el botón Historial.

Aceptar o rechazar una revisión de código

Julia recibe y acepta la solicitud de revisión de código. Revisa el código, escribe algunos comentarios en los niveles de bloque de archivo y bloque de código y envía la revisión de código de vuelta a Peter. Adam está demasiado ocupado para revisar el código y lo rechaza.

En sus comentarios, Julia señala que la prueba es incorrecta. El error permitido debe ser una fracción especificada de los valores de entrada, no una cantidad constante. Por lo tanto, la prueba debe multiplicar el error por el valor.

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

Sugerencia

Observe que los miembros del equipo utilizan las pruebas como tema de discusión. Si las pruebas son correctas y suficientes, el código también lo será. A diferencia del código, cada prueba representa un caso distinto. Por este motivo, normalmente resulta más fácil discutir sobre las pruebas que sobre el código.

  1. En Team Explorer, en la página Mi trabajo, vaya a la sección Mis solicitudes de revisiones de código y abra la solicitud.

  2. En la página Revisión de código, puede:

    • Elija Aceptar o Rechazar para notificar al autor si va a realizar la revisión.

    • Elija Agregar revisor para agregar otros revisores a la solicitud de revisión de código.

    • Ver los cambios en todos los archivos que se han actualizado para este elemento de trabajo.

    • Expanda Comentarios para analizar los cambios con el autor y otros revisores.

      • Elija Agregar comentario general.

        O bien

        Seleccione un bloque de código y, a continuación, elija Agregar comentario en el menú contextual.

      • Elija Enviar comentarios para que sus contribuciones sean visibles para el autor y otros revisores.
    • Elija Enviar y finalizar para completar la revisión, lo que indica si el código necesita más trabajo.

Responder a una revisión de código

Peter recibe la revisión de código de Julia y le responde.

Para responder a una revisión de código

Los revisores y el autor del código pueden intercambiar comentarios con la frecuencia que deseen. La revisión termina cuando el autor la cierra. Con cada contribución que se realice a la discusión, los demás participantes recibirán una notificación por correo electrónico.

Página Mi trabajo: elemento de revisión de código. Página Revisión de código: comentario general, comentario de archivo, vínculo Cerrar revisión.

  1. En Team Explorer, en la página Mi trabajo, vaya a la sección Solicitud de revisiones de código y haga doble clic en la solicitud.

    También puede abrir el menú contextual de la solicitud y elegir Abrir.

  2. Lea los comentarios y responda a ellos según sea necesario. Para responder a un comentario, elija Responder, escriba el comentario en el cuadro que aparece y, a continuación, elija Aceptar. Para enviar sus comentarios, elija Enviar comentarios.

  3. Para ver un archivo y ver los bloques de código que tienen comentarios, o para editar un archivo, vaya a la sección Comentarios. En la subsección Archivos, abra el menú contextual del archivo y elija Comparar (solo lectura) o Editar archivo.

  4. Cuando usted y los demás revisores terminen de responder a los comentarios de los demás y esté listo para cerrar la revisión, haga clic en Cerrar revisión y, a continuación, elija una de las siguientes opciones:

    • Complete para indicar que la revisión ha finalizado.

    • O bien

    • Abandone para indicar que está cancelando la revisión.

Corregir la prueba y el código

Una vez leídos los comentarios de Julia, Peter corrige su prueba unitaria como sugiere. Ahora, la prueba no se realiza correctamente. Esto demuestra que el código sigue sin estar bien.

Peter corrige el código:

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

La prueba vuelve a superarse correctamente:

Explorador de pruebas unitarias que muestra una prueba superada para Equal

Sugerencia

Para corregir un error, siga el mismo procedimiento que en el desarrollo de código. Escriba una prueba que produzca un error y, a continuación, haga que la prueba se supere. Inserte en el repositorio el código y las pruebas solo cuando se superen las pruebas.

Peter ahora pone su atención en el caso de prueba en el que se descubrió el error. Los pasos para reproducir el error se describen con claridad en el elemento de trabajo del caso de prueba. Peter sigue los pasos y descubre que las facturas aparecen correctamente.

Proteger la corrección

Peter protege el código corregido y las pruebas unitarias. El estado del error se establece automáticamente en Resueltoy el valor de Asignado a se reasigna automáticamente al miembro del equipo de prueba que ha detectado el error. Este miembro del equipo comprobará que el error se ha solucionado y cerrará el elemento de trabajo.

Para proteger la corrección

Proteger una actualización para corregir un error

  1. En Team Explorer, en la página Mi trabajo, elija Comprobar.

  2. Revise el contenido de la página Cambios pendientes para asegurarse de que:

    • Todos los cambios pertinentes se enumeran en Cambios incluidos

    • Todos los elementos de trabajo pertinentes se enumeran en Elementos de trabajo relacionados.

  3. Especifique un comentario para ayudar a su equipo a comprender el propósito de estos cambios al ver el historial de control de versiones de los archivos y carpetas modificados.

  4. Elija Check In (Comprobar).

Reanudar una tarea

Peter reanuda su tarea. Puede volver al trabajo rápidamente gracias a que todos los cambios de código se restauran en su área de trabajo junto con otros elementos de estado importantes, como las ventanas abiertas, los puntos de interrupción y las variables de la ventana Inspección.

Para reanudar una tarea

Reanudar y completar una tarea

  • En Team Explorer, en la página Mi trabajo, busque la lista Trabajos suspendidos. Abra el menú contextual del elemento. Tiene dos opciones:

    • Si desea reanudar el trabajo suspendido y suspender automáticamente los cambios pendientes en el área de trabajo, elija Reanudar.

    • Si desea combinar el trabajo suspendido con cambios pendientes ya en el área de trabajo, elija Combinar con en curso.

Al reanudar el trabajo

Paneles afectados por la suspensión de un elemento de trabajo. Al reanudar el trabajo, Visual Studio restauraciones:

  • La solución abierta

  • Los cambios de código

  • El estado y la posición de las ventanas abiertas

  • Puntos de interrupción

  • Las variables y expresiones de la ventana Inspección

  • Marcadores