Sobes.tech
Middle

¿Cuáles son los aspectos principales de la prueba de rendimiento y qué herramientas ha utilizado para su implementación?

sobes.tech AI

Respuesta de la IA

La prueba de rendimiento incluye:

  • Prueba de carga (Load Testing): Evaluación del comportamiento del sistema bajo carga esperada. Determina el límite superior de usuarios o transacciones que el sistema puede soportar antes de que la rendimiento comience a degradarse.
  • Prueba de estrés (Stress Testing): Prueba del sistema bajo cargas extremas que superan las esperadas, para determinar el punto de fallo y el comportamiento en esas condiciones. El objetivo es asegurar que el sistema se recupere después de una sobrecarga.
  • Prueba de resistencia (Endurance/Soak Testing): Prueba del sistema durante un período prolongado con una carga significativa para detectar fugas de memoria u otros problemas que aparecen con el tiempo.
  • Prueba de picos de carga (Spike Testing): Aumento repentino de la carga en el sistema para detectar la reacción ante picos súbitos de actividad de los usuarios.
  • Prueba de volumen (Volume Testing): Prueba con grandes volúmenes de datos en la base de datos o sistema de archivos para evaluar el rendimiento con grandes cantidades de información.
  • Prueba de escalabilidad (Scalability Testing): Determinar la capacidad del sistema para manejar aumentos en la carga mediante la adición de recursos de hardware u optimización del software.

Para realizar pruebas de rendimiento se utilizan las siguientes herramientas:

  • Apache JMeter: Herramienta Java de código abierto que soporta diversos protocolos (HTTP, HTTPS, FTP, JDBC, etc.). Permite crear escenarios de prueba complejos, incluyendo parametrización, correlación, registro y generación de informes detallados.
    // Ejemplo de solicitud HTTP en JMeter (archivo JMX)
    <HTTPSamplerProxy guiclass="HttpTestSampleGui"
                       testclass="HTTPSamplerProxy"
                       testname="Sample"
                       enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain">example.com</stringProp>
      <stringProp name="HTTPSampler.port">80</stringProp>
      <stringProp name="HTTPSampler.protocol">http</stringProp>
      <stringProp name="HTTPSampler.path">/api/users</stringProp>
      <stringProp name="HTTPSampler.method">GET</stringProp>
    </HTTPSamplerProxy>
    
  • LoadRunner (Micro Focus): Herramienta comercial conocida por su amplio soporte de protocolos y análisis de resultados. Frecuentemente utilizada en grandes proyectos corporativos.
  • Gatling: Herramienta moderna de código abierto basada en Scala. Destaca por su rendimiento y lenguaje expresivo para crear escenarios de prueba (DSL).
    // Ejemplo de escenario Gatling (Simulation.scala)
    import io.gatling.core.Predef._
    import io.gatling.http.Predef._
    
    class BasicSimulation extends Simulation {
    
      val httpProtocol = http
        .baseUrl("https://example.com")
        .inferHtmlResources()
        .proxy(Proxy("localhost", 8888).httpsPort(443))
    
      val scn = scenario("Usuarios")
        .exec(http("Obtener usuarios").get("/api/users"))
    
      setUp(scn.inject(rampUsers(100) during (5 minutes))).protocols(httpProtocol)
    }