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)
- Copiar la componente Microsoft.Web.Testing.Lightweight.dll en la carpeta Bin (donde si no?).
NOTA:Esta release es del Sep.2008, si van a Codeplex podrán descargar la nueva versión - 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)
- 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
- 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
Ejecutando los test
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?
Enlaces
- ASP.NET QA Team: How do we write test automation for ASP.NET?
http://weblogs.asp.net/asptest/archive/2008/09/25/how-do-we-write-test-automation-for-asp-net.aspx
Gracias por el ejemplo, esta muy bueno.