Crear una prueba de IU codificada controlada por datos
Para probar las distintas condiciones, puede ejecutar las pruebas varias veces con distintos valores de parámetros.Las pruebas de IU codificada controlada por datos son una forma cómoda de hacerlo.Defina los valores de parámetros en un origen de datos, y cada fila de dicho origen de datos será una iteración de la prueba de IU codificada.El resultado general de la prueba se basará en el resultado de todas las iteraciones.Por ejemplo, si se produce un error en una iteración de la prueba, el resultado general es error.
Requisitos
- Visual Studio Ultimate, Visual Studio Premium
Crear una prueba de IU codificada controlada por datos
En este ejemplo se crea una prueba de IU codificada que se ejecuta en la aplicación Calculadora de Windows.Esta suma dos números y utiliza una aserción para validar que la suma sea correcta.A continuación, la aserción y los valores de parámetro de ambos números se codifican para que se controlen por datos y se almacenan en un archivo de valores separados por comas (.csv).
Paso 1: crear una prueba de IU codificada
Cree un proyecto.
Elija la opción de grabar las acciones.
Abra la aplicación Calculadora y empiece a grabar la prueba.
Sume 1 más 2, pause la grabadora y genere el método de prueba.Más adelante reemplazaremos los valores de entrada del usuario con los valores de un archivo de datos.
Cierre el generador de pruebas.El método se agrega a la prueba:
[TestMethod] public void CodedUITestMethod1() { // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items. this.UIMap.AddNumbers(); }
Use el método AddNumbers() para comprobar que se ejecuta la prueba.Coloque el cursor en el método de prueba que se muestra arriba, abra el menú contextual y elija Ejecutar pruebas.(Método abreviado de teclado: Ctrl + R, T).
El resultado que indica si se ha superado la prueba se muestra en la ventana del Explorador de pruebas.Para abrir la ventana del Explorador de pruebas, en el menú PRUEBA, elija Windows y, a continuación, seleccione Explorador de pruebas.
Como un origen de datos puede utilizarse también para los valores de parámetro de aserción (los cuales utiliza la prueba para comprobar los valores esperados), vamos a agregar una aserción para validar que la suma de los dos números es correcta.Coloque el cursor en el método de prueba que se muestra arriba, abra el menú contextual y elija Generar código para prueba de IU codificada y, a continuación, Usar generador de pruebas de IU codificadas.
Asigne el control de texto de la calculadora que muestre la suma.
Agregue una aserción que valide que el valor de la suma es correcto.Elija la propiedad DisplayText que tiene el valor 3 y, a continuación, seleccione Agregar aserción.Use el comparador AreEqual y compruebe que el valor de comparación es 3.
Después de configurar la aserción, vuelva a generar código en el generador.De este modo se crea un nuevo método para la validación.
Dado que el método ValidateSum valida los resultados del método AddNumbers, desplácelo a la parte inferior del bloque de código.
public void CodedUITestMethod1() { // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items. this.UIMap.AddNumbers(); this.UIMap.ValidateSum(); }
Compruebe que la prueba se ejecuta utilizando el método ValidateSum().Coloque el cursor en el método de prueba que se muestra arriba, abra el menú contextual y elija Ejecutar pruebas.(Método abreviado de teclado: Ctrl + R, T).
En este momento, todos los valores de parámetro se definen en sus métodos como constantes.A continuación, vamos a crear un conjunto de datos para realizar la prueba controlada por datos.
Paso 2: crear un conjunto de datos
Agregue al proyecto dataDrivenSample un archivo de texto llamado data.csv.
Llene el archivo .csv con los siguientes datos:
Num1
Num2
Sum
3
4
7
5
6
11
6
8
14
Después de agregar los datos, el archivo debería ser similar al siguiente:
Es importante que guarde el archivo .csv utilizando la codificación correcta.En el menú ARCHIVO, elija Opciones avanzadas para guardar y seleccione Unicode (UTF-8 sin firma) – Página de códigos 65001 como codificación.
El archivo .csv debe copiarse en el directorio de salida; de lo contrario, no podrá ejecutarse la prueba.Utilice la ventana Propiedades para copiarlo.
Ahora que hemos creado el conjunto de datos, vamos a enlazar los datos a la prueba.
Paso 3: agregar enlaces de origen de datos
Para enlazar el origen de datos, agregue un atributo DataSource al atributo [TestMethod] existente situado inmediatamente encima del método de prueba.
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\data.csv", "data#csv", DataAccessMethod.Sequential), DeploymentItem("data.csv"), TestMethod] public void CodedUITestMethod1() { // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items. this.UIMap.AddNumbers(); this.UIMap.ValidateSum(); }
El origen de datos está ahora disponible para su uso en este método de prueba.
Sugerencia Consulte los ejemplos de atributo de origen de datos en la sección de preguntas y respuestas. Allí encontrará ejemplos del uso de otros tipos de origen de datos, como XML, SQL Express y Excel.
Ejecute la prueba.
Tenga en cuenta que la prueba se ejecuta a través de tres iteraciones.Esto se debe a que el origen de datos que se enlazó contiene tres filas de datos.Sin embargo, también observará que la prueba sigue utilizando los valores de parámetro constantes y que suma 1 + 2, lo que genera cada vez un resultado de 3.
A continuación, configuraremos la prueba para utilizar los valores del archivo de origen de datos.
Paso 4: utilizar los datos de la prueba de IU codificada
Agregue using Microsoft.VisualStudio.TestTools.UITesting.WinControls al principio del archivo CodedUITest.cs:
using System; using System.Collections.Generic; using System.Text.RegularExpressions; using System.Windows.Input; using System.Windows.Forms; using System.Drawing; using Microsoft.VisualStudio.TestTools.UITesting; using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UITest.Extension; using Keyboard = Microsoft.VisualStudio.TestTools.UITesting.Keyboard; using Microsoft.VisualStudio.TestTools.UITesting.WinControls;
Agregue TestContext.DataRow[] en el método CodedUITestMethod1() que aplicará valores del origen de datos.Los valores del origen de datos reemplazan las constantes asignadas a los controles UIMap utilizando los controles SearchProperties:
public void CodedUITestMethod1() { // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items. this.UIMap.UICalculatorWindow.UIItemWindow.UIItem1Button.SearchProperties[WinButton.PropertyNames.Name] = TestContext.DataRow["Num1"].ToString(); this.UIMap.UICalculatorWindow.UIItemWindow21.UIItem2Button.SearchProperties[WinButton.PropertyNames.Name] = TestContext.DataRow["Num2"].ToString(); this.UIMap.AddNumbers(); this.UIMap.ValidateSumExpectedValues.UIItem2TextDisplayText = TestContext.DataRow["Sum"].ToString(); this.UIMap.ValidateSum(); }
Para averiguar qué propiedades de búsqueda tienen datos por codificar, utilice el Editor de pruebas de IU codificadas.
Abra el archivo UIMap.uitest.
Elija la acción de la IU y observe la asignación de controles de IU correspondientes.Fíjese en cómo la asignación se corresponde con el código, por ejemplo, this.UIMap.UICalculatorWindow.UIItemWindow.UIItem1Button.
En la ventana Propiedades, abra Propiedades de búsqueda.El valor Nombre de las propiedades de búsqueda es lo que se está manipulando en el código que utiliza el origen de datos.Por ejemplo, a SearchProperties se le asignan los valores de la primera columna de cada fila de datos: UIItem1Button.SearchProperties[WinButton.PropertyNames.Name] = TestContext.DataRow["Num1"].ToString();.Para las tres iteraciones, esta prueba cambiará el valor Nombre de la propiedad de búsqueda a 3, 5 y, por último, 6.
Guarde la solución.
Paso 5: ejecutar la prueba controlada por datos
Compruebe que la prueba está ahora controlada por datos ejecutándola de nuevo.
Debería ver como la prueba se ejecuta en las tres iteraciones utilizando los valores del archivo .csv.La validación también debería funcionar y la prueba debería mostrarse como superada en el Explorador de pruebas el paso.
Guía
Para obtener más información, consulte Pruebas para la entrega continua con Visual Studio 2012 – Capítulo 2: Pruebas unitarias: prueba interna y Pruebas para la entrega continua con Visual Studio 2012 – Capítulo 5: Pruebas del sistema automatizado.
Preguntas y respuestas
¿Cuáles son los atributos de fuente de datos para otros tipos de orígenes de datos, como SQL Express o XML?
Puede utilizar las cadenas de origen de datos de muestra de la tabla siguiente copiándolas en el código y personalizándolas en caso necesario.
Tipo de origen de datos |
Atributo de origen de datos |
---|---|
CSV |
|
Excel |
|
Caso de prueba de Team Foundation Server |
|
XML |
|
SQL Express |
|
P: ¿Puedo usar pruebas controladas por datos en mi aplicación de Windows Phone?
R: Sí.Las pruebas de interfaz de usuario codificadas controladas por datos para Windows Phone se definen mediante el atributo DataRow en un método de prueba.En el siguiente ejemplo, x e y usan los valores 1 y 2 para la primera iteración y -1 y -2 para la segunda iteración de la prueba.
[DataRow(1, 2, DisplayName = "Add positive numbers")]
[DataRow(-1, -2, DisplayName = "Add negative numbers")]
[TestMethod]
public void DataDrivingDemo_MyTestMethod(int x, int y)
Para obtener más información, vea Use Data-driven coded UI tests on Windows Phone apps.
P: ¿Por qué no puedo modificar el código en el archivo UIMap.Designer?
R: Cualquier cambio que se realice en el código del archivo UIMapDesigner.cs se sobrescribirá cada vez que se genere código mediante UIMap - Generador de pruebas de IU codificadas.En este ejemplo, y en la mayoría de los casos, los cambios de código necesarios para habilitar una prueba para utilizar un origen de datos pueden introducirse en el archivo de código fuente de la prueba (es decir, CodedUITest1.cs).
Si tiene que modificar un método grabado, debe copiarlo en el archivo UIMap.cs y cambiar el nombre.El archivo UIMap.cs se puede utilizar para invalidar métodos y propiedades en el archivo UIMapDesigner.cs.Debe quitar la referencia al método original en el archivo UITest.cs el Codificado y reemplazarlo con el nombre del método cuyo nombre ha cambiado.
Vea también
Referencia
Conceptos
Comprobar el código usando la automatización de IU
Procedimientos recomendados para las pruebas de IU codificadas