Testing ASP.NET Website: Lightweight Test Automation Framework

El equipo que testea la calidad de los productos liberados de ASP.NET (parece que es algo así…) comparte con nosotros su framework de test “liviano”, ya que es una simple componente que podemos agregar a nuestros proyectos y realizar los test, es decir podremos hacerlo con las versiones express de VS2005/VS2008
NOTA: Esto lo tengo desde hace “varias” semanas en el borrador (desde Octubre.2008 ) y justo ayer leo un post que salió una nueva release (4.Feb.2009) así que lo volví a sacar brillo y aquí esta.

Para lo que queremos ver inmediatamente la ayuda online, en este caso no la tenemos “todavía” pero tenemos la firme propuesta del equipo de ASP.NET QA Team en su Roadmap, por ahora solo podemos descargar un ejemplo sencillo para ir “previsualizando este framework”

Para descargar el ejemplo el enlace se  encuentra al final del articulo.

 

Como utilizarlo?

Para poder utilizarlo simplemente hay que seguir 3 pasos para armarlo, y ejecutarlo (paso 4)

  1. Copiar la componente Microsoft.Web.Testing.Lightweight.dll en la carpeta Bin (donde si no?).
    image 
    NOTA:Esta release es del Sep.2008, si van a Codeplex podrán descargar la nueva versión
  2. Copiar dos archivos Default.aspx y DriverPage.aspx en una carpeta, que por convención nos proponen en una carpeta Test
    (en las versión definitiva no tendremos que copiar cosas extrañas a nuestro proyecto)
    image
  3. Crear una/s clase/s Test
    (Para aclarar un poco mas, si tenemos un Proyecto Website en la carpeta App_Code, en cambio en un Aplicación Web en cualquier lugar de nuestro proyecto)
    Creamos la clase de test importando Microsoft.Web.Testing.Light con atributos especiales en la clase <WebTestClass()> y en los métodos <WebTestMethod()>
    Como veran en el ejemplo es muy sencillo vamos a ir “escrudiñando” la pagina, en donde se encuentra una tabla de Productos que vamos a realizar un ordenamiento y luego un paginado. Se tiene que poder reproducir este test las veces que sea necesario por eso no nos sirve de mucho este ejemplo, solo quería ser eso un ejemplo de como utilizar incluso con postback, también podemos detectar y esperar un postback asincrónico con …Click(WaitFor.AsyncPostback)
    En el ejemplo que se puede descargar de Codeplex contiene postback asincrónico, y edición de un gridview.

    Ejemplo:

    Imports Microsoft.VisualBasic
    Imports Microsoft.Web.Testing.Light
    
    <WebTestClass()> _
    Public Class ProductListTests
    
        <WebTestMethod()> _
        Public Sub ProductosListadoOrdenamientoTest()
    
            Dim pagina As HtmlPage = New HtmlPage
            pagina.Navigate("/Products/ProductList.aspx")
    
            Dim gvProduct As HtmlTableElement = CType(pagina.Elements.Find("gvProduct"), HtmlTableElement)
    
            'Ordenando por la primer columna Name de Products
            gvProduct.Rows(0).Cells(1).ChildElements(0).Click(WaitFor.Postback)
    
            'Verificando la operacion de ordenamiento
            Assert.AreEqual("AWC Logo Cap", gvProduct.Rows(3).Cells(1).GetInnerText())
    
        End Sub
    
    
        <WebTestMethod()> _
        Public Sub ProductosListadoPaginadoTest()
    
            Dim pagina As HtmlPage = New HtmlPage
            pagina.Navigate("/Products/ProductList.aspx")
    
            Dim gvProduct As HtmlTableElement = CType(pagina.Elements.Find("gvProduct"), HtmlTableElement)
    
            'Verificando el ultimo registro de la pagina 1, columna 2 ("Product Number")
            Assert.AreEqual("CN-6137", gvProduct.Rows(10).Cells(2).GetInnerText())
    
            'Ir a Pagina 3
            gvProduct.Rows(11).ChildElements.Find("a", 1).Click(WaitFor.Postback)
    
            'Verificando el ultimo registro de la pagina 3, columna 2 ("Product Number")
            Assert.AreEqual("FW-9160", gvProduct.Rows(10).Cells(2).GetInnerText())
    
    
        End Sub
    
    
    End Class
  4. Ejecutar los test

    En la versión preliminar de este componente habia que ir a la carpeta Test (con unos archivos especiales) que nos ayudan a ejecutarlos (creo que en la beta que salió ya no es necesario, pero queda para otro post)

    Por un lado el listado de Test que queremos correr y por el otro la pagina donde efectivamente se “ejecutara” esta navegación automática

    image

 

 

Ejecutando los test

image

Si da un error el test obviamente el color de fondo será rojo 🙂

 

 

Demo

La demo las puedes descargar de aquí

Si no puedes visualizar click aquí

  • Utilizo la DB: AdventureWork (para descargar por aqui).. esta vez no utilice AdventureWorkLT (para la próxima)
  • Que tiene la demo?

    image

 
 

 

Enlaces

Un comentario sobre “Testing ASP.NET Website: Lightweight Test Automation Framework”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *