21/3/2009 13:13 El Bruno

[VSTS2010] Data Driven Coded UI Tests (genial !!!)

Buenas,

después del evento de Visual Studio 2010, me di cuenta que en 120 minutos no se puede mostrar todas las novedades es practicamente imposible. Una de las cosillas que me quedaron pendiente de mostrar son las capacidades de los impresionantes Coded UI Tests.

Hace un tiempo escribí un post sobre como crear una prueba utilizando código para testear la suma en una calculadora. Pero como el framework de tests es el mismo que conocemos desde hace tiempo, y gracias a las enseñanzas de mi amigo Edu, se me ocurrió que podría aprovechar las capacidades de Data Driven Test de Visual Studio y de esta forma crear un set de datos para probar a cascoporro la calculadora.

El siguiente tutorial muestra como cambiar el comportamiento del test creado en el post anterior para que utilice para en las pruebas los datos de un archivo CSV.

Tutorial

1. Crear un archivo CSV con los siguientes valores

2. Selecccionar el test en el panel Test View y mostrar las propiedades del mismo

3. Seleccionar la propiedad Data Connection String y editar la misma

04. Seguir los pasos del asistente y seleccionar el archivo CSV que hemos creado en el paso 1.

05. Esta acción agregará el archivo al proyecto de pruebas

06. Además modificará el test donde se decorará al mismo con los atributos necesarios para que se pueda importar los datos desde el archivo CSV.

07. Debemos en este punto modificar nuestra prueba para que quede como el siguiente ejemplo:

   1: [DeploymentItem("CalculatorTest\\AddTestData.csv"), DeploymentItem("DataAddTest.csv"), 
   2:   DeploymentItem("CalculatorTest\\DataAddTest.csv"), DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\AddTestData.csv", 
   3:   "AddTestData#csv", DataAccessMethod.Sequential), TestMethod]
   4:     public void CalculatorAddCodedUITest()
   5:     {
   6:       // Click 'Unknown Name' text box
   7:       UITestControl calculatorWindow = new UITestControl();
   8:       calculatorWindow.FrameworkName = "MSAA";
   9:       calculatorWindow.PrimarySearchProperties.Add("Name", "Calculator");
  10:       calculatorWindow.PrimarySearchProperties.Add("ClassName", "SciCalc");
  11:       calculatorWindow.SearchScope = SearchScope.VisibleOnly;
  12:       calculatorWindow.Find();
  13:  
  14:       // Click 'C' button
  15:       WinButton btnClearAction = new WinButton(calculatorWindow);
  16:       btnClearAction.PrimarySearchProperties.Add("Name", "C");
  17:       btnClearAction.SearchScope = SearchScope.VisibleOnly;
  18:       btnClearAction.Find();
  19:       btnClearAction.Click(new Point(26, 8));
  20:  
  21:       // Click First  button
  22:        WinButton btnFirstNumber = new WinButton(calculatorWindow);
  23:       btnFirstNumber.PrimarySearchProperties.Add("Name", TestContext.DataRow[0].ToString());
  24:       btnFirstNumber.SearchScope = SearchScope.VisibleOnly;
  25:       btnFirstNumber.Find();
  26:       btnFirstNumber.Click(new Point(26, 8));
  27:  
  28:       // Click '+' button
  29:       WinButton btnAddAction = new WinButton(calculatorWindow);
  30:       btnAddAction.PrimarySearchProperties.Add("Name", "+");
  31:       btnAddAction.SearchScope = SearchScope.VisibleOnly;
  32:       btnAddAction.Find();
  33:       btnAddAction.Click(new Point(26, 8));
  34:  
  35:       // Click Second button
  36:       WinButton btnSecondNumber = new WinButton(calculatorWindow);
  37:       btnSecondNumber.PrimarySearchProperties.Add("Name", TestContext.DataRow[1].ToString());
  38:       btnSecondNumber.SearchScope = SearchScope.VisibleOnly;
  39:       btnSecondNumber.Find();
  40:       btnSecondNumber.Click(new Point(26, 8));
  41:  
  42:       // Click '=' button
  43:       WinButton btnEqualAction = new WinButton(calculatorWindow);
  44:       btnEqualAction.PrimarySearchProperties.Add("Name", "=");
  45:       btnEqualAction.SearchScope = SearchScope.VisibleOnly;
  46:       btnEqualAction.Find();
  47:       btnEqualAction.Click(new Point(26, 8));
  48:  
  49:       WinWindow wndTextBox = new WinWindow(calculatorWindow);
  50:       wndTextBox.PrimarySearchProperties.Add("ClassName", "Edit");
  51:       wndTextBox.SearchScope = SearchScope.VisibleOnly;
  52:       wndTextBox.Find();
  53:       WinEdit editTextBox = new WinEdit(wndTextBox);
  54:       Assert.AreEqual(editTextBox.Value.ToString(), 
  55:         string.Format("{0}. ", TestContext.DataRow[2].ToString()));
  56:     }

 

08. En la misma podemos ver

  • Líneas 1 a 3; los atributos específicos para que la prueba utilice el archivo con los datos.
  • Líneas 23 y 37; el click específico de los botones se realiza a partir de los valores del archivo de prueba.
  • Línea 54; el resultado de la prueba se valida a partir de los valores de la 3ra columna del archivo de prueba.
  • Línea 54; aplico además un formato especial para validar el número que se obtiene desde la caja de texto.

09. Cuando ejecutamos la prueba podemos ver el siguiente resultado

donde vemos que todas las pruebas pasan correctamente, menos la 3ra. Esto es porque en la 3ra fila de datos de prueba los valores que se pasan a la prueba son “12” y “6”; y al momento de buscar un botón con el texto [12] la prueba da un error.

 

El siguiente video muestra el paso a paso de la prueba y la ejecución de la misma (ojo que la prueba tarda bastante en comenzar)

<br/><a href="http://video.msn.com/video.aspx?vid=2784e289-fdc6-42b6-8314-7e334673bf7b" mce_href="http://video.msn.com/video.aspx?vid=2784e289-fdc6-42b6-8314-7e334673bf7b" target="_new" title="VSTS 2010 Data Driven Coded UI Test">Video: VSTS 2010 Data Driven Coded UI Test</a>

 

Saludos @

El Bruno

Crossposting from ElBruno.com

Archivado en: ,,
Comparte este post:

# re: [VSTS2010] Data Driven Coded UI Tests (genial !!!)

Tuesday, March 24, 2009 2:31 PM by Juan Quijano

Mira como te quieren, Bruno, que te copian literalmente y se "olvidan" de mencionarte.

Muchas gracias, muy interesante tu artículo (como siempre, es de decir).

geeks.ms/.../pruebas-unitarias-or-237-genes-de-datos-para-alimentar-las-pruebas.aspx

# [VSTS2010] Listado de Novedades (VIII)

Monday, June 15, 2009 3:36 PM by El Bruno

Buenas, ya vamos por el 8vo recopilatorio con los posts que voy escribiendo sobre las novedades de Visual

# [VSTS2010] Listado de Novedades (X)

Monday, September 21, 2009 6:39 PM by El Bruno

Buenas, y llegó el 10mo recopilatorio con los posts que voy escribiendo sobre las novedades de

# [VSTS2010] Listado de Novedades (XI)

Tuesday, December 22, 2009 11:03 AM by El Bruno

Buenas, 11vo recopilatorio con los posts que voy escribiendo sobre las novedades de Visual Studio 2010

# [VSTS2010] Listado de Novedades (XII)

Tuesday, January 19, 2010 1:46 PM by El Bruno

Buenas, nuevo recopilatorio con los posts que voy escribiendo sobre las novedades de Visual Studio 2010