Manual Jmeter 1

25
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje LABORATORIO 6. Manual Apache Jmeter GUÍA DE LABORATORIO Nº 6 Actividad de Proyecto No. 4: ESTABLECER LOS NIVELES DE SERVICIO DE ACUERDO CON ESTANDARES Y REQUERIMIENTOS DE LA ORGANIZACIÓN

Transcript of Manual Jmeter 1

Page 1: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje

LABORATORIO 6. Manual Apache Jmeter

GUÍA DE LABORATORIO Nº 6

Actividad de Proyecto No. 4: ESTABLECER LOS NIVELES DE SERVICIO DE ACUERDO CON ESTANDARES Y REQUERIMIENTOS DE LA ORGANIZACIÓN

Page 2: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

2

Estructura de contenidos.

Introducción. ................................................................................3

1. Primeros pasos - Instalación. .......................................................4

2. Plan de Pruebas. ........................................................................5

2.1. Añadir y eliminar elementos. ...............................................6

2.2. Guardar el Plan de Pruebas. ................................................6

2.3. Ejecución de un plan de pruebas. .........................................7

2.4. Detener una prueba. ..........................................................7

3. Elementos de un plan de pruebas.................................................8

3.1. Thread Group (Grupo de Hilos). ...........................................8

3.2. Controllers (Controladores). ................................................9

3.2.1. Samplers (Muestreador). ...........................................10

3.2.2. Logic Controllers (Controladores lógicos). ....................11

3.2.3. Test Fragments (Fragmentos de prueba). .....................11

3.3. Listeners (Receptores). .....................................................12

3.4. Timers (Temporizadores). .................................................13

3.5. Assertions (Afirmaciones). ................................................13

3.6. Configuration Elements (Elementos de configuración). ..........14

3.7. Pre-Processor Elements (Pre-procesadores de elementos). ....15

3.8. Post-Processor Elements (Post- procesadores de elementos). .16

4. Construcción de un plan de pruebas para Base de Datos. ..............16

4.1. Usuarios .........................................................................17

4.2. Peticiones JDBC ...............................................................18

4.3. Ver y guardar los resultados ..............................................22

Glosario .....................................................................................24

Bibliografía .................................................................................25

Page 3: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

3

Introducción.

El Apache JMeter es un software de código abierto, una aplicación diseñada totalmente en JAVA para medir el rendimiento y comportamiento de servidores mediante pruebas. Originalmente se diseñó para probar aplicaciones Web, pero se ha ampliado desde entonces a otras funciones.

Se utilizar para probar el rendimiento tanto de los recursos estáticos y dinámicos (archivos, Servlets, scripts de Perl, objetos Java, bases de datos - consultas, servidores FTP y mucho más). Se puede utilizar para simular una carga pesada en un servidor, la red o un objeto para poner a prueba su resistencia o para analizar el rendimiento global en diferentes tipos de carga. Puede usarlo para hacer un análisis gráfico de rendimiento o para probar el comportamiento de diferentes elementos con un gran volumen de carga y concurrencia.

Algunos de los tipos de Servidor que se pueden probar son:

•Web HTTP y HTTPS.

•SOAP.

•Base de datos a través de JDBC.

• LDAP.

Page 4: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

4

1. Primeros pasos - Instalación.

El proceso inicia con la descarga e instalación, el vínculo de descarga es http://jmeter.apache.org/download_jmeter.cgi. Resultante de esta tarea obtenemos el archivo comprimido Apache-Jmeter-2.6.zip que pesa aproximadamente 22.6 Mb y se necesita al menos 80 Mb de espacio libre en disco para su descompresión.

La publicación contiene todos los archivos necesarios para generar y ejecutar la mayoría de los tipos de pruebas, por ejemplo, Web (HTTP / HTTPS), FTP, JDBC, LDAP, Java y JUnit.

Si usted desea llevar a cabo pruebas de JDBC, necesita el correspondiente controlador JDBC de su proveedor. JMeter no viene con los drivers JDBC. Usted tendrá que agregar el controlador de la base de datos del proveedor de JDBC a la ruta de clases si quiere hacer pruebas de JDBC. Asegúrese de que el archivo sea .jar y guárdelo en la siguiente ruta:

apache-jmeter-2.6/lib/JDBCbasededatos.jar

Para ejecutar el programa debe descomprimir los archivos descargados e ir a la siguiente ruta:

apache-jmeter-2.6/bin/jmeter.bat

Page 5: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

5

Se debe tener instalada la máquina virtual de java 1.5 o superior para su funcionamiento, Jmeter funciona en cualquier sistema operativo que tenga implementación con Java y que su máquina virtual lo soporte.

Para instalar una versión de lanzamiento, simplemente descomprimir el archivo zip / tar en el directorio donde quiere que sea guardado JMeter. Tener JRE / JDK correctamente instalado y el conjunto de variables de entorno JAVA_HOME.

2. Plan de Pruebas.

Un Plan de Prueba o Test Plan, es el eje de ejecución de Jmetter, en él se determinan los aspectos relacionados con una prueba de carga, como pueden ser los parámetros empleados por requisición, el tipo de reportes a generarse, la posible reutilización de requisiciones compuestas por usuarios, entre otros aspectos.

Un plan de pruebas completo trabaja en forma de árbol y consta de los siguientes ítems:

•Threads(users) (Hilos(Usuarios))–> Thread Groups (Grupo de Hilos)

•Logic controllers (Controladores lógicos)

•Listeners (Receptores)

Page 6: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

6

•Timers (Temporizadores)

•Assertions (Afirmaciones - Aserciones)

•Configuration elements (Elementos de configuración)

2.1. Añadir y eliminar elementos.

Parta añadir los elementos a un plan de prueba se puede hacer clic derecho sobre un elemento en el árbol, y escoger el elemento de la lista.

Para eliminar un elemento, asegúrese de que el elemento está seleccionado,

haga clic en el elemento y elija la opción “Eliminar” opción.

2.2. Guardar el Plan de Pruebas.

Guarde el plan de pruebas en un archivo antes de ejecutarlo. Para guardar el plan de pruebas, seleccione “Guardar” o “Guardar como, Plan de Pruebas”

Page 7: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

7

2.3. Ejecución de un plan de pruebas.

Para ejecutar su plan de pruebas, seleccione en el menú “Lanzar”, “Arrancar” (Ejecutar), con las teclas rápidas (Control + R), o con el triangulo verde de la barra de botones.

2.4. Detener una prueba.

Hay dos formas disponibles para detener la prueba:

•Parar tecla rápida (Control + .) Evita que los hilos sean ejecutados inmediatamente.

Page 8: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

8

•Interrumpir techa (Control + ,) Permite que se termine la ejecución en curso.

3. Elementos de un plan de pruebas.

A continuación se presentan los elementos de un plan de pruebas:

3.1. Thread Group (Grupo de Hilos).

En la opción Threads(users) (Hilos(Usuarios)) se selecciona Thread Groups (Grupo de Hilos), que corresponde al conjunto de usuarios que se desea simular para la prueba. Como su nombre lo indica, el elemento Grupo

Page 9: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

9

de Hilos controla el número de hilos que JMeter utilizará para ejecutar la prueba. Los controles para un grupo de hilos le permiten:

•Establecer el número de hilos

•Establecer el período de tiempo – en segundos

•Establecer el número de veces que debe ejecutar la prueba

Por ejemplo, si se utilizan 10 hilos, y el período es de 100 segundos, cada hilo se iniciará 10 (100/10) segundos después de que el hilo anterior fue comenzado. Si hay 30 hilos y un período de 120 segundos, cada hilo se ejecutara cada 4 segundos.

El período debe ser lo suficientemente largo para evitar un número excesivo de trabajo al comienzo de la prueba, y suficientemente corto para que los últimos hilos empiecen a correr antes de que finalicen los primeros (a menos que se quiera que eso suceda).

Se puede utilizar un repetidor para que se ejecuten los hilos las veces que se desee, adicionalmente se encuentra un planificador para determinar cuándo inicia y termina el grupo de hilos.

3.2. Controllers (Controladores).

JMeter tiene dos tipos de controladores: Samplers (Muestreador) y Logical Controllers (Controladores Lógicos).

Samplers: se utiliza para enviar peticiones a un servidor. Por ejemplo, se debe añadir un muestreador de solicitud HTTP, si se desea que JMeter envíe una petición HTTP. También se puede personalizar mediante la adición de una solicitud de uno o varios elementos de configuración en un sampler.

Logical Controllers: que permiten personalizar la lógica que JMeter utilizará para decidir cuándo enviar las solicitudes.

Page 10: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

10

3.2.1. Samplers (Muestreador).

Los Muestreadores se utilizan para enviar peticiones a un servidor y esperar una respuesta. Se procesan en el orden en que aparecen en el árbol. Los controladores pueden ser utilizados para modificar el número de repeticiones de una muestra.

Los muestreadores JMeter incluyen:

•Solicitud de FTP

•Solicitud HTTP

•Solicitud de JDBC

•Java Object Request

•Solicitud de LDAP

•Solicitud SOAP / XML-RPC

•Solicitud WebService (SOAP)

Dependiendo del tipo de Servidor al cual se desea acceder, se requiere

Page 11: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

11

indicar información asociada al servidor: nombre, puertos, rutas, protocolos, etc. Así como el manejo que se debe dar a las respuestas del servidor, que incluyen la generación de gráficas, tablas, etc. con los resultados obtenidos de la simulación.

3.2.2. Logic Controllers (Controladores lógicos).

Los controladores lógicos permiten personalizar la lógica que JMeter utiliza para decidir cuándo enviar las solicitudes. Se Puede cambiar el orden de las solicitudes procedentes de los elementos, establecer condiciones, intervalos, repeticiones, etc.

3.2.3. Test Fragments (Fragmentos de prueba).

Los fragmentos de prueba son un tipo especial de controlador que existe en el árbol de plan de pruebas en el mismo nivel que el elemento de grupo de hilos. Se distingue de un grupo de hilos en que no se ejecuta a menos que se adicione el elemento Include Controller.

Su objetivo principal es la reutilización de código dentro de los planes de prueba.

Page 12: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

12

3.3. Listeners (Receptores).

Un Receptor facilita el acceso a la información de JMeter. Escucha los tiempos y provee una gran cantidad de información de forma grafica. Muestra los detalles de las solicitudes de todas las respuestas de los servidores, y puede mostrar las representaciones en HTML y XML, así como dirigir los datos a un archivo para su uso posterior.

Page 13: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

13

Cada receptor en JMeter ofrece un campo para indicar el archivo que almacenará los datos. También hay un botón de configuración que se puede utilizar para elegir los campos a guardar, y el formato a usar: CSV o XML. Los receptores se pueden añadir en cualquier lugar de la prueba, incluso directamente al inicio.

3.4. Timers (Temporizadores).

Por defecto, un hilo JMeter envía peticiones sin pausa entre cada solicitud, sin embargo es recomendable especificar un retraso mediante la adición de uno de los temporizadores a disposición del grupo de hilos. Si no se agrega un retraso, JMeter podría saturar el servidor, haciendo demasiadas solicitudes en un lapso muy corto de tiempo.

Si decide agregar más de un temporizador para un grupo de hilos, JMeter toma la suma de los contadores de tiempo y se detiene por esa cantidad de tiempo antes de la ejecución de las muestras a las que se aplican los temporizadores. Los temporizadores se pueden añadir como hijos de muestras o controladores con el fin de restringir las muestras a los que se aplican.

3.5. Assertions (Afirmaciones).

Las afirmaciones permiten recibir hechos acerca de las respuestas recibidas desde el servidor que se está probando. Usando una afirmación, puede

Page 14: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

14

esencialmente probar que la aplicación devuelve los resultados que usted espera.

Se puede agregar una afirmación a cualquier muestreador. Por ejemplo, puede agregar una afirmación a una petición HTTP que comprueba el texto, “</ HTML>”. JMeter comprobará entonces que el texto está presente en la respuesta HTTP. Si JMeter no puede encontrar el texto, entonces se marcará como una solicitud con error.

3.6. Configuration Elements (Elementos de configuración).

Un elemento de configuración trabaja en estrecha colaboración con un Muestreador. Se puede acceder sólo dentro de la rama de un árbol donde se coloca el elemento. Además, un elemento de configuración dentro de una rama de un árbol tiene mayor prioridad que el mismo elemento en un “padre” rama.

Page 15: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

15

3.7. Pre-Processor Elements (Pre-procesadores de elementos).

El pre-procesador de elementos es una acción previa a una solicitud Sampler que se está realizando. Si esta unido a un elemento de muestreo, se ejecutará justo antes de este elemento. Se utiliza con mayor frecuencia para modificar la configuración de una solicitud de muestreo justo antes de que se ejecute, o para actualizar las variables que no se extraen.

Page 16: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

16

3.8. Post-Processor Elements (Post- procesadores de elementos).

El post-procesador de elementos ejecuta alguna acción después de una solicitud Sampler. Cuando está conectado a un elemento de muestreo, se ejecutará justo después de que se ejecuta este elemento. Aun cuando es usado para procesar los datos, a menudo se utiliza para extraer los valores.

4. Construcción de un plan de pruebas para Base de Datos.

En esta sección, se presenta un ejemplo de cómo crear un plan de pruebas en Jmeter para validar el rendimiento y comportamiento del manejo de concurrencia de un servidor de base de datos.

Para esto se realizaran las siguientes actividades en términos generales:

•Creación de usuarios: se crearán 8 usuarios que envían cinco peticiones SQL al servidor de base de datos.

•Configuración: Las pruebas se ejecutarán en tres ocasiones. Por lo tanto, el número total de solicitudes es (8 usuarios X 3 veces) = 24 peticiones.

•Elementos a utilizar: El plan de pruebas usará las opciones: grupo de hilos, la solicitud de JDBC y los resultados se presentarán en modo gráfico.

Page 17: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

17

Es necesario contar con los controladores JDBC de acuerdo con el servidor de base de datos a utilizar. Para poder utilizar cualquier controlador de BD se deben descargar y guardar el archivo con extensión .jar en el directorio Lib de la carpeta principal de Jmeter. Para la ejecución del laboratorio se suministraran los archivos correspondientes a Oracle, SQLServer y PostgreSQL en el espacio destinado para cada laboratorio.

4.1. Usuarios.

El primer paso para construir un plan de prueba de JMeter es añadir el elemento grupo de hilos. El Grupo indica a JMeter el número de usuarios que se desea simular, con qué frecuencia los usuarios deben enviar las solicitudes, y el número de solicitudes que deben enviar.

Después, para modificar las propiedades por defecto se selecciona en el árbol del plan de pruebas el elemento Grupo de Hilos.

Page 18: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

18

Debe proporcionarse un nombre descriptivo para el grupo de hilos. En el ejemplo se utilizará el nombre Usuarios de JDBC, y se establecerá un total de 8 usuarios

El campo período de subida indica a JMeter cuánto tiempo se demora para dar comienzo a cada usuario. Por ejemplo, si se introduce una fase de arranque de 5 segundos, JMeter debe iniciar todos los usuarios al finalizar los 5 segundos. Por lo tanto, si se tiene 5 usuarios y un periodo de 5 segundos el retraso entre los usuarios de partida sería de 1 segundo (5 usuarios y 5 segundos = 1 usuario por segundo). Si establece el valor a 0, entonces JMeter comenzará inmediatamente con todos los usuarios.

Por último, al introducir un valor de 3 en el campo Contador del bucle, se estará indicando a JMeter cuántas veces debe repetir la prueba. Para que JMeter repita esta prueba sin parar, se activa la casilla sin fin.

JMeter guarda automáticamente los cambios hechos en el plan de pruebas, quiere decir que si se cambia el nombre de los elementos o sus propiedades será guardado inmediatamente.

4.2. Peticiones JDBC.

A continuación se deben definir las tareas que se van a realizar. En esta sección, se detallará la petición JDBC a ejecutar.

Crear un elemento de configuración para la conexión JDBC

La configuración que se presenta a continuación indica que se va a utilizar una base de datos local llamada prueba con un usuario denominado administrador y su respectiva contraseña.

Page 19: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

19

Plan para base de datos SQL Server.

•Nombre de la variable debe ser único. Es utilizado por la Muestra JDBC para identificar la configuración que se utilizará.

•URL Base de datos: jdbc:sqlserver://localhost:1433;databaseName=prueba

•JDBC clase Driver: com.microsoft.sqlserver.jdbc.SQLServerDriver

•Nombre de Usuario: Administrador

•Contraseña: ******

•Los otros campos en la pantalla se puede dejar con los valores predeterminados.

Page 20: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

20

Plan para base de datos PostgreSQL.

• Nombre de la variable debe ser único. Es utilizado por la Muestra JDBC para identificar la configuración que se utilizará.

• URL Base de datos: jdbc:postgresql://localhost/prueba

• JDBC clase Driver: com.postgresql.jdbc.driver

• Nombre de Usuario: Administrador

• Contraseña: ******

• Los otros campos en la pantalla se puede dejar con los valores predeterminados.

Plan para base de datos Oracle.

• Nombre de la variable debe ser único. Es utilizado por la Muestra JDBC para identificar la configuración que se utilizará.

• URL Base de datos: jdbc:oracle:thin:@//localhost/prueba

• JDBC clase Driver: oracle.jdbc.OracleDriver

• Nombre de Usuario: administrador

• Contraseña: *****

Page 21: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

21

• Los otros campos en la pantalla se puede dejar con los valores predeterminados.

La siguiente tarea es la selección del elemento de JDBC: Para esto se debe hacer clic con el botón derecho del ratón para obtener el menú Agregar y, a continuación, seleccionar Agregar > Muestreador > Solicitud de JDBC.

Para este ejemplo en el plan de pruebas, se van a hacer 2 peticiones JDBC. La primera petición es que consulte los primeros 1000 registro de la tabla cliente de la base de datos prueba. La segunda petición consulta todos los registro de la tabla pero solo el nombre de los clientes. JMeter

Page 22: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

22

ejecuta los elementos como están ordenados en el árbol ubicado en la parte izquierda de la imagen.

Para empezar, se modifican algunas propiedades como el nombre de la petición y el de la variable, así mismo se debe ingresar la consulta SQL a ejecutar.

Luego se configura la segunda petición, con un nombre de petición diferente, pero el nombre de la variable igual y la nueva consulta SQL a ejecutar.

4.3. Ver y guardar los resultados.

El último elemento denominado Receptor o Listener, es necesario para el plan de pruebas. Este elemento se encarga de almacenar todos los resultados de las peticiones JDBC en un archivo y la presentación de un modelo visual.

Page 23: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

23

Para este ejemplo se selecciona el elemento de JDBC y luego añadir “Gráfico de Resultados”.

Page 24: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

24

Las gráficas proporcionan un recurso para analizar y medir el desempeño de los servicios para los cuales se construyeron las pruebas, detectando posibles errores y problemas antes de que los servicios entren en producción.

Glosario.

SOAP.

SOAP (siglas de Simple Object Access Protocol) es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML. SOAP fue creado por Microsoft, IBM y otros y está actualmente bajo el auspicio de la W3C. Es uno de los protocolos utilizados en los servicios Web.

JDBC.

Java Database Connectivity, más conocida por sus siglas JDBC, es una API que permite la ejecución de operaciones sobre bases de datos desde el lenguaje de programación Java, independientemente del sistema operativo donde se ejecute o de la base de datos a la cual se accede, utilizando el dialecto SQL del modelo de base de datos que se utilice.

LDAP.

LDAP son las siglas de Lightweight Directory Access Protocol (en español Protocolo Ligero de Acceso a Directorios) que hacen referencia a un protocolo a nivel de aplicación el cual permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. LDAP también es considerado una base de datos (aunque su sistema de almacenamiento puede ser diferente) a la que pueden realizarse consultas.

Junit.

JUnit es un conjunto de bibliotecas creadas por Erich Gamma y Kent Beck que son utilizadas en programación para hacer pruebas unitarias de aplicaciones Java.

Page 25: Manual Jmeter 1

FAVA - Formación en Ambientes Virtuales de Aprendizaje

Manual Apache Jmeter

SENA - Servicio Nacional de Aprendizaje

25

Bibliografía.

•Elahi, M. (4 de Abril de 2011). Testing Thoughts. Recuperado el 15 de abril de 2012, de http://scornik.blogspot.com/2011/05/sql-query-performance-test-with-jmeter.html.

•La lista oficial de Colaboradores aquí. (1 de Junio de 1999). Fundación de Software Apache. Recuperado el 15 de abril de 2012, de http://jmeter.apache.org.

•Wales, J.; Sanger, L. (15 de Enero de 2001). Wikipedia la Enciclopedia Libre. Recuperado el 15 de abril de 2012, de http://es.wikipedia.org.