8/1/2009 16:05 El Bruno

[VSTS2010] Ejemplo de código de una CodedUITest (para los incrédulos y para los cargosos)

Buenas,

después de un par de posts sobre las CodedUITests, o pruebas para interfaz de usuario incluidas en Visual Studio Team System 2010, algunos compañeros me han dicho que no entendían nada de nada si podía explicar un poco en detalle una prueba en concreto.

Es por esto que las siguientes 36 líneas sorprenderán por su belleza sintáxica.

  1:     public static void CalculatorProductTest(int firstArgument, int secondArgument)
  2:     {
  3:       // Get Calculator Window
  4:       UITestControl calculatorWindow = new UITestControl();
  5:       calculatorWindow.FrameworkName = "MSAA";
  6:       calculatorWindow.PrimarySearchProperties.Add("Name", "Calculator");
  7:       calculatorWindow.PrimarySearchProperties.Add("ClassName", "SciCalc");
  8:       calculatorWindow.SearchScope = SearchScope.VisibleOnly;
  9:       calculatorWindow.Find();
 10: 
 11:       // get value textbox control
 12:       WinEdit valueTextBox = new WinEdit(calculatorWindow);
 13:       valueTextBox.PrimarySearchProperties.Add("ClassName", "Edit");
 14:       valueTextBox.SearchScope = SearchScope.VisibleOnly;
 15:       valueTextBox.Find();
 16: 
 17:       // Type first argument value in 'Calculator' custom control
 18:       valueTextBox.Value = firstArgument.ToString(); 
 19: 
 20:       // Click '*' button
 21:       WinButton productButton = new WinButton(calculatorWindow);
 22:       productButton.PrimarySearchProperties.Add("Name", "*");
 23:       productButton.SearchScope = SearchScope.VisibleOnly;
 24:       productButton.Find();
 25:       productButton.Click();
 26: 
 27:       // Type second argument value in text box
 28:       valueTextBox.Value = secondArgument.ToString(); 
 29: 
 30:       // Click '=' button
 31:       WinButton equalButton1 = new WinButton(calculatorWindow);
 32:       equalButton1.PrimarySearchProperties.Add("Name", "=");
 33:       equalButton1.SearchScope = SearchScope.VisibleOnly;
 34:       equalButton1.Find();
 35:       equalButton1.Click();
 36:     }

Como se puede apreciar la función estática CalculatorProductTest(), recibe dos parámetros e implementa el siguiente funcionamiento:

  1. Líneas 3 a 9, búsqueda de la calculadora.
    Para esto se busca por el título de la aplicación “Calculator” y por el ClassName que retorna el Handle de la window (este tipo de trabajo, con handles de Windows y cosillas complicadas, nos ponen palotes como dice mi amigo Edu)
    Una vez encontrada la ventana de la calculadora comenzamos a trabajar con un objeto del tipo UITestControl llamado calculatorWindow. Debería agregar una pequeña validación por si no existe, pero como en mi máquina funciona, he pasado de la misma.
  2. Líneas 12 a 15, ubicar la caja de texto de la calculadora.
    Una vez ubicada se asigna la misma a una variable del tipo WinEdit llamada valueTextBox.
  3. Línea 18, asignar el valor del primer argumento.
  4. Líneas 21 a 25, ubicar el botón de multiplicación [*] y presionar el mismo.
    Una vez ubicado se asigna el mismo a una variable del tipo WinButton llamada productButton. y se invoca el Click().
  5. Línea 28, asignar el valor del segundo argumento.
  6. Líneas 31 a 35, ubicar el botón de resultado [=] y presionar el mismo.
    Una vez ubicado se asigna el mismo a una variable del tipo WinButton llamada equalButton. y se invoca el Click().

De esta forma, teniendo la base de una función que interactua con la calculadora, puedo comenzar a crear pequeñas clases con funcionalidades aisladas e ir implementando mis pruebas de una forma ordenada. Por ejemplo:

  1:     [TestMethod]
  2:     public void ProductTestA()
  3:     {
  4:       RecordedMethods.CalculatorProductTest(22, 2);
  5:       Assert.AreEqual(uiMap.CalculatorWindow.ItemWindow.ItemEdit.Value, "44. ");
  6: 
  7:       RecordedMethods.CalculatorProductTest(2, 2);
  8:       Assert.AreNotEqual(uiMap.CalculatorWindow.ItemWindow.ItemEdit.Value, "Valentino");
  9:     }

Además recomiendo echarle un vistazo a los documentos que se pueden descargar desde

y finalmente, ver para creer. En el siguente video se puede ver como cuando se lanza la prueba sin tener la calculadora en ejecución la misma dispara una excepción (tarda un rato). Luego con la calculadora en ejecución se automatizan las acciones de un usuario y se contrasta con el resultado de las mismas.


Video: VSTS2010 CodedUITest Calculator Code Demo

 

Saludos @ La Finca

El Bruno

Crossposting from ElBruno.com
Archivado en: ,
Comparte este post:

# re: [VSTS2010] Ejemplo de código de una CodedUITest (para los incrédulos y para los cargosos)

Thursday, January 08, 2009 9:01 PM by David Daniel Arroyo Zari "Ddaz"

jeje hubiera sido mas bello si lo hacias en VB :).

yo sere de los ingredulos o de los cargosos...???? ? jeje

lo que si es que definitivamente ya me convenciste a probar el vs 2010, me habia prometido no probarlo hasta que haya un beta mas estable y serio ( ps ya vez todo lo que hubo con el vs 2005 )  pero  ya con esto de las pruebas, definitivamente me enganchaste ;)

Salu2

Ddaz

# re: [VSTS2010] Ejemplo de código de una CodedUITest (para los incrédulos y para los cargosos)

Thursday, January 08, 2009 10:43 PM by El Bruno

jejej David, prometo el proximo ejemplo en VB. y ¿cómo que todavía no te has descargado la CTP? hazlo ya ... además por lo que tengo entendido no habrá otra VM disponible por un tiempito asi que mejor seguir jugando con la que tenemos ahora.

Lo de Test UI Automation llama la atención ¿no?

Saludos

# re: [VSTS2010] Ejemplo de código de una CodedUITest (para los incrédulos y para los cargosos)

Friday, January 09, 2009 2:00 AM by David Daniel Arroyo Zari "Ddaz"

ps en si eso esto de las pruebas son buenas y malas a la vez, buenas por que ayudan mucho en las pruebas, pero malas por el sentido que las nuevas generaciones van perdiendo la nocion de ese tipo de cosas las de fondo y se vuelven mas " usuarios de herramientas" que pensadores.

pero si, nomas que termine las2 versiones del win 7 y luego sigocon el 2010, ya me pique!

Salu2

Ddaz

# [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