Herramientas test software

domingo, 28 de febrero de 2010

La realización de unos testeos de calidad, bien preparados y diseñados, es un factor clave para el óptimo desarrollo de una aplicación informática. Sin unos testeos bien detallados y planificados, una aplicación puede llegar al cliente con multitud de fallos, algo que es inaceptable en un proyecto empresarial.

Por ello, es importante identificar una serie de herramientas que ayuden a realizar esta labor tan importante. A continuación se detallarán algunas de estas herramientas, explicando las características fundamentales de cada una de ellas.

A la hora de realizar testeos, se han identificado 5 áreas importantes a tener en cuenta (se han tenido en cuenta también aplicaciones web):
  1. Herramientas de carga y rendimiento (Load and Performance Test Tools)
  2. Web Functional/Regression Test Tools (Java Test Tools)
  3. Validadores de HTML (HTML Validators)
  4. Comprobadores de Links (Link Checkers)
  5. Herramientas de comprobación de seguridad (Web Site Security Test Tools)
Para ver el análisis completo, sigue leyendo.


1. Herramientas de carga y rendimiento

Una parte muy importante a la hora de comprobar el buen funcionamiento de una aplicación, es ver cómo se comporta y el rendimiento que tiene ante sobrecargas. A continuación se analizaran algunas de estas herramientas para ayudarnos a testear las aplicaciones.

JMeter
Jmeter es una herramienta Open Source realizada en java (es un proyecto de Apache) que se utiliza para realizar tests de rendimiento, normalmente contra aplicaciones web. Jmeter nos permite realizar simulaciones de gran carga en el servidor, red o aplicación para comprobar su “fuerza” y para analizar el rendimiento ante diferentes tipos de sobrecarga.
Las características principales de Apache Jmeter son las siguientes:
  • Permite cargar y realizar tests sobre distintos tipos de servidores: Web (HTTP, HTTPS), SOAP, Bases de datos (JDBC), LDAP, JMS, Email (POP3 e IMAP).
  • Multiplataforma: Unix (Solaris, Linux, etc), Windows (98, NT, XP, etc), OpenVMS Alpha 7.3+.
  • Testeo distribuido.
  • Multihilo: permite realizar testeos de forma concurrente.
  • Interfaz gráfica: permite realizar las operaciones más rápido.
  • Permite comprobar cómo se comportará una aplicación web ante multitud de usuarios y la velocidad de carga que tendrá.
  • Extensible: personalización.
Wiki de Jmeter: http://wiki.apache.org/jakarta-jmeter/JMeterLinks

Manual de usuario (ingles): http://jakarta.apache.org/jmeter/usermanual/index.html


JCrawler
Aplicación Opensource para realizar test de estrés a aplicaciones web. Le pasas una URL y puedes realizar una navegación. Admite redirecciones HTTP y cookies. Es independiente de la plataforma, posee un modo consola y es sencillo de configurar.
  • Es apropiado para portales complejos en los que hay que testear todas las páginas del portal y no solo algunas URLs.
  • JCrawler está basado en ataques/segundo y no en “X” hilos atacando una web (ya que en estos últimos casos puede que realmente se estén dando por ejemplo solo 2 ataques por segundo aun teniendo 200 hilos).
  • Testeo de Http redirects y cookies
  • Open Source: ofrece confianza, ya que en cuanto se detecte un bug será solucionado en un muy breve periodo de tiempo.
  • Modo consola. Aporta velocidad
  • Fácil de configurar. Toda la configuración se reduce a un fichero de configuración XML.
  • Independiente del Sistema Operativo.
Web oficial: http://jcrawler.sourceforge.net/


SOLEX
Es una herramienta Open Source para testeo creado para ser implantado como un plugin en Eclipse. Solex permite grabar la sesión de un usuario, permitiéndolo configurar en función a diferentes parámetros, para poder ser utilizado posteriormente y ser repetida, de manera que aseguremos la no regresión de la aplicación. Asimismo, también nos permite realizar pruebas de estrés y rendimiento contra la aplicación web.

Web oficial: http://solex.sourceforge.net/


2. Web Functional/Regression Test Tools (Java Test Tools)

Otro apartado a tener en cuenta es la comprobación de que la funcionalidad de la aplicación es la esperada, en función a los requisitos que se han definido. También es muy importante decir que hay que realizar pruebas unitarias a medida que se va programando y no esperar a tener la aplicación completa desarrollada. Para ello, existen multitud de herramientas y a continuación vamos a analizar algunas de ellas:

JUnit
JUnit es un conjunto de clases (framework) que permite realizar la ejecución de clases Java de manera controlada, para poder evaluar si el funcionamiento de cada uno de los métodos de la clase se comporta como se espera. Es decir, en función de algún valor de entrada se evalúa el valor de retorno esperado. Si la clase cumple con la especificación, entonces JUnit devolverá que el método de la clase pasó exitosamente la prueba. En caso de que el valor esperado sea diferente al que regresó el método durante la ejecución, JUnit devolverá un fallo en el método correspondiente.

JUnit también permite controlar pruebas de regresión, es decir, detectar nuevos bugs que puedan surgir a consecuencia de haber cambiado el código fuente inicial (por ejemplo, añadiendo nuevas funcionalidades). De esta manera, JUnit nos permitirá comprobar que la aplicación cumple con los requisitos y que no se ha alterado su funcionalidad inicial.

El framework de JUnit nos permite visualizar los resultados en modo texto y en modo gráfico. Una de las mejores características de JUnit, es que existen plug-ins para Eclipse y Netbeans que nos generan automáticamente las clases java necesarias para la creación de la pruebas, de manera que el programador solo tenga que centrarse en si los resultados han sido correctos o no.

Página oficial: http://www.junit.org/

Tutorial sobre cómo utilizar JUnit: http://www.inf-cr.uclm.es/www/mpolo/tutorial/


HttpUnit
HttpUnit es una librería java Open Source para realizar testeos de caja negra en aplicaciones web HTTP y servlets. La librería de testeo tiene las siguientes características:
  • Autenticación
  • Javascript
  • Redirección automática
  • HttpUnit se integra de forma sencilla con JUnit para realizar testeos de aplicaciones web. HttpUnit nos ofrece métodos para examinar y testear el HTML devuelto como texto, formularios, links,, botones, etc.

JWebUnit
jWebUnit es una herramienta muy interesante para realizar rápidamente una buena batería de pruebas unitarias para nuestra aplicación web.

Este framework es una extensión de los frameworks junit y htmlunit, especialmente indicado para probar la interfaz de la aplicación. Con este framework, nuestras pruebas podrán interactuar con la aplicación web, simulando las diferentes acciones del usuario y revisando la interfaz que genera la aplicación en cada momento.

Web oficial: http://jwebunit.sourceforge.net/

Ejemplo de test: http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=jwebunit


Jameleon
Jamaleon es un herramienta para probar aplicaciones de forma automática. Divide la aplicación en características y crea casos de prueba para cada una de ellas. Permite reducir enormemente el costo de crear Testcases (Pruebas funcionales o unitarias) que manejan librerías tales como Junit, httpUnit,etc. Además, puede testear aplicaciones WEB de todo tipo, no solo J2EE.

Jameleon dispone de un sencillo interfaz de usuario que simplifica el trabajo de diseñar script's XML para todo tipo de pruebas. Estas pruebas no solo se pueden configurar desde xml sino que también se pueden configurar desde Bases de datos y ficheros CSV.

Jameleon ha sido diseñado para testear todo tipo de aplicaciones. Para hacer esto posible, Jameleon esta diseñado en forma de plu-gin. Actualmente hay diferentes plugins disponibles:
  • JUnit plugin
  • Jiffie plugin
  • HtmlUnit plugin
  • Selenium plugin
  • Watij plugin
  • HttpUnit plugin
  • JWebUnit plugin
Web oficial: http://jameleon.sourceforge.net/


3. Validadores HTML (HTML validators)

Tener un HTML correcto es otro factor muy importante a la hora de realizar una aplicación web. Por ello, a continuación podremos ver 2 herramientas para poder revisar el HTML de una web.

W3C Validator

Es uno de los validadores más conocidos en la actualidad. Es muy exigente y en ocasiones es difícil cumplirlo al 100%. Aun así, es recomendable seguir sus directrices.

Link para realizar la validación: http://validator.w3.org


HTML Validator
Plugin para firefox mediante el que podremos validar el HTML de nuestra web.

Link de descarga: https://addons.mozilla.org/es-ES/firefox/addon/249


4. Comprobadores de Links (Link checkers)

Si el proyecto que estamos desarrollando se trata de una aplicación web, es imprescindible que todos los links del portal funcionen perfectamente. Para comprobarlo, a continuación se pueden ver 2 herramientas interesantes.

W3C Link Checker
Al igual que el “W3C Validator” para comprobar que la web cumple los estándares del W3C, W3C también nos permiten analizar una web en busca de enlaces rotos.

Se pueden comprobar los enlaces de una web en la siguiente dirección: http://validator.w3.org/checklink


LinkChecker
Plugin para firefox mediante el que podremos validar si los links de una web funcionan correctamente.

Link de descarga: https://addons.mozilla.org/es-ES/firefox/addon/532


5. Pruebas de seguridad

El desarrollar una aplicación segura, es otro apartado imprescindible, ya que posteriormente pueden surgir problemas muy serios. A continuación se verán algunas herramientas para la comprobación de la seguridad.

Powerfuzzer
Powerfuzzer es totalmente gratuito y permite a los administradores crear tests personalizados para sus aplicaciones Web con la intención de detectar agujeros de seguridad. En esencia, se trata de un simple escaner de aplicaciones. Algunos de los tests que ofrece son los siguientes:
  • Código de páginas cruzadas (XSS)
  • Inyecciones (SQL, LDAP, código, comandos, y XPATh)
  • CRLF
  • Estados HTTP 500
Fuente: http://www.internetlab.es/post/866/powerfuzzer-encuentra-errores-de-seguridad-en-aplicaciones-web

Web oficial: http://www.powerfuzzer.com/


Netsparker
Netsparker es un producto de análisis de vulnerabilidades web. Entre sus principales características se anuncia que está libre de reportar falsos positivos, o lo que es lo mismo, identificar como vulnerabilidades peticiones que realmente no lo son. Aunque esta característica tiene truco, ya que las que no puede garantizar como vulnerables las etiqueta como "posibles", para que posteriormente el auditor haga las comprobaciones oportunas.

Los motores soportan la detección de los riesgos más comunes: Inyección SQL , XSS, inclusión local y remota de ficheros, inyección de comandos, CRLF, archivos obsoletos, código fuente, recursos ocultos, listado de directorios, vulnerabilidades de configuración de los distintos servidores web, etc. Pero sin duda el que más destaca y funciona mejor es el de inyección SQL, que además permite la ejecución de comandos y de sentencias una vez se detecta un parámetro vulnerable.

El precio de NetSparker es competitivo, 600 libras (unos 687€) por una licencia para tres aplicaciones web, 1200 libras (1.374€) para un número ilimitado de aplicaciones y una versión de 9200 libras (10.538€) instalable en más de un equipo.

Fuente: http://www.securitybydefault.com/2010/01/un-vistazo-netsparker-de-mavituna.html


Zero Day Scan
Zero Day Scan es un servicio online gratuito que detecta las vulnerabilidades de una Web, como por ejemplo el Cross-Site Scripting (XSS), inyección SQL, y otras. A partir de este análisis, genera un resumen de resultados. Requiere la confirmación del propietario de la página.

Caraterísticas:
  • No require instalación, es un servicio gratuito.
  • Detecta ataques de Cross Site Scripting (XSS)
  • Detecta directories ocultos y archives de backup.
  • Comprueba vulnerabilidades de seguridad conocidas.
  • Busca vulnerabilidades de SQL injections.
  • Detecta automáticamente zero day bugs
  • Realiza Website Fingerprinting
  • Genera informes gratuitos
Fuente: http://www.internetlab.es/categoria/phishing

Web oficial: http://www.zerodayscan.com/


Nessus
Nessus es un programa de escaneo de vulnerabilidades en diversos sistemas operativos. Consiste en nessusd, el daemon Nessus, que realiza el escaneo en el sistema objetivo, y nessus, el cliente (basado en consola o gráfico) que muestra el avance y reporte de los escaneos. Desde consola nessus puede ser programado para hacer escaneos programados con cron.

En operación normal, nessus comienza escaneando los puertos con nmap o con su propio escaneador de puertos para buscar puertos abiertos y después intentar varios exploits para atacarlo. Las pruebas de vulnerabilidad, disponibles como una larga lista de plugins, son escritos en NASL (Nessus Attack Scripting Language, Lenguaje de Scripting de Ataque Nessus por sus siglas en inglés), un lenguaje scripting optimizado para interacciones personalizadas en redes.

Opcionalmente, los resultados del escaneo pueden ser exportados en reportes en varios formatos, como texto plano, XML, HTML, y LaTeX. Los resultados también pueden ser guardados en una base de conocimiento para referencia en futuros escaneos de vulnerabilidades.

Algunas de las pruebas de vulnerabilidades de Nessus pueden causar que los servicios o sistemas operativos se corrompan y caigan. El usuario puede evitar esto desactivando "unsafe test" (pruebas no seguras) antes de escanear.

Fuente: http://es.wikipedia.org/wiki/Nessus

Artículos relacionados


Comments

5 Responses to “ Herramientas test software ”
Post a Comment | Enviar comentarios ( Atom )

Excelente, estoy buscado información sobre testeo de software y encontré tu aporte, gracias!

1 de julio de 2010, 23:28
Anónimo dijo...

podrian publicar porfa vor los comandos de configuracion de JCrawler

7 de diciembre de 2010, 2:12
Anónimo dijo...

Tengo una duda despues de haber leido toda esta documentación y me interesa en particular el nessus, pero todavia me queda una duda, quisiera saber si este programa escanea y detecta vulnerablidades en la seguridad de un sistema operativo o de una aplicacion ya sea web o desktop, ó es que el detecta esas vulnerabilidades en una aplicacion que corre en los diferentes sistemas operativos.
O sea que lo que no me queda bien claro es si el escanea las vulnerabilidades de una aplicacion o escanea un sistema operativo.

26 de enero de 2011, 20:57
Anónimo dijo...

Buenas Anónimo,

Hace tiempo que no utilizamos la aplicación, pero si no recuerdo mal, a la aplicación le indicabas una IP y ella misma se encargaba de encontrar vulnerabilidades del objetivo en general (intentaba probar todo tipo de vulnerabilidades conocidas).

Saludos.

26 de enero de 2011, 21:08

Buena informacion muchas gracias, me encanta el tema de testing de software.

http://es.agileload.com

17 de agosto de 2013, 16:14

Publicar un comentario

Deja tu opinión realizando un comentario interesante. Cualquier intento de Spam no será admitido.