Tutorial: Establecer una línea de base para el entorno de desarrollo aislado
Actualización: noviembre 2007
En este tutorial, se ha creado un proyecto de base de datos y se ha sometido a control de versiones. El proyecto de base de datos contiene una definición de esquema que coincide con la de un servidor de producción. Antes de empezar el trabajo de desarrollo en ese proyecto de base de datos, desea establecer una línea de base de calidad, para lo cual preparará pruebas unitarias de base de datos, definirá un plan de generación de datos, generará datos de prueba y ejecutará las pruebas. Mediante una ejecución de prueba, generará e implementará la base de datos en su entorno de desarrollo aislado, llenará la base de datos con datos generados y ejecutará pruebas unitarias para obtener un informe de los resultados.
Las tareas ilustradas en este tutorial incluyen:
Cómo personalizar la configuración de generación para el entorno de desarrollo aislado
Cómo generar e implementar la base de datos en el entorno de desarrollo aislado
Cómo definir una prueba unitaria para un procedimiento almacenado que contiene el proyecto de base de datos
Cómo generar datos de prueba, y cómo generar y ejecutar las pruebas unitarias
Cómo compartir las pruebas unitarias con el equipo de desarrollo colocándolas en el sistema de control de versiones como parte de la solución
Requisitos previos
Debe haber instalado Visual Studio Team System Database y tener acceso a la base de datos de ejemplo AdventureWorks de Microsoft SQL Server 2005. Además, debe de haber realizado los pasos descritos en Tutorial: Crear un entorno de desarrollo aislado de bases de datos.
Para personalizar la configuración de generación para el entorno de desarrollo aislado
Si la solución AdvWorksSandbox está abierta en el Explorador de soluciones, vaya al paso 4.
En el menú Archivo, elija Abrir y, a continuación, haga clic en Proyecto o solución.
Aparecerá el cuadro de diálogo Abrir proyecto.
Haga clic en la solución AdvWorksSandbox y, después, en Abrir. (De forma predeterminada, esta solución se encuentra en Mis Documentos\Visual Studio 2005\Projects\AdvWorksSandbox.)
La solución AdvWorksSandbox se abre en el Explorador de soluciones.
En el Explorador de soluciones, haga clic en el nodo AdvWorksSandbox.
En el menú Proyecto, haga clic en Propiedades de AdvWorksSandbox.
Haga clic en la ficha Generar.
Haga clic en Editar, junto a Conexión de destino.
Aparece el cuadro de diálogo Propiedades de la conexión.
Aquí puede personalizar la cadena de conexión para el entorno de desarrollo aislado local. El proceso recomendado es que cada desarrollador trabaje en su propia copia de la base de datos, ya que de esta forma pueden realizar cambios sin perjudicar al resto del equipo. Cuando el desarrollador ha probado los cambios y esté preparado para compartirlos con el equipo, los compartirá a través del sistema del control de versiones central. En Tutorial: Crear un entorno de desarrollo aislado de bases de datos se estableció el nombre de la base de datos de destino, pero no la conexión.
Escriba o haga clic en el nombre del servidor que desea utilizar para el entorno de desarrollo aislado. Por ejemplo, para usar la instancia local escriba (local).
Haga clic en el tipo de autenticación que desea utilizar para la conexión con el servidor de bases de datos.
De forma predeterminada, se especifica Autenticación de Windows.
Haga clic en Aceptar.
En Conexión de destino se muestra la información de conexión.
En el menú Archivo, haga clic en Guardar los elementos seleccionados para guardar los cambios en las propiedades del proyecto de base de datos.
Para generar e implementar la base de datos en el entorno de desarrollo aislado
En el menú Generar, haga clic en Generar solución.
Se generará su proyecto de base de datos y los resultados aparecerán en la ventana Resultados.
En el Explorador de soluciones, haga clic en el nodo AdvWorksSandbox.
En el menú Generar, haga clic en ImplementarnombreDeProyecto. También puede hacer clic con el botón secundario en el nodo AdvWorksSandbox y hacer clic en Implementar.
Se generará el proyecto de base de datos, se creará un script de generación y, a continuación, ese script se implementará en el servidor de desarrollo de base de datos aislado que especificó en las propiedades del proyecto de base de datos. Luego generará datos de prueba para el entorno de desarrollo aislado.
Definir las pruebas unitarias
Normalmente, se definen pruebas unitarias para todos los procedimientos almacenados, funciones y desencadenadores. Sin embargo, en este tutorial, definirá solamente una prueba unitaria, a modo de ejemplo. Definirá una prueba para la función ufnLeadingZeros y el procedimiento almacenado dbo.uspGetManagerEmployees.
La función ufnLeadingZeros toma un entero y devuelve una representación de cadena VARCHAR (8) de ese entero rellenada con ceros iniciales. Para probar esta función, puede pasar un valor y comprobar que obtiene el resultado que espera.
Al procedimiento almacenado uspGetManagerEmployees se le pasa un identificador de empleado, y devuelve todos los empleados que rinden cuentas al administrador cuyo identificador ha especificado (la jerarquía completa). Dado que el generador de datos producirá los mismos datos de prueba si se le proporciona el mismo valor de inicialización, puede saber cuántas filas deberían devolverse. Esta prueba es muy sencilla. En un proyecto real, desearía crear pruebas más detalladas para comprobar si se han devuelto los empleados correctos.
Para crear pruebas unitarias
En el menú Ver, haga clic en Vista de esquema.
Si no estaba visible, aparecerá la Vista de esquema.
En Vista de esquema, haga clic con el botón secundario en la carpeta Procedimientos almacenados y haga clic en Crear pruebas unitarias.
Aparecerá el cuadro de diálogo Crear pruebas unitarias.
Expanda el árbol de selección actual y active las casillas correspondientes al procedimiento almacenado dbo.uspGetManagerEmployees y a la función dbo.ufnLeadingZeros. Desactive las casillas activadas para los demás procedimientos almacenados o funciones.
Nota: Para establecer una línea de base real para el proyecto, crearía pruebas unitarias para todas las funciones, procedimientos almacenados y desencadenadores de la base de datos. Este tutorial se centra en un procedimiento almacenado y en una función para mostrar el proceso.
En Proyecto, haga clic en "Crear un nuevo proyecto de prueba de Visual C#".
En Nombre del nuevo proyecto, escriba AWSandboxTestProjecty haga clic en Aceptar.
Se creará el proyecto de prueba unitaria y aparecerá el cuadro de diálogo Configuración del proyecto para las pruebas unitarias.
En Conexiones de base de datos, haga clic en la conexión correspondiente a AdvWorksSandbox.
En Implementación, active la casilla Implementar automáticamente el proyecto de base de datos antes de ejecutar pruebas.
En Proyecto de base de datos, haga clic en AdvWorksSandbox.dbproj.
En Estado de base de datos, active la casilla Generar datos de prueba antes de ejecutar pruebas unitarias.
En la lista Estado de base de datos, haga clic en AWGenPlan.dgen.
Active la casilla Borrar la base de datos antes de generar los datos de prueba si aún no está activada y haga clic en Aceptar.
El proyecto de prueba unitaria de base de datos se crea y se agrega a la solución. El Diseñador de pruebas unitarias de base de datos se abre para que pueda modificar las condiciones de prueba y crear sus pruebas.
Nota: Si es necesario modificar la configuración de la prueba, abra el menú Prueba y haga clic en Configuración de prueba de base de datos. Aparecerá el cuadro de diálogo Configuración del proyecto, donde podrá cambiar la configuración.
A continuación, especificará las condiciones de prueba y escribirá las pruebas.
Para definir una prueba unitaria para la función ufnLeadingZeros
En el Diseñador de pruebas unitarias de base de datos, en la lista de pruebas, haga clic en dbo.ufnLeadingZeros.
Compruebe que la segunda lista incluya "Prueba".
Reemplace las instrucciones Transact-SQL (T-SQL) del panel superior del diseñador con lo siguiente:
-- db unit test for dbo.ufnLeadingZeros DECLARE @RC VARCHAR (8), @Value INT SELECT @RC = NULL, @Value = 27 SELECT @RC = [dbo].[ufnLeadingZeros]( @Value) IF @RC <> '00000027' RAISERROR(N'ufnLeadingZero: expected "00000027" but got %s.', 16, 1, @RC) SELECT RC=@RC
En el panel Condiciones de prueba, haga clic en la condición de prueba cuyo tipo es No concluyente y elimínela haciendo clic en Eliminar condición de prueba (x).
Agregue una condición de prueba de recuento de filas; para ello, haga clic en Recuento de filas en la lista del panel Condiciones de prueba y, después, haga clic en Agregar condición de prueba (+).
En la ventana Propiedades, establezca la propiedad Recuento de filas en 1.
Si desea forzar el error de la prueba, cambie @Value de 27 a otro valor.
Para definir una prueba unitaria para el procedimiento almacenado uspGetManagerEmployees
En el Diseñador de pruebas unitarias de base de datos, en la lista de pruebas, haga clic en dbo.uspGetManagerEmployees.
Compruebe que la segunda lista incluya "Prueba".
Las instrucciones Transact-SQL (T-SQL) del panel superior del diseñador deberían ser las siguientes:
-- db unit test for dbo.uspManagerEmployees DECLARE @RC VARCHAR (8), @ManagerID INT SELECT @RC = NULL, @ManagerID = 1 EXEC @RC = [dbo].[uspGetManagerEmployees]( @ManagerID ) SELECT RC=@RC
En el panel Condiciones de prueba, haga clic en la condición de prueba cuyo tipo es No concluyente y elimínela haciendo clic en Eliminar condición de prueba (x).
Agregue una condición de prueba de recuento de filas; para ello, haga clic en Recuento de filas en la lista del panel Condiciones de prueba y, después, haga clic en Agregar condición de prueba (+).
En la ventana Propiedades, establezca la propiedad Recuento de filas en 11.
Nota: Para determinar el valor de parámetro para el procedimiento almacenado y el resultado esperado, podría utilizar el editor de Transact-SQL (T-SQL) e inspeccionar el contenido de la tabla [HumanResources].[Employee] una vez generados los datos. En este caso, el empleado cuyo EmployeeID es 1 encabeza una jerarquía de 11 personas. Por consiguiente, el procedimiento almacenado debería devolver 11 filas de datos. Siempre y cuando genere los datos de prueba con el mismo valor de inicialización, debería obtener los mismos datos cada vez.
Ahora ya está listo para ejecutar las pruebas unitarias.
Generar y ejecutar las pruebas unitarias
Ahora que ha definido las pruebas unitarias, puede generarlas y ejecutarlas.
Para generar y ejecutar las pruebas unitarias
En el Explorador de soluciones, haga clic con el botón secundario en el nodo de la solución y haga clic en Volver a generar solución.
Este paso hace que se vuelvan a generar el proyecto de base de datos y el proyecto de prueba unitaria para garantizar que todo está actualizado.
En el menú Prueba, seleccione Ventanas y, a continuación, haga clic en Vista de pruebas.
La ventana Vista de pruebas muestra varias pruebas. De forma predeterminada, se crean las pruebas denominadas ManualTest1 y TestMethod1. Las pruebas denominadas dbo_uspGetManagerEmployeesTest y dbo_ufpLeadingZeroTest son las que ha creado en este tutorial.
Active las casillas correspondientes a dbo_uspGetManagerEmployeesTest y dbo_ufpLeadingZeroTest, haga clic con el botón secundario en una de ellas y haga clic en Ejecutar selección.
Vea los resultados en la ventana Resultados de pruebas.
El proyecto de base de datos se implementa en el entorno de desarrollo aislado, se generan los datos de prueba y las pruebas se ejecutarán correctamente.
Proteger los cambios pendientes
Ahora que ha definido pruebas unitarias para detectar si los cambios perjudican a la base de datos, puede proteger las pruebas y compartir la solución con el equipo.
Para compartir la solución con el equipo
En el menú Ver, elija Otras ventanas y, a continuación, haga clic en Cambios pendientes.
Aparecerá la ventana Cambios pendientes.
En Comentario, escriba Definición de plan de generación de datos y pruebas unitarias de línea de base.
En la ventana Cambios pendientes, haga clic en Proteger en la barra de herramientas.
Aparecerá el cuadro de diálogo Comprobación en curso cuando el proyecto de base de datos y los archivos que contiene se incluyan en el sistema de control de versiones. Los iconos del Explorador de soluciones se actualizarán para mostrar que los archivos se encuentran protegidos en el sistema de control de versiones.
Pasos siguientes
Ahora que la solución está protegida en el sistema de control de versiones, cada integrante del equipo puede trabajar en las tareas que tenga asignadas. Cada persona puede trabajar en su propio entorno de desarrollo aislado hasta que los cambios estén listos para ser compartidos. En Tutorial: Desarrollo iterativo de bases de datos en un entorno aislado, utilizará la refactorización para cambiar el nombre de los objetos de base de datos en el entorno de desarrollo aislado. Generará, implementará y probará los cambios antes de protegerlos en el sistema de control de versiones para que otros miembros del equipo puedan sincronizarse.
Vea también
Tareas
Tutorial: Desarrollo iterativo de bases de datos en un entorno aislado
Conceptos
Información general acerca de la configuración del proyecto de base de datos
Descripción general de la compilación e implementación de bases de datos
Introducción a la terminología de Database Edition
Otros recursos
Descripción general de la generación de datos
Descripción general de las pruebas unitarias de base de datos