¿Por qué se descuidan las pruebas de rendimiento del software?

Las pruebas unitarias, las pruebas de integración y las pruebas del sistema son difíciles. Las pruebas de rendimiento del software son más difíciles y, por lo tanto, a menudo se descuidan.

Las pruebas de unidad e integración generalmente se basan en una especificación o diseño, por lo que generalmente es sencillo: haga X y vea si Y es el resultado. Establecer métricas para las pruebas de rendimiento no es sencillo; ¿La configuración de prueba replica el “mundo real”, las métricas tienen en cuenta las diferencias en hardware y configuración, los datos de entrada replican el “mundo real”? Si se equivoca, la prueba puede generar fallas falsas en la prueba y falsas pasadas de prueba, lo que resulta en una falsa sensación de seguridad o una falsa sensación de pánico.

El santo patrón de la programación, Donald Knuth, dijo una vez: La optimización prematura es la raíz de todo mal . Knuth tenía un punto en el pasado cuando los programadores codificaban sus propias estructuras de datos y los algoritmos de búsqueda y clasificación y los ciclos de CPU eran productos que debían acapararse. Hoy en día, las cosas son diferentes.

La mayoría de nosotros hoy en día estamos usando una gran cantidad de frameworks, bibliotecas, herramientas y widgets que nunca nos permiten estar a una distancia de cualquier ganancia algorítmica teórica en velocidad o eficiencia. Ya nadie se preocupa por los méritos relativos de diferentes algoritmos de clasificación o búsqueda o estructuras de datos.

Por lo tanto, los peligros de la “optimización prematura” a menudo se traducen en “no tenemos que preocuparnos por eso ahora, lo probaremos más tarde”, excepto que las pruebas posteriores a menudo son fáciles de omitir.

Estrechamente relacionado con esa actitud es “no tenemos que preocuparnos por el rendimiento ahora, si tenemos un problema, simplemente le arrojaremos más memoria, disco y CPU”, gracias a la Ley de Moore.

agregando mis 2 centavos aquí …

la mayoría de los sistemas no necesitan funcionar bien … suena extraño venir de mí, pero la realidad es esta.

¿Cuántos sistemas sabes que necesitan admitir 1.000 usuarios que acceden simultáneamente a sus servidores?

¿O por qué acelerar una aplicación, si el usuario puede esperar varios minutos en el otro lado, sin dañar los ingresos del negocio?

Entonces, a pesar de las fallas informadas en los medios, creo que la prueba de rendimiento no es para todos.

Pero todas las aplicaciones deben aprobar al menos un estudio para comprender si se necesitan pruebas de rendimiento o no, como cuando decide qué lenguaje de programación va a utilizar, qué proveedor de la nube, qué tipo de base de datos, etc. Y solo con el asesoramiento de un probador de rendimiento profesional este análisis podría ejecutarse bien.

Más de una vez, me llamaron para ejecutar una prueba de rendimiento y concluí que no era necesario.

¡Buena suerte!

Se dice que ningún software es infalible, sin importar qué técnica de desarrollo se use. Entonces, Las prácticas de los servicios de pruebas de rendimiento se realizan para determinar qué tan bien se desempeña un sistema o sus componentes en un escenario dado bajo una carga de trabajo particular. Entonces, si se descuida, entonces es una práctica incorrecta. Los sistemas involucrados en la infraestructura comercial de una organización deben ser muy sensibles y estables bajo una carga particular. Por lo tanto, es esencial asegurarse de que el software que forma la base de los sistemas esté intacto. Por lo tanto, probarlos es crucial para garantizar que estén libres de errores y sean consistentes en el proceso de lograr un objetivo sin problemas.

Como requisito no funcional, es difícil cuantificar un nivel esperado de rendimiento aceptable y luego medirlo.

Lamentablemente, demasiadas especificaciones funcionales (si existe alguna) la omiten o simplemente imponen requisitos inútiles como “tendrá un rendimiento aceptable”.

More Interesting

¿Por qué necesitamos pruebas de software? Si es necesario, ¿qué tipo de cosas debemos recordar durante las pruebas de software?

¿El mapeo relacional de objetos sigue siendo "el Vietnam" de la informática?

Estoy trabajando como probador manual durante 1,5 años en la puesta en marcha, ahora he sido ascendido a gerente de proyecto. ¿Es recomendable tomar la promoción?

¿Cuáles son los salarios para los ingenieros de software al principio?

¿Cuáles son los primeros pasos para construir un equipo de desarrollo de software desde cero?

Gestión de la tecnología de la información: ¿cómo equilibra su equipo las solicitudes de asistencia con los proyectos activos?

Después de SQL, ¿qué debo aprender a continuación para poder crear un software básico por mi cuenta?

¿Cuál es la diferencia entre regresión, cordura y prueba de humo?

¿Qué es la arquitectura orientada a servicios? ¿Cómo es eso diferente de la virtualización?

¿Qué necesito saber para crear un software similar a salesforce?

¿Qué patrones de diseño de GoF (Gang of Four) están desactualizados?

¿Qué softwares o herramientas son buenos para administrar las pruebas de los usuarios y el calendario de entrevistas?

Si puedes retroceder en el tiempo y darte consejos justo antes de comenzar tu viaje de programación, ¿cuál sería?

¿Cómo funciona el sistema FastPass + de Disney desde el punto de vista de la informática y la programación? En otras palabras, ¿cómo sería el esquema de la base de datos y qué tipo de tecnologías se utilizan para que el sistema funcione?

¿Qué ideas te han hecho un mejor ingeniero de software?