Un día en la vida de un desarrollador de ALM: Suspender el trabajo, corregir un error y realizar una revisión de código
Publicada: abril de 2016
En Visual Studio Premium y Visual Studio Ultimate con Team Foundation Server, existe un mecanismo eficaz que permite cambiar el contexto de trabajo de un subproceso de trabajo a otro con un solo clic. 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.Pero sus compañeros de trabajo han encontrado un error que no les permite continuar y Peter 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 Peter utiliza solo están disponibles en Visual Studio Premium y Visual Studio Ultimate.
En este tema
Suspender el trabajo actual y comenzar a trabajar en un error
Investigar el error
Solicitar una revisión de código
Aceptar y llevar a cabo (o rechazar) una revisión de código
Recibir una revisión de código y responder a ella
Corregir la prueba y el código
Proteger la corrección
Reanudar una tarea
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 comenzar a trabajar en el nuevo error, quiere asegurarse de que el trabajo actual que ha dejado momentáneamente se encuentra en un lugar seguro del 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 el área de trabajo está limpia, Peter arrastra la nueva tarea desde Elementos de trabajo disponibles hasta Trabajo en curso. Está preparado 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.Si usa 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
Conectar: conéctese al proyecto de equipo en el que quiera trabajar, si aún no lo está.
- En Team Explorer, elija Inicio y, a continuación, Mi trabajo.
Suspender la tarea actual:
En la sección Trabajo en curso, elija Suspender.
En el cuadro que aparece, especifique el nombre que desea asignar a este conjunto de trabajo suspendido y elija el botón Suspender. El nombre predeterminado es el nombre del elemento de trabajo que está actualmente en curso.
Iniciar el trabajo en una tarea nueva, en un error o en otro elemento de trabajo:
Antes de seleccionar un elemento de trabajo, tal vez desee:
Crear una nueva tarea u otro elemento de trabajo; para ello, elija Nuevo en Elementos de trabajo disponibles; o bien
Seleccionar una consulta diferente en Elementos de trabajo disponibles.
Arrastre un elemento de trabajo desde Elementos de trabajo disponibles hasta Trabajo en curso.
Si lo desea, también puede cambiar a un elemento de trabajo que haya suspendido anteriormente; para ello, arrástrelo desde 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, este indica que o no se había cubierto un aspecto en las pruebas unitarias o que la prueba no se ajustaba a 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.
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:
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 utiliza revisiones de código que aumentan la calidad global del código y reducen el riesgo de que se produzcan otros 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
En Team Explorer, en la página Mi trabajo, elija Solicitar revisión.
Aparecerá la página Nueva revisión de código.
Especifique uno o varios revisores.
Especifique el nombre de la revisión.
Especifique la ruta de acceso del área.
Escriba un comentario para los revisores.
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 los conjuntos de cambios, abra el 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.
Para realizar una revisión de código
En Team Explorer, en la página Mi trabajo, vaya a la sección Mis revisiones de código y solicitudes y abra la solicitud.
En la página Revisión de código, puede:
Elegir Aceptar o Rechazar para notificar al autor si realizará o no la revisión.
Elegir 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.
Expandir la sección Comentarios para comentar los cambios con el autor y los demás revisores.
Elegir Agregar comentario general
O bien
Seleccionar un bloque de código y después elegir Agregar comentario en el menú contextual.
- Elegir Enviar comentarios para que el autor y otros revisores puedan ver sus contribuciones.
Elegir Enviar y finalizar para completar la revisión e indicar 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.
En Team Explorer, en la página Mi trabajo, vaya a la sección Revisiones de código y solicitudes y haga doble clic en la solicitud.
También puede abrir el menú contextual de la solicitud y elegir Abrir.
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 después elija Aceptar. Para enviar sus comentarios, elija Enviar comentarios.
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 Comparación (solo lectura) o Editar archivo.
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 después elija:
Completar para indicar que la revisión ha finalizado.
-O bien-
Abandonar para indicar que va a cancelar la revisión.
Corregir la prueba y el código
Después de leer los comentarios de Julia, Peter corrige la prueba unitaria siguiendo las sugerencias de ella. 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:
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.Proteja 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 Resuelto y el valor Asignado a se reasigna automáticamente al miembro del equipo de prueba que descubrió el error. Este miembro del equipo comprobará que el error se ha solucionado y cerrará el elemento de trabajo.
Para proteger la corrección
En Team Explorer, en la página Mi trabajo, elija Proteger.
Revise el contenido de la página Cambios pendientes para asegurarse de que:
Todos los cambios pertinentes aparecen en Cambios incluidos.
Todos los elementos de trabajo relevantes aparecen en Elementos de trabajo relacionados.
Especifique un Comentario para ayudar al equipo a comprender el propósito de estos cambios cuando examinen el historial del control de versiones en los archivos y carpetas modificados.
Elija Proteger.
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
En Team Explorer, en la página Mi trabajo, busque la lista Trabajo suspendido y aplazado. Abra el menú contextual del elemento. Tiene dos opciones:
Si desea reanudar el trabajo suspendido y suspender automáticamente cualquier cambio pendiente en el área de trabajo, elija Reanudar.
Si desea combinar el trabajo suspendido con los cambios pendientes que ya están en el área de trabajo, elija Combinar con En curso.
Al reanudar el trabajo
Cuando reanude el trabajo, Visual Studio restaurará:
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
Comprobar que se ha corregido el error
Si el error fue detectado por equipo de pruebas, lo más probable es que hayan vinculado casos de prueba a este, los cuales volverán a ejecutarse. Más información.