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
Una forma eficaz, en un solo click, para intercambiar el contexto de trabajo que funciona en un subproceso de trabajo a otro está disponible en Visual Studio Premium y Visual Studio Ultimate con Team Foundation Server.Además, los miembros del equipo pueden intercambiar facilmente mensajes sobre los cambios propuestos al código.Este tema muestra estas características, continuando un tutorial que sigue a los miembros de un activo equipo ficticio durante un día.
Peter ha estado ocupado escribiendo código para completar una tarea de elementos de trabajo pendiente. Sin embargo, sus colegas han encontrado un error que los está bloqueando y Peter desea corregirlo inmediatamente.Se suspende el trabajo que se está realizando y corrija el error.Le pide a Julia que revise la corrección y, después de la revisión, protege la corrección y reanuda el trabajo en la tarea original.
[!NOTA]
Las características de Mi trabajo y de Revisión del 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 del código
Recibir y responder a una revisión de código
Corregir la prueba y el código
Proteger la corrección.
Reanudar el trabajo en una tarea
Suspender el trabajo actual
Mientras Peter trabaja en un elemento de trabajo pendiente, Julia se acerca para hablar acerca de un error que la está bloqueando.Esta es un área con la que Peter está familiarizado, por lo que crea una tarea para corregir el error y se lo asigna a sí mismo.Peter decide iniciar el trabajo de la corrección inmediatamente.
Antes de empezar a trabajar en el nuevo error, Peter desea asegurarse de que el trabajo actual está apartado en un lugar seguro en el servidor del equipo.En la página de Mi trabajo, Peter elige Suspender para guardar (en Team Foundation Server):
Todo el trabajo que ha hecho, incluidos los cambios en el código, las pruebas y otros archivos.
Soluciones abiertas, ventanas, puntos de interrupción, variables de la ventana de inspección y otros pequeños elementos del estado de Visual Studio.
Ahora que el área de trabajo esta 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 como En Curso en la página de Mi Trabajo.Mediante Suspender y Reanudar, se pueden intercambiar rápidamente las diferentes tareas.Las soluciones y archivos abiertos, los cambios de código y el diseño de Visual Studio se intercambian juntos.
Suspender el trabajo actual y comenzar a trabajar en una tarea diferente
Conectar: Si aún no está conectado al proyecto de equipo en el que desea trabajar, entonces conectar a proyecto de equipo:
- En Explorador de equipo, elija Inicio y, después elija Mi Trabajo.
Suspender la tarea actual:
En la sección de Trabajo en curso, elija Suspender.
En el cuadro que aparece, especifique el nombre de este conjunto de trabajo suspendido, y elija el botón de Suspend .El nombre predeterminado es el elemento de trabajo actualmente en curso.
Iniciar trabajo en una tarea nueva, en un error o en otro elemento de trabajo:
Antes de seleccionar un elemento de trabajo, podría:
Crear la nueva tarea u otro elemento de trabajo eligiendo Nuevo en Elementos de trabajo disponibles; o
Seleccionar una consulta diferente en Elementos de trabajo disponibles.
Arrastre un elemento de trabajo desde Elementos de trabajo disponibles hasta Trabajo en curso.
Como alternativa, puede cambiar y trabajar con un elemento de trabajo que se suspendió previamente arrastrándolo desde Trabajo suspendido.
Sugerencia |
---|
Los elementos de trabajo actualmente en curso vinculan los cambios de su 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 adecuados están en el estado en curso cuando se cambia de una tarea a otra. |
Investigar el error
Peter abre y lee el elemento de trabajo que da error.De acuerdo con la descripción que ha sido presentada por un miembro del equipo de prueba, una factura pagada algunas veces aparece señalada incorrectamente como no pagada.Hay una instantánea del entorno de laboratorio conectada para el elemento de trabajo que da error.Peter es capaz de abrir las máquinas virtuales en las que la prueba se ejecutó, consultar la factura incorrecta y retroceder a través del registro IntelliTrace.Realiza un seguimiento de errores hasta el método siguiente:
public class LocalMath
{
public static bool EqualTo(double a, double b)
{
return a == b;
}
Desde el registro de IntelliTrace, Peter ve que en ocasiones el método devuelve false porque los parámetros se diferencian 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 probar los números de punto flotante para buscar igualdad.
Aumentar las pruebas para mostrar el error
Cuando se encuentra un error, éste muestra que había un intervalo en las pruebas unitarias, o que la prueba no coincide con las necesidades reales de los usuarios.Por lo tanto, antes de corregir el error, Peter agrega una prueba que 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 un error tal y como esperaba.
Hacer que las pruebas sean superadas.
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;
}
La prueba ahora se supera.
Solicitar una revisión de código
Cumplen a Peter con la corrección del error, pero no haga proteger el trabajo todavía.El equipo utiliza revisiones de código que aumentan la calidad del código en conjunto y reducen el riesgo de crear otros errores, por lo que Peter usa el Explorador de equipo para solicitar una revisión del código a sus compañeros de equipo Julia y Adán.
Para solicitar una revisión de código .
En Team Explorer, en la página Mi trabajo , elija Revisión de solicitud.
la página de nueva Revisión de código aparece.
Especifique uno o más revisores.
Especifique el nombre de revisión.
Especifique la ruta de acceso de área.
especifique un comentario a los revisores.
elija Muestre la solicitud.
Los revisores serán notificados mediante correo electrónico de la solicitud.
También puede aplicar una revisión del código de trabajo suspendido, un conjunto, o un conjunto de cambios.
Aceptar o rechazar una revisión de código
Julia recibe y acepta la solicitud de revisión de código.Ella revisa el código, escribe algunos comentarios en los los niveles de archivo y de bloque de código y luego devuelve a Peter la revisión del código.Adán 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 tanto la prueba debe multiplicar el error por 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, las pruebas a menudo son más fáciles de explicar que el código. |
Para realizar una revisión de código
En Team Explorer, en la página de Mi trabajo , vaya a la sección de Mis revisiones de código y solicitudes y abra la solicitud.
En la página de Revisión del código , puede:
Elija Aceptar o Rechazar para notificar al autor si realizará la revisión.
Elija Agregar revisor para agregar otros revisores a la solicitud de revisión de código.
Ver los cambios en cada archivo que se ha actualizado para este elemento de trabajo.
Expanda Comentarios para comentar los cambios con el autor y los demás revisores.
Elija Agregar comentario general
O bien
Seleccione un bloque de código y después elija Agregar comentario en el menú contextual.
- Elija Enviar comentarios para hacer las contribuciones visibles al autor y a otros revisores.
Elija Envíe y finalice para completar su revisión, indicando si el código necesita más trabajo.
Responder a una revisión de código
Peter recibela revisión de código de Julia y la responde.
Responder a la Revisión de código
Los revisores y el autor del código pueden cambiar comentarios tan a menudo como gusten.La revisión termina cuando el autor la cierra.Con cada contribución a la discusión, los demás participantes serán notificados mediante correo electrónico.
En Team Explorer, en la página de Mi trabajo , vaya a la sección de Mis revisiones de código y solicitudes y haga doble clic en la solicitud.
También puede abrir el menú contextual para la solicitud y elija 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 para el archivo y elija bien Comparar (sólo lectura) o Editar archivo.
Cuando usted y los demás revisores terminan de responder a los comentarios de cada uno y usted está listo para cerrar la revisión, haga clic en Cerrar Revisión y después elija ya sea:
Completar para indicar que la revisión ha finalizado.
-O bien-
Abandonar para indicar que está cancelando la revisión.
Corregir la prueba y el código
Tras haber leído los comentarios de Julia, Peter corrige su prueba unitaria como ella sugiere.La prueba ahora falla.Esto muestra que el código todavía no es correcto.
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;
}
Una vez más, la prueba es superada:
Sugerencia |
---|
Para corregir un error, siga el mismo procedimiento que ha seguido en el desarrollo de código.Escriba una prueba que falla y, a continuación, haga que la prueba sea superada.Proteja el código y las pruebas sólo cuando las pruebas se superan. |
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 de casos de prueba.Peter sigue los pasos y descubre que las facturas figuran en la lista correctamente.
Proteja 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 Asignado A automáticamente se vuelve a asignar a los miembros del equipo de prueba que descubrieron el error.Este miembro del equipo comprobará que el error se ha solucionado y cierra 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:
Se enumeran todos los cambios pertinentes en Cambios incluidos
Todos los elementos de trabajo relevantes se enumeran en Elementos de trabajo relacionados.
Especifique un Comentario para ayudar a su equipo a comprender el propósito de estos cambios cuando examinen el historial del control de versión de los archivos y carpetas cambiados.
Elija Comprobar.
Reanudar el trabajo en una tarea
Peter vuelve a trabajar en su tarea.Es capaz de volver a trabajar rápidamente debido a que todos los cambios realizados en sus código se restauran en su área de trabajo junto con importantes partes de estado, como las ventanas abiertas, los puntos de interrupción y las variables de ventana de inspección.
para reanudar trabajo en una tarea
En Team Explorer, en la página de Mi trabajo , busque la lista de Trabajo suspendido y aplazado .Abra el menú contextual para el elemento.Ahora tiene dos opciones:
Si desea reanudar el trabajo suspendido y suspender automáticamente cualquier cambio pendiente en el área de trabajo, seleccione Reanudar.
Si desea combinar los trabajos suspendidos con los cambios pendientes en el área de trabajo, seleccione Combinación con En curso.
Cuando reanude el trabajo
Cuando reanude el trabajo, se restaura Visual Studio:
Su solución abierta
Su código cambia
El estado y la posición de las ventanas abiertas
Puntos de interrupción
Variables y expresiones de la ventana inspección
Marcadores