Underc0de

Informática => QA (Quality Assurance) => Mensaje iniciado por: ANTRAX en Marzo 24, 2012, 10:14:06 AM

Título: Testing de Performance con JMeter
Publicado por: ANTRAX en Marzo 24, 2012, 10:14:06 AM
(http://3.bp.blogspot.com/-Szf5jKk45H4/T2Nwb1Lp7mI/AAAAAAAABO0/ni1mSgUyqEs/s221/0.jpg) (http://3.bp.blogspot.com/-Szf5jKk45H4/T2Nwb1Lp7mI/AAAAAAAABO0/ni1mSgUyqEs/s221/0.jpg)
Introducción:

Resumiendo un poco, Los testing de performance permiten conocer el mal desempeño de alguna aplicación.JMeter es uno de los programas más usados a la hora de hacer un testing de performance ya que es muy fácil de manejar. Carece de un buen reporte de resultados, pero aun así muestra todos los resultados necesarios para este tipo de testing.JMeter se puede usar para aplicaciones que manejen estos protocolos:

Web – HTTP, HTTPS
SOAP
Database via JDBC
LDAP (Lightweight Directory Access Protocol)
JMS (Java Message Service)Mail – POP3

Cabe aclarar que JMeter funciona con todos los navegadores.Sin más nada que decir, empezaremos a usarlo.

Primeros pasos con JMeter

Empezaremos descargando JMeter de su página oficial: http://jmeter.apache.org/download_jmeter.cgi (http://jmeter.apache.org/download_jmeter.cgi) Es una herramienta Open source y se darán cuenta cuando la descarguen.Una vez descargada, la descomprimimos y vamos al directorio bin y ejecutamos el archivo llamado jmeter.bat y veremos una pantalla similar a la siguiente imagen:
(http://2.bp.blogspot.com/-iwk2OXOOJ6c/T2NwcMaiLcI/AAAAAAAABO8/yjtk0-f56-w/s640/1.png) (http://2.bp.blogspot.com/-iwk2OXOOJ6c/T2NwcMaiLcI/AAAAAAAABO8/yjtk0-f56-w/s706/1.png)
Para comenzar, añadiremos un grupo de hilos, que es el que contendrá todos los pasos a testear.Para ello vamos:
Plan de Pruebas  >>  Añadir  >>  Hilos (Usuarios)  >>  Grupo de Hilos
(http://2.bp.blogspot.com/-venj2y1pM7o/T2Nwf15VCCI/AAAAAAAABPw/wg8wijNvAEI/s640/2.png) (http://2.bp.blogspot.com/-venj2y1pM7o/T2Nwf15VCCI/AAAAAAAABPw/wg8wijNvAEI/s706/2.png)
Colocamos un nombre para identificarlo:
(http://1.bp.blogspot.com/-rY-0Auw0kKg/T2Nwf-yJ1KI/AAAAAAAABP0/9Mz2fb8pYBM/s640/3.png) (http://1.bp.blogspot.com/-rY-0Auw0kKg/T2Nwf-yJ1KI/AAAAAAAABP0/9Mz2fb8pYBM/s706/3.png)
Como se puede ver, se puede aumentar el número de hilos, cada cuantos segundos queremos que se corran las iteraciones, etc.Ahora crearemos un banco de trabajo. Para ello clickeamos sobre Banco de trabajo con el click derecho del mouseY nos dirigimos a:
Añadir  >>  Elementos NoDePrueba  >>  Servidor Proxy HTTP
(http://2.bp.blogspot.com/-6poIKtlNAOA/T2Nwh1wYTcI/AAAAAAAABQU/jp8ZtHJ8U-A/s640/4.png) (http://2.bp.blogspot.com/-6poIKtlNAOA/T2Nwh1wYTcI/AAAAAAAABQU/jp8ZtHJ8U-A/s706/4.png)
Ahora configuraremos la conexión entre el programa y el navegador para que JMeter pueda recibir todo lo que se escucha por un puerto específico
(http://2.bp.blogspot.com/-1qHZy_v2rxw/T2Nwh0HS4gI/AAAAAAAABQQ/N12jAIi24g8/s640/5.png) (http://2.bp.blogspot.com/-1qHZy_v2rxw/T2Nwh0HS4gI/AAAAAAAABQQ/N12jAIi24g8/s706/5.png)
Como se puede ver, el primer recuadro rojo es para el puerto, este mismo puerto es el que debemos colocar en nuestro navegador.El segundo cuadro es para el Controlador Objetivo, en el cual pondremos el hilo que hemos creado en el plan de pruebas. Como se pueden crear muchos hilos, debemos seleccionar cual es el que deseamos grabar en ese momento. Entonces todo lo que naveguemos quedara guardado en ese controlador de objetivo que seleccionemos.Finalmente se puede excluir algunas extensiones. Yo en mi caso saque las imágenes, Pero eso ya es opcional.Una vez que tengamos hecho eso, configuraremos el navegador. Yo usare Firefox.Nos vamos a:
Herramientas  >>  Opciones
En las opciones avanzadas, vamos a la pestaña Red y entramos a las configuraciones de la conexión:
(http://1.bp.blogspot.com/-jAUQfBAQE38/T2NwhrbI4uI/AAAAAAAABQI/8Mdl2dk1irA/s1600/6.png) (http://1.bp.blogspot.com/-jAUQfBAQE38/T2NwhrbI4uI/AAAAAAAABQI/8Mdl2dk1irA/s592/6.png)
Seleccionamos la configuración manual del proxy, y en Proxy HTTP, colocamos localhost y en puerto, debemos poner el mismo que habíamos puesto en JMeter. Que en mi caso es el 8080.
(http://3.bp.blogspot.com/-PLU7Heihdwc/T2NwiTZJpeI/AAAAAAAABQg/YgSYNjwyNUg/s1600/7.png) (http://3.bp.blogspot.com/-PLU7Heihdwc/T2NwiTZJpeI/AAAAAAAABQg/YgSYNjwyNUg/s485/7.png)
Una vez que tenemos esto, damos aceptar.Volvemos al JMeter y ahora presionamos en Arrancar para empezar a grabar los pasos.
Grabando los pasos
(http://4.bp.blogspot.com/-EmVfASDRWXY/T2NwiqTSezI/AAAAAAAABQk/zcrs2WGbqDs/s320/8.png) (http://4.bp.blogspot.com/-EmVfASDRWXY/T2NwiqTSezI/AAAAAAAABQk/zcrs2WGbqDs/s368/8.png)
Ahora si podemos comenzar a navegar para guardar los pasos.
(http://2.bp.blogspot.com/-KpHyVo2EhmA/T2NwjemeUhI/AAAAAAAABQw/fpySY2NRKcU/s640/9.png) (http://2.bp.blogspot.com/-KpHyVo2EhmA/T2NwjemeUhI/AAAAAAAABQw/fpySY2NRKcU/s706/9.png)
Una vez que finalizamos de hacer el recorrido de navegación, o los pasos a testear, frenamos el JMeter para dejar de grabar
(http://4.bp.blogspot.com/-sKs9xiWcXoQ/T2Nwb-PtGVI/AAAAAAAABOw/IzT84CqfzKE/s320/10.png) (http://4.bp.blogspot.com/-sKs9xiWcXoQ/T2Nwb-PtGVI/AAAAAAAABOw/IzT84CqfzKE/s345/10.png)
Bueno, con esto ya hemos grabado todos los pasos. Ahora vamos a ver un poco los resultadosSi miramos en la izquierda, aparece el icono del hilo y con una chincheta que se puede abrir
(http://4.bp.blogspot.com/-vYbdPxoprck/T2Nwc3vY-gI/AAAAAAAABPE/3wdb_a2MKfA/s232/11.png) (http://4.bp.blogspot.com/-vYbdPxoprck/T2Nwc3vY-gI/AAAAAAAABPE/3wdb_a2MKfA/s232/11.png)
Haciendo click en ella, podremos ver todos los pasos y todo lo que paso por entre medio al navegar.
(http://4.bp.blogspot.com/-WF_wginAvJ0/T2NweNUX21I/AAAAAAAABPc/gyct0MbAIFs/s1600/12.png) (http://4.bp.blogspot.com/-WF_wginAvJ0/T2NweNUX21I/AAAAAAAABPc/gyct0MbAIFs/s640/12.png)
Obteniendo resultadosAhora solo nos queda ver en que tiempo responde la navegación y demás. Para ello, añadimos un reporte de resumenCon el click derecho del mouse en Plan de Pruebas
Añadir  >>  Receptor  >>  Reporte Resumen
(http://2.bp.blogspot.com/-MkGOOPaDg-o/T2Nwd9nM2gI/AAAAAAAABPU/n-BW6VP40IM/s640/13.png) (http://2.bp.blogspot.com/-MkGOOPaDg-o/T2Nwd9nM2gI/AAAAAAAABPU/n-BW6VP40IM/s706/13.png)
Y como podemos ver, se añade debajo del hilo
(http://1.bp.blogspot.com/-MLvgxLgSxwI/T2NwdnrzysI/AAAAAAAABPM/fbvqFX1w0JA/s261/14.png) (http://1.bp.blogspot.com/-MLvgxLgSxwI/T2NwdnrzysI/AAAAAAAABPM/fbvqFX1w0JA/s261/14.png)
Ahora solo nos queda correr el hilo y ver los resultados.
(http://3.bp.blogspot.com/-rktHyw80uWE/T2NweTwB_tI/AAAAAAAABPg/89TctzrKm6Q/s640/15.png) (http://3.bp.blogspot.com/-rktHyw80uWE/T2NweTwB_tI/AAAAAAAABPg/89TctzrKm6Q/s706/15.png)
Damos click en Arrancar, que es el botón verde con el Play y esperamos los resultados
(http://4.bp.blogspot.com/-dZGhG5efYEI/T2Nwf7gSupI/AAAAAAAABP4/Y1SI0hqM0zQ/s640/16.png) (http://4.bp.blogspot.com/-dZGhG5efYEI/T2Nwf7gSupI/AAAAAAAABP4/Y1SI0hqM0zQ/s706/16.png)
En el reporte podemos ver los valores de respuesta de cada elemento de la página, si hay porcentaje de error y demás.Así como añadimos en este caso reporte de resumen, JMeter permite hacer graficas y otros reportes bastantes útiles que se añaden de la misma forma que el que acabamos de ver.A demás como dije antes, se pueden añadir iteraciones para simular el ingreso de más de un usuario a la aplicación y ver como responde esta.Espero que les haya gustado este paper y que les sea útil!
ANTRAX
Título: Re:Testing de Performance con JMeter
Publicado por: carlaysolina en Octubre 18, 2017, 01:06:39 PM
Hola

Tengo un problema con mis pruebas.
Necesito grabar y probar un proceso de registro de expedientes, pero cuando llego a la parte de grabar los datos me sale un error.
Copio detalle del error que se presenta:

java.lang.NullPointerException
   at IpasWeb.Mark.Edit.MarkEditControllerImpl.updateEntityFromPage(MarkEditControllerImpl.java:4132)
   at IpasWeb.Mark.Edit.EditTrademarkSaveAllChanges._updateCurrentMarkFromPage(EditTrademarkSaveAllChanges.java:216)
   at IpasWeb.Mark.Edit.EditTrademarkSaveAllChanges.execute(EditTrademarkSaveAllChanges.java:121)
   at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
   at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
   at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
   at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
   at org.andromda.presentation.bpm4struts.ActionServlet.doPost(ActionServlet.java:48)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
   at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
   at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:206)
   at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:179)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
   at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
   at IpasWeb.ApplContext.LoginFilter.doFilter(LoginFilter.java:57)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
   at webcontrol.CharsetFilter.doFilter(CharsetFilter.java:22)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
   at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
   at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
   at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
   at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
   at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
   at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
   at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
   at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
   at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
   at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
   at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
   at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
   at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
   at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
   at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
   at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
   at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
   at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
   at java.lang.Thread.run(Thread.java:745)
Título: Re:Testing de Performance con JMeter
Publicado por: ANTRAX en Diciembre 04, 2017, 04:01:19 PM
Hola @carlaysolina (https://underc0de.org/foro/index.php?action=profile;u=70173) podrías poner un poco mas de info?
Como por ejemplo un screenshot?

Saludos!
Título: Re:Testing de Performance con JMeter
Publicado por: renzonew en Mayo 26, 2023, 09:05:22 PM
necesita actualizar el contenido o funciona con el programa actualizar