Herramientas: Web Testing Utilizando Visual Studio Team Edition for Software Testers

Con la llegada de Visual Studio 2005 Team System, Microsoft intentó crear un ambiente integrado de desarrollo de software en el cual todas las actividades del ciclo pudieran tomar lugar. Para satisfacer las necesidades de pruebas del desarrollo de software, Microsoft creó Visual Studio 2005 Team Edition for Software Testers. Desde aquel lanzamiento, Microsoft ha puesto en el mercado la versión 2008 de su Team System suite. Además, existen planes para lanzar la versión 2010 en un futuro cercano. Esta versión tendrá un énfasis en las actividades e integración de testing. A diferencia de la mayoría de los productos comerciales, el objetivo de Test Edition no es la captura de las actividades del teclado o mouse. La herramienta se enfoca en la captura de las interacciones http y https entre el cliente y los servidores web. Este enfoque alivia en algo la frustración que viene con el uso de las herramientas basadas en la grabación de eventos en la interface gráfica del usuario.

Este artículo proporciona información acerca de conceptos básicos de la herramienta. El objetivo es dar a los lectores una idea de cómo implementar la herramienta en poco tiempo y sin los dolores de cabeza comúnmente asociados con el comienzo de la automatización de pruebas.Creando web tests
Ya que los web test solamente están disponibles en Proyectos Test, el primer paso hacia la creación de un web test es la creación del proyecto. Nótese que el tipo de proyecto Test solo existe como componente
del Test Edition de Team System. Puedes agregar el proyecto a una solución existente o crear una nueva. Selecciona New > Project desde el menú File para aparecer el dialogo de New Project. Selecciona el tipo de proyecto Test, su nombre, .Net Framework que deseas, y la solución que de deseas utilizar.

Una vez creado el proyecto, debes agregar el web test. Para agregar el web test puedes oprimir el ícono de New Test o seleccionar New Test desde el menú de Test. Los diferentes tipos de prueba aparecen en el dialogo de Add New Test. Los tipos de pruebas que existen incluye: Generic, Web, Load, Manual, Ordered, y Unit. Selecciona Web Test y captura el nombre para la prueba y el proyecto que vas a comenzar. Una vez que hayas presionado OK aparecerá una sesión en blanco de Internet Explorer lista para iniciar la grabación de actividad del navegador. Los controles de grabación te permiten comenzar, detener, parar, comentar o borrar la grabación. Estoy utilizando www.sg.com.mx como dirección para este ejemplo. Nótese que en cuanto comienza la actividad http se empieza a grabar. Esto se puede ver en el árbol jerárquico de las requisiciones http que aparece bajo los controles de grabación.

Mientras estoy grabando actividad, entro a mi cuenta en el sitio utilizando
el link ‘Actualizar Datos’ y reviso información personal. Para finalizar la grabación oprimo el botón Stop en los controles correspondientes. Al hacer esto, la herramienta comienza la detección automática de parámetros dinámicos. Los parámetros dinámicos son aquellos que se utilizan de manera subsecuente al primer uso en la grabación. Una vez identificados los parámetros dinámicos, el sistema ofrece la oportunidad de promoverlos para que sean utilizados en corridas posteriores.


Al completar el paso anterior, el sistema despliega la prueba y el árbol de llamadas http(s). Este es el resultado de la grabación con los parámetros utilizados para mi acceso al sitio. Advertencia: La herramienta no utiliza encriptado. Por lo tanto, todo el tráfico es visible. Yo oculte mi clave para este ejercicio.

Como buena práctica, corre el web test para asegurarte que funciona adecuadamente. Al terminar la prueba, el sistema te desplegará un panel de resultados. Para verificar las razones de fallas puedes oprimir el link de ‘Test run completed’. Esto mostrará una lista detallada de la corrida de la prueba. Procedamos a agregar validaciones propias.

Agregando validaciones propias
La herramienta agrega muchas validaciones propias. Asegura que la página se muestre, verifica que las redirecciones http que ocurrieron durante la grabación sean válidas al momento de ejecución,
etc. Sin embargo, el usuario aún querrá agregar validaciones propias. Para esto es necesario identificar la llamada http que se desea validar. Para agregar validaciones a la página de Actualizar Datos solo hay que dar click derecho en la validación y seleccionar ‘Add Validation Rule’ del menú. Un caja de diálogo aparece con las validaciones suministradas por la herramienta. Los tipos de validaciones
posibles incluyen: Form Field, Find Text, Maximum Request Time, Required Attribute Value, Required Tag, y Response URL.

La validación de Form Field verifica que un campo en la página tenga el valor esperado. Un buen uso par esta validación se presenta en los campos defaults. La validación de Find Text verifica la existencia o inexistencia de determinado texto en la página. Yo lo utilizo buscando con la opción “fallar si encuentra el texto”, para buscar mensajes de texto comunes en errores de programación. Hay que recordar que la búsqueda solamente se hace a nivel HTML, así que puede haber texto embebido en la página sin ser visible.

La última validación nos permite fijar estándares de desempeño. Puedes definir cuánto es el tiempo máximo permisible para que cargue una página de tu aplicación. ‘Level’ es una propiedad común
entre todas las reglas de validación. Cualquier web test puede utilizarse durante pruebas de carga (load testing). Esta propiedad determina cuando se incluirán en un escenario de pruebas de carga. Como un bono, la herramienta de pruebas de carga (Load Testing) es incluida como parte del paquete de Test Edition.

Ejecutando la prueba con validaciones
Para ejecutar la prueba con validaciones, selecciona el botón de ejecutar para que la prueba corra. El sistema proporciona información para saber si la prueba pasa o falla. Para obtener un reporte detallado de los resultados hay que seleccionar el link de ‘Test run pass / fail’. Al hacer esto, el sistema proporciona el detalle de todas las llamadas http con información acerca del estado del navegador, datos de la requisición, respuesta obtenida, contexto y detalles. Los detalles de nuestras validaciones se encuentran en la tableta de detalles. En la muestra, una de las validaciones falló. El sistema suministra el detalle de la falla. La presencia de una sola falla de validación marcará toda la prueba como fallida.

Con la integración de Team Foundation Server, podrías tomar los resultados y publicarlos para tener control de todas las pruebas ejecutadas. También es posible la creación de bugs mediante la utilización de estos resultados.


Es posible tener mayor control sobre la creación de Web Tests mediante la utilización de Coded Web Tests. Estos son Web Tests que se crean y existen en código. Para crearlos se puede utilizar del botón designado o comenzando en blanco, haciendo uso de las programación utilizando las librerías de WebTesting que vienen con el paquete. También es posible programar extensiones
al producto, tales como reglas propias para la extracción y validación del sistema.

Conclusión
La creación de Web Tests utilizando Microsoft Test Edition es rápida, sencilla y eficiente. Debido a su dependencia en llamadas http e información HTML, es posible obtener resultados consistentes al ejecutar las pruebas minimizando así el tiempo dedicado a la modificación de pruebas existentes. La herramienta también proporciona la capacidad de ejecutar pruebas de carga y performance sin ningún costo adicional. Además de tener tremenda sinergia al utilizarse con Team Foundation Server. Al utilizarse apropiadamente, los beneficios que se pueden obtener con esta herramienta son muchos. Espero la oportunidad de escribir más acerca de esto en artículos futuros. Si tienes alguna duda o sugerencia puedes comunicarte conmigo en el correo benalonso@computer.org.

Acerca del Autor
Benjamín Ruvalcaba Alonso tiene más de 18 años de experiencia en proyectos de informática. Ha trabajado en Microsoft, GE y otras empresas públicas y privadas. Ha dedicado los últimos seis años al testing de diversas aplicaciones web.