Web Tests utilizando Selenium y SpecFlow

martes, 13 de diciembre de 2011

En el desarrollo de aplicaciones cada vez es más  indispensable  el uso de herramientas que nos permitan automatizar nuestras pruebas. A continuación vamos a echarle un vistazo a dos herramientas que se usan para el desarrollo de tests orientados a BDD (desarrollo guiado por comportamiento),
Selenium WebDriver: Es una biblioteca que nos facilita la creación de test automatizados para aplicaciones web.
SpecFlow: Está herramienta sirve para escribir test utilizando el lenguaje Gherkin.

¿Y que es Gherkin?  

 imageEs un lenguaje común para crear test unitarios en texto plano usando el lenguaje de negocio de la misma forma que escribimos los criterios de aceptación de una historia de usuario. Esto quizás no parezca muy impresionante a simple vista, pero contar con esta declaratividad hace que los test sean fácilmente comprensibles para cualquier stakeholder, funcionando como puente conceptual entre usuarios y desarrolladores, y que finalmente  sirva como documentación ejecutable de toda la funcionalidad.
Para entender un poco mejor de qué se trata vamos con un ejemplo:
Supongamos que necesitamos probar la funcionalidad de un abm para carga de usuarios,
podríamos escribir el test de la siguiente forma,
Scenario: Add new, modify and delete  
    When add a User with description "Don Pepito" 
    When change User description "Don Pepito" to "Don José"
    And search for User "Don"
    Then should read "Don José" 
    But should not read "Don Pepito"

Una vez escrito el test lo podemos ejecutar y lo que va a pasar a continuación es que “mágicamente” (suponiendo que todo esté debidamente configurado) se va abrir una ventana con el navegador que hayamos preestablecido y automáticamente se ejecutarán las pruebas.holaDonPepito

¿Y donde está la magia?

Está en que SpecFlow nos  permite que las frases que escribimos, y representan las acciones a realizar en la aplicación, están bindeados a métodos  de test escritos utilizando WebDriver.  Entonces, si por ejemplo quisiéramos navegar a través de una de estas frases nos vamos a encontrar con algo parecido a esto,
[When(@"add a Clown with description ""(.*)""")]   
     public void WhenAddAClownWithDescription__(string description) 
     {   
         var ws = new CommonWebSteps(); 
         ws.WhenVisit("List.aspx/Option/Clowns");  
         ws.WhenPressButton("Add Clown");
         ws.WhenFillWith("Description", description);
         ws.WhenPressButton("Save");
     }
Recapitulando un poco, teniendo definidos los métodos apropiados no se necesitan conocimientos en programación para escribir pruebas de aceptación (Por cierto, además contamos con IntelliSence =D)  que  podemos ejecutar las veces que sean necesarias en varios navegadores evitándonos tediosas jornadas de clics repetitivos a través de nuestra aplicación web.  En otras palabras, es casi como tener una unidad R2D2  que hace el trabajo por nosotros!

R2D2
RobotLost 
Robots: en el futuro realizarían nuestro trabajo.
Links:
SpecFlow
Selenium

Etiquetas de Technorati: ,,,,