Your SlideShare is downloading. ×
Adaptación de JMeter para la minería de datos de estructuras de páginas web.
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Adaptación de JMeter para la minería de datos de estructuras de páginas web.

491
views

Published on

Adaptación de JMeter para la minería de datos de estructuras de páginas web. …

Adaptación de JMeter para la minería de datos de estructuras de páginas web.
Director: Carlos Guerrero Tomé
Alumno: Agustín Sabater Piñeiro
ESCUELA POLITÉCNICA SUPERIOR
UNIVERSITAT DE LES ILLES BALEARS
!
14-Sep-12!


0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
491
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Hola, mi nombre es Agustín Sabater Piñeiro, y estoy aquí para hacer la lectura de mi proyecto final de carrera. Tiene por título, “ Adaptación de JMeter para la minería de datos de estructuras de páginas web ” . El proyecto ha sido dirigido por Carlos Guerrero Tomé.
  • La motivación del proyecto fue la necesidad que tiene Carlos Guerrero de obtener modelos de los fragmentos de contenidos que forman una página web para temas de su tesis. En definitiva poder extraer de una web como esta, información en un formato similar a este. Aquí podemos ver una captura de la página web REDDIT.COM con zonas remarcadas de color rojo, y a la derecha podemos ver un ejemplo del resultado que se desea obtener.
  • Veamos ahora la estructura que tendrá esta presentación: Primero veremos las herramientas de testing existentes. Pasaremos a comentar los aspectos más importantes del software desarrollado A continuación veremos el modelo de representación de fragmentos de una página web. Luego seguiremos con los detalles técnicos que podemos considerar más relevantes. A continuación veremos una demostración en video del software desarrollado. Como penúltimo punto tratáremos las conclusiones que se han extraído de realizar este proyecto. Y para finalizar repasaremos las posibles líneas de futuro del proyecto.
  • El contexto del proyecto es construir una herramienta que soluciones, de manera efectiva la necesidad de Carlos Guerrero antes descrita. Para una serie de páginas introducidas por el usuario, los módulos de JMeter implementados se encargan de buscar fragmentos del contenido de las páginas según unas reglas definidas por el propio usuario. Una vez detectados dichos fragmentos, el módulo genera el modelo del contenido de cada página, basado en fragmentos de contenido y relaciones de inclusión entre los distintos fragmentos. Este modelo se encuentra explicado en la documentación, pero es básicamente un grafo acíclico dirigido. El SW desarrollado consigue generar un GRAFO ACÍCLICO DIRIGIDO que contiene información sobre los fragmentos y sus interrelaciones.
  • Los objetivos con lo que iniciamos el proyecto eran los siguientes. Para empezar debíamos crear un sistema capaz de observar como cambia el contenido de una serie de páginas web. Se pretendía poder comparar tanto muestras temporales, como muestras de diferentes direcciones web. Así mismo, se quería acceder a direcciones web públicas y privadas, que requieran autenticación. Para una serie de páginas introducidas por el usuario, los módulos de JMeter implementados se tienen que encargar de buscar fragmentos del contenido de las páginas según unas reglas definidas por el propio usuario.
  • Las tareas necesarias para llevar a cabo el proyecto descrito, a grandes rasgos son: Estudiar las herramientas existentes en el mercado Desarrollar el módulo de descargas Desarrollar el módulo de análisis de fragmentos Desarrollar el módulo de relación entre los fragmentos Por último, desarrollar el módulo encargado de realizar el cálculo de similitud entre fragmentos.
  • La mejor manera para modelar la información la información referente a fragmentos de código, direcciones url, y demás parámetros,
  • Ahora voy a hablar de los detalles técnicos más relevantes del proyecto, a mi juicio. Lo primero que debimos considerar fue si desarrollar una herramienta desde cero, o bien usar alguna ya existente y ampliable. 2. Primeramente probamos utilizando Expresiones regulares para detectar fragmentos, pero nos dieron muchos problemas por la cantidad de páginas que no están totalmente bien formadas EJEMPLO: Etiquetas <p> sin cerrar, o etiquetas img mal formadas. <img src= “ sasdasd.png ” > 3. Para identificar fragmentos similares se decidió incluir el cálculo de la distancia de Levenshtein . Incluyendo este cálculo en el fichero XML de relaciones, reflejamos el grado de similaridad entre fragmentos.
  • Analizamos JCrawler, Solex, y JMeter. Decantándonos al final por este último. Por si lo preguntan JCrawler no tiene GUI, y Solex no permite el desarrollo de plugins. Jmeter es una herramienta de prueba de carga para analizar y medir el desempeño de una variedad de servicios, con énfasis en aplicaciones web. Tiene ventajas como la posibilidad de añadir plugins, es gratuita, open-source, y tiene una gran comunidad detrás del proyecto. Las expresiones regulares nos dieron bastantes dolores de cabeza a la hora de enfrentarnos con documentos mal formados (etiquetas sin cierre). Por eso optamos por cambiar y usar las Xpaths 2.0 que ofrecían juntamente con HTMLunit potencia y facilidad de uso. Para poder medir la diferencia entre dos fragmentos de código, nos decantamos por usar la Distancia de Levenshtein Uno de los requisitos del proyecto era facilitar el desarrollo de nuevas funcionalidades en el proyecto. Eso lo hemos cumplido liberando el código, usando interfaces, y documentando todo el proceso de ampliación de funcionalidad.
  • Ahora veremos los aspectos más relevantes de la arquitectura del programa JMeter. Para empezar hay que decir que JMETER permite varios modos de ejecución, aunque el más común es usar la interfaz gráfica, además de ser lo que yo recomiendo para la ejecución de este proyecto. JMeter, y este proyecto, están desarrollados 100% en JAVA. La estructura de ficheros es la siguiente: La clase principal se encuentra en la subcarpeta /bin de JMeter. Las clases que usa JMeter se encuentran en la subcarpeta /lib Las extensiones se ubican en /lib/ext Los plugins
  • Para realizar este proyecto correctamente, fue necesario desarrollar dos plugins del programa JMeter. La decisión de desarrollar dos plugins, se debe a que la comunidad de JMeter tiene esa costumbre para tener ordenados los plugins. Este consejo nos lo dieron en el portal JMeter plugins alojado en code.google.com, así como otros cientos que han hecho posible que esta lectura esté sucediendo.
  • El primero de los plugins desarrollados es el plugin HTML Downloader. Es un plugin de tipo Listener, muestreador, encargado de recibir los que obtiene los plugins de tipo Requesters. Permite gestionar la lista de descargas obtenidas a partir de la lista del usuario. Descarga cada muestra obtenida en una subcarpeta junto con el código XHTML Así mismo, mantiene un registro de lo sucedido durante su ejecución. Puede ser lanzado las veces que se quiera, manteniendo siempre las muestras anteriores y el registro.
  • El último de los módulos desarrollados, es el plugin Query Model Analyzer. Es un plugin de tipo post processor. Analiza las muestras obtenidas por HTML Downloader, buscando fragmentos que coincidan con las XPaths introducidas por el usuario. Genera los resultados en ficheros XML en las subcarpetas y en la carpeta principal. Está preparado para admitir nuevos desarrollos.
  • Jmeter es una herramienta de prueba de carga para analizar y medir el desempeño de una variedad de servicios, con énfasis en aplicaciones web. Tiene ventajas como la posibilidad de añadir plugins, es gratuita, open-source, y tiene una gran comunidad detrás del proyecto. Las expresiones regulares nos dieron bastantes dolores de cabeza a la hora de enfrentarnos con documentos mal formados (etiquetas sin cierre). Por eso optamos por cambiar y usar las Xpaths 2.0 que ofrecían juntamente con HTMLunit potencia y facilidad de uso. Para poder medir la diferencia entre dos fragmentos de código, nos decantamos por usar la Distancia de Levenshtein Uno de los requisitos del proyecto era facilitar el desarrollo de nuevas funcionalidades en el proyecto. Eso lo hemos cumplido liberando el código, usando interfaces, y documentando todo el proceso de ampliación de funcionalidad.
  • Se llama Distancia de Levenshtein, distancia de edición, o distancia entre palabras, al número mínimo de operaciones requeridas para transformar una cadena de caracteres en otra. Esté valor es muy útil para realizar comprobaciones entre nodos ligeramente diferentes. El Algoritmo no añade una gran carga de procesamiento. Abierto a nuevos desarrollos
  • Se llama Distancia de Levenshtein, distancia de edición, o distancia entre palabras, al número mínimo de operaciones requeridas para transformar una cadena de caracteres en otra. Esté valor es muy útil para realizar comprobaciones entre nodos ligeramente diferentes. El Algoritmo no añade una gran carga de procesamiento. Abierto a nuevos desarrollos
  • El desarrollo de nuevas funcionalidades, o bien la modificación de las actuales, es muy sencillo. Para empezar en el repositorio de GitHub del proyecto Minería de datos con JMeter, encontraremos toda la información y archivos necesarios. El método de modificación simplificado es el siguiente: 1. Descargar la versión 2.6 de JMeter, y todos los archivos del repositorio de GitHub. 2. Desde un IDE, eclipse recomendado, modificar aquello que se quiera modificar, y compilar. (en el GitHub del proyecto existe un manual de ayuda para esta tarea). 3. Volver a arrancar JMeter y testear los cambios.
  • Transcript

    • 1. Adaptación de JMeter para la minería de datos de estructuras de páginas web. Alumno DirectorAgustín Sabater Piñeiro Carlos Guerrero Tomé ESCUELA POLITÉCNICA SUPERIOR UNIVERSITAT DE LES ILLES BALEARS 14-Sep- 12
    • 2. MotivaciónCarlos Guerrero necesitaba una herramienta para crearmodelos de los fragmentos de contenidos que formanuna página web para temas de su tesis.
    • 3. Estructura• Introducción• Modelo de representación de fragmentos de una página web• Detalles técnicos relevantes del proyecto• Demostración• Conclusiones• Líneas de futuro
    • 4. IntroducciónContexto del proyectoConstruir una herramienta que solucione, de manera efectiva, lanecesidad de Carlos Guerrero antes descrita.Problemática que se resuelveHerramienta capaz de generar un Grafo acíclico dirigido quecontenga información sobre los fragmentos y sus interrelaciones.
    • 5. IntroducciónObjetivosCrear un sistema que permita observar como cambia el contenido de unaserie de páginas web.Se pretende poder comparar tanto entre muestras temporales, como entremuestras de diferentes direcciones.Debe poder accederse a URLS públicas y que requieran autenticación.Del código de toda muestra debe buscarse fragmentos que encajen con unaserie de consultas indicadas por el usuario.El sistema debe ser ampliable con futuros desarrollos.
    • 6. IntroducciónTareas a realizar•Estudio de las soluciones existentes•Desarrollo de herramienta de descarga•Desarrollo de herramienta de análisis de los fragmentos•Desarrollo de herramienta de relación entre fragmentos•Desarrollo de herramienta de cálculo de similitud entre fragmentos
    • 7. Modelo de representación de fragmentos• La mejor manera de modelar la información es un grafo.• Usamos un nodo para describir los fragmentos hallados en cada muestra, y otros nodos para describir las relaciones entre fragmentos.• Tanto los nodos de descripición de fragmentos, como los de relaciones entre nodos, se guardan en ficheros XML.
    • 8. Modelo de representación de fragmentos Fichero XML de fragmentos encontrados por muestra<?xml version="1.0" encoding="UTF-8"?><graphml> <graph edgedefault="directed" id="0"> <node id="-1043487486"> <data key="size">2475</data> Características <data key="source.code“><![CDATA[<div class=" thing Fragmento id-t3_xu3yr link promoted promotedlink " Concordante onclick="click_thing(this)" data-fullname="t3_xu3yr" data- ups="118" data-downs="370">…]]></data> <data key="url">www.reddit.com</data> <data key="time">20120821.18.59.02</data> </node> … </graph></graphml>
    • 9. Modelo de representación de fragmentos Fichero XML de relaciones entre fragmentos (único)<?xml version="1.0" encoding="UTF-8"?><graphml> <graph edgedefault="directed" id="4" /> <key attr.name="staring.tag" attr.type="string » for="node" id="etiqueta" /> <edge id="0" source="-1774026885" target="1894481576" url="www.reddit.com" when="20120820.17.59.10" /> Relaciones con … otros fragmentos <edge id="16" source="-1139600470" target="1894481576" y con las muestras url="www.reddit.com" when="20120820.17.59.10" /> <edge LevenshteinDistance="786" id="15" node1="-1774026885" node2="847262418" /> Diferencias … entre fragmentos <edge LevenshteinDistance="172" id="922" node1="-265211993" node2="713539848" /></graphml>
    • 10. Detalles técnicos del proyectoConsideraciones previas1.Decidir si desarrollar desde cero o seleccionar unaherramienta existente y ampliable mediante plugins.2.Decidir alguna forma para tratar el XHTML ydetectar fragmentos.3.Decidir como identificar fragmentos similares.
    • 11. Detalles técnicos del proyectoHerramientas de prueba de carga analizadas Licencia Comunidad GUI ¿Ampliable? Common Public Escasa License 1.0 Apache License Abundante 2.0 Apache Inexistente Software License
    • 12. Detalles técnicos del proyectoArquitectura del programaJMeter•JMeter está organizado por protocolos yfuncionalidades.•Clase principal /bin/ApacheJMeter.jar•Clases de JMeter /lib/•Extensiones /lib/ext/•Incidencias de ejecución /bin/jmeter.log
    • 13. Detalles técnicos del proyectoSe han desarrollado dos plugins de JMeter para cumplir losobjetivos del proyecto final de carrera.•HTML Downloader•Query Model Analyzer
    • 14. Detalles técnicos del proyectoHTML Downloader•Plugin tipo Listener•Permite gestionar la lista dedirecciones web a analizar.•Descarga cada muestra en unasubcarpeta•Mantiene un registro de laejecución•Puede añadir muestrassuplementarias
    • 15. Detalles técnicos del proyectoQuery Model Analyzer•Plugin tipo Post Processor•Analiza las muestras descargadas porHTML Downloader•Generar los resultados del análisis enficheros XML•Guarda un fichero de resultados en cadasubcarpeta que contenga muestras, y otrofichero XML con las relaciones entre nodos.•Está preparado para ser ampliado connuevos tipos de Querys, cálculos dedistancias, y demás.
    • 16. Detalles técnicos del proyecto XPaths vs Expresiones Regulares ¿Documentos mal Carga de ¿Apoyo de formados? procesamiento comunidad?Expresiones Intransigente (o está Costoso Cada día aregulares contemplado o falla) menosXPaths 2.0 Sin problemas Justo Cada día a más
    • 17. Detalles técnicos del proyectoDistancia de LevenshteinLa distancia de Levenshtein entre "casa" y "calle" es de 3 porque senecesitan al menos tres ediciones elementales para cambiar uno en elotro. casa → cala (sustitución de s por l) cala → calla (inserción de l entre l y a) calla → calle (sustitución de a por e)
    • 18. Detalles técnicos del proyecto• Abierto a futuros desarrollos• Licencia utilizada Apache License 2.0• Posibles mejoras documentadas: 1. Método de búsqueda de fragmentos (XPath 3.0 …) 2. Cambiar la distancia de Levenshtein 3. Añadir un visualizador del grafo de resultados
    • 19. Detalles técnicos del proyecto• Abierto a futuros desarrollosEn el repositorio de GitHub del proyecto,[github.com/asabater/Data-mining-with-Jmeter], se encuentra todo lo necesario para modificar el desarrollo del proyecto.Método de modificación• Descargar la versión 2.6 de JMeter, y los archivos del proyecto del repositorio en GitHub.• Desde un IDE, Eclipse por ejemplo, modificar las clases y compilar.• Volver a arrancar JMeter para ver los cambios realizados.
    • 20. Aplicación resultante //div[contains(concat( ,normalize- space(@class), ), link )]
    • 21. Demostración
    • 22. Conclusiones• El SW desarrollado cumple satisfactoriamente el objetivo de poder observar como va cambiando el contenido de una serie de páginas web, tanto temporalmente como entre aquellas muestras que provengan de diferentes direcciones.• Al desarrollar para la plataforma JMeter, el objetivo de permitir acceso a URLs y publicas está cubierto.• El objetivo de poder buscar fragmentos dentro de las muestras descargadas se cumple gracias al uso de las XPaths.• Carlos Guerrero, considera que su necesidad ha quedado cubierta con el SW desarrollado
    • 23. Conclusiones• Las versiones de JMeter son numerosas y cada vez más incompatibles entre ellas. • Es muy difícil asegurar la retrocompatiblidad • JMeter con cada versión es más pesado• Es muy gratificante ver como no hay imposible con empeño y trabajo duro
    • 24. Líneas de futuro• Cambiar XPath 2.0 por un sistema más avanzado (por ejemplo XPath 3.0)• Cambiar el cálculo de la Distancia de Levenshtein por otra medida más adecuada• Modificar el comportamiento del plugin para que vaya generando XMLs con resultados a medida que descarga las muestras• Añadir un visualizador de ficheros de resultados
    • 25. Adaptación de JMeter para la minería de datos de estructuras de páginas web. Alumno DirectorAgustín Sabater Piñeiro Carlos Guerrero Tomé ESCUELA POLITÉCNICA SUPERIOR UNIVERSITAT DE LES ILLES BALEARS 14-Sep- 12