¿Cómo realizar pruebas de rendimiento?
Como desarrollador, lo que más escuchamos son los tres máximos del mundo de la programación:
Alto rendimiento, alta concurrencia y alta disponibilidad.
Suena de muy alta gama, pero ¿cuál es el rendimiento? ¿Cómo debemos evaluarlo?
En esta ocasión hablamos de pruebas de rendimiento y veremos qué es exactamente el alto rendimiento.
Este artículo analiza principalmente los siguientes aspectos.
(1) ¿Qué son las pruebas de rendimiento?
(2) ¿Por qué se necesitan pruebas de rendimiento?
(3) ¿Cómo realizar pruebas de rendimiento?
(4) ¿Qué herramientas de prueba de rendimiento existen?
Lao Ma dijo una vez que si quieres entender algo, primero debes definirlo.
Aquí hay una cita directa de la definición de la enciclopedia:
La definición de pruebas de rendimiento no es difícil de entender. A menudo, la definición misma explica el papel de las pruebas de rendimiento.
Si eres desarrollador o tester, normalmente asumes muchos requisitos y es posible que no estés muy expuesto a las pruebas de rendimiento.
Cada necesidad tiene sus correspondientes necesidades funcionales y necesidades de función pulmonar.
Los requisitos funcionales son los objetivos funcionales más directos que deben alcanzarse en el documento de requisitos del producto. La abreviatura es tan larga como funcione.
Los requisitos no funcionales son mucho más amplios. ¿Es razonable el diseño arquitectónico? ¿Es conveniente para una posterior ampliación? ¿Es fácil de monitorear? ¿Es elegante la implementación del código? ¿Están completos los comentarios de la documentación?
Al igual que si escribieras un pájaro, si la cabeza del pájaro se usa como hélice, no puede volar, pero el diseño arquitectónico puede no ser razonable.
Vuela hacia arriba
Una función de consulta, el usuario hace clic en la consulta y tarda 10 segundos en devolver los datos. La función es satisfactoria, pero el rendimiento es inaceptable.
La función de comercio en línea suele ser excelente en todos los aspectos, pero el sistema se paraliza durante las horas pico de vacaciones.
Entonces, ¿cómo evitar estos problemas en producción?
Esto requiere que se realicen las pruebas de rendimiento correspondientes antes de su puesta en línea para evitar problemas en la reproducción y accidentes graves de producción.
¡El rendimiento debe ser alto, el rendimiento debe ser duro y la prueba de rendimiento debe ser alta y dura!
Alto y duro
Antes de hacer algo, primero debemos determinar nuestros objetivos.
Pruebas de rendimiento, ¿qué se debe probar exactamente?
Algo similar al análisis de requisitos durante el proceso de desarrollo, los indicadores de prueba comunes son los siguientes.
El tiempo de respuesta se refiere al tiempo que tarda en recibirse una solicitud u operación desde el momento en que se emite, incluido el tiempo de procesamiento del servidor de aplicaciones (cliente), el tiempo de transmisión de la red y el tiempo de procesamiento del servidor de la base de datos.
Como usuario, cuando haces clic en la consulta de la página, el tiempo que esperas para obtener los resultados es el tiempo de respuesta.
A los usuarios no les importa cuántos servicios pasa su backend, la lentitud es el pecado original.
Para los sistemas de microservicios, la monitorización de enlaces es más importante. Puede ayudarnos a localizar rápidamente dónde está la lentitud.
TPS (Transacción Por Segundo) se refiere a la cantidad de transacciones procesadas por el sistema por unidad de tiempo (por segundo).
Veo que hay muchos conceptos similares en Internet: clics/tasa de clics, rendimiento/tasa de rendimiento, PV/UV, no entraré en detalles aquí.
Personalmente, parece que TPS/QPS es esencialmente para probar los límites de su aplicación. Cuando el número de visitas es grande, ¿podrá sobrevivir el programa?
Hay dos conceptos principales involucrados aquí: alto rendimiento y alta disponibilidad.
Más adelante trataremos brevemente estos dos puntos.
Después de aclarar los indicadores de la prueba, debe prepararse para la prueba.
Preparación del entorno: por ejemplo, si desea realizar una prueba de esfuerzo de la base de datos, debe preparar los recursos de base de datos configurados correspondientes.
Preparación de scripts: script de inicialización de datos, script de llamada, etc.
Esto se puede comparar con el desarrollo de código en el proceso de desarrollo.
ps: las pruebas de estrés de rendimiento generalmente no se usan con mucha frecuencia, por lo que el proceso de preparación del entorno será relativamente largo, lo cual debe tenerse en cuenta.
Después de realizar la prueba, se deben reportar los resultados de la misma en un informe.
¿Pasa los requisitos de la prueba de estrés?
¿Cuál es el QPS más alto?
De esta manera, el desarrollo se puede optimizar en consecuencia en base a este informe.
No es exagerado escribir un libro sobre cómo mejorar el rendimiento. Aquí hay una breve lista de algunos de los puntos más utilizados:
(1) SQL lento
<. p> General Si el tiempo de respuesta del programa es largo, primero puede observar el SQL lento.Vea si necesita agregar índices o realizar optimización SQL.
(2) Almacenamiento en caché
Para las consultas, la mejora de rendimiento más significativa es la introducción del almacenamiento en caché.
Por supuesto, la introducción del almacenamiento en caché complicará la arquitectura, que debe combinarse con su negocio real.
(3) Actualización de hardware
Si el espacio para la optimización del programa es relativamente pequeño, puede considerar actualizar los recursos de hardware.
Por ejemplo, la configuración del servidor se duplica y la configuración de la base de datos se duplica.
¿Qué? ¿Dijiste que la empresa no tiene dinero para actualizar?
¿Qué pruebas de estrés debo hacer si no tengo dinero para actualizar?
En este momento, se revela el papel del informe de prueba y los datos hablan directamente.
Digamos que QPS no puede cumplir con los requisitos de producción y hay poco espacio para la optimización del programa. Se recomienda actualizar la configuración del hardware y cuánto se debe actualizar.
Para ser una buena persona hay que convencer a los demás con la virtud.
A la hora de hacer pruebas, deja que los datos hablen por sí solos.
Convencer a las personas con virtud
La herramienta más utilizada para realizar pruebas es sin duda jmeter.
Además, existen algunas otras herramientas:
LoadRunner, QALoad, SilkPerformer y Rational Performance Tester.
Aquí hay una breve introducción a varias herramientas
Apache JMeter se puede utilizar para probar el rendimiento de recursos estáticos y dinámicos (aplicaciones web dinámicas).
Se puede utilizar para simular la carga en un servidor, grupo de servidores, red u objeto para probar su solidez o analizar el rendimiento general bajo diferentes tipos de carga.
Integre pruebas de carga en herramientas de desarrollo: IDE, jUnit, nUnit, Jenkins, Selenium y Microsoft Visual Studio.
A partir de la versión 12.55, puede ejecutar sus scripts de JMeter e integrar JMeter con tipos de scripts adicionales en cualquier prueba de rendimiento.
ps: este concepto de diseño es muy bueno y se puede integrar con herramientas maduras. Súbete a los hombros de gigantes.
QALoad es una herramienta de prueba de carga automatizada para sistemas cliente/servidor, planificación de recursos empresariales (ERP) y aplicaciones de comercio electrónico.
QALoad puede simular cientos o incluso miles de usuarios ejecutando servicios clave simultáneamente para completar las pruebas de aplicaciones y optimizar el rendimiento del sistema en función de los problemas descubiertos para garantizar una implementación exitosa de las aplicaciones.
PD: Nunca he estado expuesto a esta herramienta.
SilkPerformerV le permite predecir el comportamiento del entorno de comercio electrónico de su empresa antes de usarlo, independientemente del tamaño y la complejidad de la aplicación de comercio electrónico.
La personalización visual, la verificación visual del contenido en condiciones de carga, la supervisión del rendimiento en tiempo real y los potentes informes de gestión pueden ayudarle a aislar rápidamente los problemas minimizando los ciclos de prueba, optimizando el rendimiento y garantizando que la escalabilidad acelere el tiempo de comercialización y garantice confiabilidad del sistema.
Como parte de un enfoque DevOps, IBM Rational Performance Tester ayuda a los equipos de pruebas de software a realizar pruebas antes y con mayor frecuencia.
Verifica la escalabilidad de las aplicaciones web y de servidor, determina la presencia y las causas de los cuellos de botella en el rendimiento del sistema y reduce las pruebas de carga.
Su equipo de pruebas de software puede realizar rápidamente pruebas de rendimiento para analizar el impacto de la carga en su aplicación.
ps: esta herramienta es proporcionada por IBM y su calidad es confiable.
Con tantas herramientas disponibles, creo que todos los que lean esto han encontrado su herramienta de prueba favorita.
No te preocupes, aquí tienes una herramienta de prueba de rendimiento recomendada específicamente para quienes desarrollan Java.
Los hombres tienen el romance de los hombres, y los desarrolladores también deben tener el romance de los desarrolladores.
Men's Waves.jpg
Como desarrollador, Lao Ma suele utilizar más junit para las pruebas unitarias.
Así que siempre esperé encontrar una herramienta de prueba de estrés de rendimiento basada en junit, y finalmente la encontré.
@JunitPerfConfig especifica la configuración de la propiedad durante la prueba. (Obligatorio)
Úselo de la siguiente manera:
@JunitPerfRequire especifica los requisitos que deben cumplirse durante la prueba. (Opcional)
Úselo de la siguiente manera:
Los métodos de generación de informes de prueba correspondientes también son diversos y permiten a los usuarios personalizarlos.
Basado en el registro de la consola:
O basado en HTML:
junitperf
Este artículo proporciona la introducción más básica a las pruebas de rendimiento. para que Mis amigos tengan una comprensión básica de las pruebas de estrés de desempeño.
Las pruebas, al igual que el desarrollo, requieren mucho tiempo y trabajo y deben realizarse con cuidado para hacerlo bien. El conocimiento involucrado no se puede explicar claramente en un solo artículo.
También hay muchas herramientas de prueba de rendimiento. Este artículo se centra en la herramienta junitperf, que está especialmente creada para desarrolladores de Java.
En la siguiente sección, explicaremos el principio de implementación de junitperf desde la perspectiva del código fuente.
Soy Lao Ma y espero volver a verte la próxima vez.
Dirección de código abierto: /houbb/junitperf