Post on 11-Aug-2021
Herramientas open source para testing de aplicaciones
Web. Evaluación y usos.
F. Javier DíazClaudia M. Banchoff Tzancoff
Anahí S. RodríguezValeria Soria
{javier.diaz, claudia.banchoff, anahi.rodriguez, valeria.soria}@linti.unlp.edu.ar
LINTI. Fac. de Informática, Universidad Nacional de La Plata.La Plata, 1900, ARGENTINA
Aplicación Web
• Myers: “Las aplicaciones de Internet son aplicaciones cliente-servidor donde el cliente es un navegador Web y el servidor es un servidor Web o una aplicación servidor”
Objetivo
• El objetivo de este trabajo es presentar una serie de herramientas que asisten en la tarea de testing durante el desarrollo de una aplicación web.
• Este trabajo se ha focalizado en el análisis de aplicaciones Web. Se presentarán herramientas de código abierto agrupadas según el tipo de prueba realizar.
Testing• Es someter un software a ciertas
condiciones que puedan demostrar si es válido o no, verificando que el software se ajusta a los requerimientos y además validar que las funciones se implementan correctamente.
• Es en definitiva agregar valor a un producto y no solamente al producto, sino al proceso de desarrollo, siempre que se consideren los resultados generados.
Etapas de testing
• Al igual que el desarrollo de software, las pruebas también tienen diferentes etapas, como ser: Planificación y Control, Análisis y Diseño, Implementación y Ejecución, Evaluación y Cierre.
Calidad de Software• IEEE std. 610: “El conjunto de programas
de ordenador, los procedimientos y posiblemente, la documentación asociada y los datos relativos a la operación del sistema informático”.
• Algunos autores afirman que los valores de calidad que tiene mayor relevancia en las aplicaciones Web son: Usabilidad, Funcionabilidad, Fiabilidad, Seguridad, Eficiencia y Mantenibilidad.
Caso de PruebaUn caso de prueba es un conjunto de entradas, precondiciones de ejecución, resultados esperados y poscondiciones de ejecución, realizadas para un objetivo particular, tal como ejecutar un camino en particular o verificar la concordancia con los requerimientos.
Caso de Prueba• Un caso de prueba debe probar un item
(en teoría) y luego realizar un análisis del resultado esperado.
• Si se descubre un nuevo caso, documentarlo y no ejecutarlo.
• Se tiende agrupar casos de prueba, pero asi se pueden enmascarar errores.
Caso de Prueba• Objetivo: la carácteristica del sistema a
probar.• Datos de entrada y de ambiente: datos a
introducir al sistema que se encuentra en condiciones preestablecidas.
• Comportamiento esperado: la salida o la acción esperada en el sistema de acuerdo a los requerimientos del mismo.
• Comprobación del resultado esperado: método o forma de realizarlo.
Tipos de pruebas• Pruebas de aceptación
– Alfa– Beta
• Pruebas de sistema– Usabilidad– Interfaz de usuario– Seguridad– Rendimiento– Configuración
Tipos de pruebas• Pruebas funcionales
• Pruebas de integración– Big Bang– Top Down– Bottom Up
• Pruebas de unidad
Probando aplicaciones Web• El tipo de pruebas no depende del tipo
de aplicación, ya sea Web o escritorio.
• Se recomienda realizar las siguientes pruebas básicas:– Pruebas de aceptación– Pruebas estáticas de código– Pruebas unitarias– Pruebas funcionales– Pruebas de rendimiento
Herramientas
• Según Whittaker, la utilización de una herramienta puede ser útil para mejorar y agilizar las pruebas a realizar.
• Por ejemplo, a la hora de simular una cantidad determinada de usuarios accediendo a un sitio al mismo tiempo, o la carga de datos en un sistema, etc.
Herramientas - Ventajas
• El trabajo repetitivo se reduce.
• Una mayor coherencia y repetibilidad.
• Evaluación Objetiva.
• Fácil visualización de los resultados.
Herramientas - Desventajas
• Se pueden llegar a tener expectativas irrealistas sobre las herramientas.
• Sobrestimar el tiempo.
• La incorporación de la herramienta a las pruebas realizadas puede demandar más tiempo que el previsto.
Herramientas – Pruebas de aceptación
• FitNesse: permite comparar lo que debe hacer el software con lo que realmente hace. Se pueden realizar pruebas de aceptación y pruebas de reglas de negocio.
http://fitnesse.org/
• Avignon: permite a los usuarios expresar pruebas de aceptación de una forma no ambigua antes que comience el desarrollo. Trabaja en conjunto con JUnit, HTTPUnit, etc.
http://www.nolacom.com/avignon/index.asp
FitNesse
Tablas comparativasPruebas de aceptación
Herramienta UI Licencia Plata-forma
Lenguaje Ult.Actual.
Documen-tación
FitNesse WEB GPL Win / Linux
Java, C#, PHP, Ruby,
.NET, etc.
Julio2009
Guía de Usuarios
Avignon GUI GPL Win / Linux
Java, .NET, etc.
Octubre2006
Insuficiente
Herramientas – Pruebas estáticas de código
• PHPLint: permite mejorar las tareas de programación, ya sea comenzando la codificación con esta herramienta o mejorando código ya existente. Permiten dar seguridad en el código, errores de sintaxis, variables no utilizadas, código muerto, etc.
http://www.icosaedro.it/phplint/
• RATS: realiza chequeo de seguridad en el código, determinando la criticidad de fallos, como así también una evaluación del código.
http://www.fortify.com/security-resources/rats.jsp
• YASCA: permite encontrar vulnerabilidades de seguridad, calidad en el código, rendimiento, etc. Aprovecha la funcionalidad de los plugins FindBugs, PMD y Jlint.
http://www.yasca.org/
Herramientas – Pruebas estáticas de código
• PMD: puede ser integrado a varias herramientas: JDeveloper, Eclipse, JEdit, etc. Permite encontrar en el código errores en el manejo de excepciones, código muerto, código sin optimizar, código duplicado, etc.
http://pmd.sourceforge.net/
• FindBugs: puede integrarse a Eclipse. Realiza un escaneo de código encontrando errores comunes, malas prácticas de programación, código vulnerable, rendimiento, seguridad, etc.
http://findbugs.sourceforge.net/
Tablas comparativasPruebas estáticas de código
Herramienta UI Licen-cia
Plata-forma
Lenguaje Ult.Actual.
Documen-tación
PHPLint GUI BSD Win / Linux
PHP Mayo2009
Tutorial / Manual
RATS CLI GPL Win / Linux
C++, Perl, PHP y Python
Septiembre2009
Sin Datos
YASCA CLI GPL Win / Linux
Java, .NET, PHP, HTML,
CSS, etc.
Mayo2009
Manual
PMD CLI BSD Win / Linux
Java Febrero2009
Tutorial/ Manual
FindBugs GUI / CLI
GPL Win / Linux
Java Marzo2009
Tutorial/ Manual
Herramientas – Pruebas Unitarias
• JUnit: automatiza las pruebas unitarias y de integración. Provee clases y métodos que facilitan la tarea de realizar pruebas en el sistema y así asegurar la consistencia y funcionalidad.
http://www.junit.org/
• PHPUnit: permite crear y ejecutar tests unitarios de manera simple. Está basado en el framework “JUnit” para java.
http://www.phpunit.de/
• SimpleTest: pruebas de unidad en PHP y pruebas Web. Cuenta con un navegador Web interno, lo que permite que las pruebas naveguen los sitios Web, ingresen datos en formularios y páginas de prueba.
http://www.simpletest.org/
Tablas comparativasPruebas Unitarias
Herramienta UI Licen-cia
Intetgración Ult.Actual.
Documen-tación
JUnit Integra-da
CPL Eclipse / NetBeans
Mayo2009
Coockbook/Foro/FAQ
PHPUnit CLI PHP No Aplica Junio 2009
Manual
SimpleTest CLI LGPL Eclipse Abril2008
Tutorial / How to
Herramientas – Pruebas Funcionales• Chequeadores de Enlace
– XENU: permite encontrar los enlaces rotos en un análisis en profundidad
http://home.snafu.de/tilman/xenulink.html
– LINK Checker W3C: herramienta On-Line que permite encontrar enlaces rotos, anclas mal definidas, advertir sobre redirecciones, etc.
http://validator.w3.org/checklink
– DRKSpider: permite encontrar enlaces rotos, tiene niveles de profundidad y genera un árbol jerárquico con los enlaces del sitio en prueba, con información detallada.
http://www.drk.com.ar/index.php
– Link Evaluator: se integra a la interfaz del navegador. Se procesa sólo la página actual y no realiza un análisis en profundidad, resaltando en distintos colores el estado de los enlaces.
https://addons.mozilla.org/es-ES/firefox/addon/4094
XENU
W3C Validator
Tablas comparativasPruebas funcionales – Chequeadores de enlaces.
Herramienta UI Licencia Procesa-miento
Plata-forma
Ult.Actual.
Documen-tación
XENU GUI Freeware Remoto / Local
Win Abril 2009
FAQ
LINKChecker
W3C
WEB GPL Remoto Win / Linux
No Aplica Manual
DRKSpider GUI GPL Remoto / Local
Win Abril2009
Foro
Link Evaluator WEB Apache License
Remoto / Local
Win / Linux
Mayo2009
How to / Ejemplos
Herramientas – Pruebas Funcionales• Funcionalidad
– Selenium IDE: plug-in del Firefox. Permite grabar clicks, tipeo y otras acciones para realizar test. Se puede exportar en distintos lenguajes para su posterior adaptación y utilización.
http://seleniumhq.org/projects/ide
– HTTPUnit: Se basa en la metodología XP. Se pueden realizar pruebas funcionales antes de que estén generadas las páginas Web. No se basa en los controles que tenga la página, si no que se basa en los valores de entrada que el usuario pueda ingresar.
http://httpunit.sourceforge.net/index.html
– Badboy: Permite grabar y luego reproducir las acciones realizadas por los usuarios, luego este script puede ser utilizado en otras herramientas, como ser JMeter. Se puede integrar al navegador Web Internet Explorer.
http://www.badboy.com.au/
– SAHI: Permite grabar y luego reproducir script. Tiene soporte funciones realizadas en lenguaje Javascript.
http://sahi.co.in/w/
Selenium
Tablas comparativasPruebas funcionales – Funcionalidad
Herramienta UI Licencia Plata-forma
Ult. actual. Documentación
Selenium IDE GUI Apache Varios Junio 2008 Tutorial/ Manual/Wiki
HTTPUnit WEB Propia Win / Linux
Mayo 2008 Tutorial/ Manual/FAQ
Badboy WEB LGPL Win Diciembre 2008
Manual/ Foro
Sahi GUI Apache Win / Linux
Mayo 2009 Manual/ FAQ
Herramientas – Pruebas de Rendimiento
• JMeter: permite realizar pruebas de rendimiento, de stress, de carga y de volumen, sobre recursos estáticos o dinámicos.
http://jakarta.apache.org/
• OpenSTA: permite captar las peticiones del usuario generadas en un navegador Web, luego guardarlas, y poder editar para su posterior uso.
http://www.opensta.org/
• WEbLoad: permite realizar pruebas de rendimiento, a través de un entorno gráfico en el cual se pueden desarrollar, grabar y editar script de pruebas.
http://www.webload.org
• Grinder: Es un framework escrito en Java, con el cual se pueden realizar pruebas de rendimiento, a través de script escritos en lenguaje Jython. Permite grabar las peticiones del cliente sobre un navegador Web para ser luego reproducido.
http://grinder.sourceforge.net/
JMeter
Tablas comparativasPruebas de rendimiento
Herramienta UI Licen-cia
Plata-forma
Conc. usuarios
Ult.Actual
Documen-tación
JMeter GUI Apache License
Win / Linux
SI Junio 2009
Tutorial
OpenSTA GUI GPL Win SI Octubre 2007
Guía de usuario
WebLoader GUI GPL * Win SI Abril2007
Tutorial
Grinder GUI GPL Win / Linux
SI Febrero2009
Guía de usuario / FAQ
(*) Existen dos tipos de licencias: GPL y profesional
Conclusiones• Al utilizar herramientas open source, no
sólo se encuentran disponibles para su uso, sino que también se las podría adaptar a los requerimientos propios del proyecto.
• Existen muchas herramientas que ayudan al equipo de testing de un proyecto. Elegir las más adecuadas no es una tarea sencilla.
MUCHAS GRACIAS!!!