ContiPerf – test de rendimiento

ContiPerf es una librería para enfocada a pruebas de rendimiento utilizando test creados bajo JUnit4. Diseñada por Volker Bergmann, artífice también algunas otras herramientas: The Feed4 Tools ó Mad For DB. Se basa en la misma filosofía de anotaciones que se utiliza en JUnit4 para gestionar los distintos test. Algunas de las funciones que ofrece son:

  • Repetición de test por tiempo o por número de ejecuciones
  • Assert para tiempos de respuesta (máximo, media, percentil, …)
  • Informes HTML y CSV de los resultados obtenidos
  • Integración con Maven

Una vez creados los test unitarios con JUnit, podemos reutilizar estos para ampliar la calidad del testing añadiendo pruebas de rendimiento. No solo necesitamos que un test se ejecute correctamente, sino que este debería cumplir unos criterios de rendimiento (tiempo de respuesta, ejecuciones en paralelo sin bloqueos,…). Estos son divididos por ContiPerf según sean:

  • Requisitos de rendimiento:
    • invocations: número de veces que se invocará el @Test
    • threads: hebras concurrentes sobre las que se distribuirán los invocations
    • duration: tiempo durante el que se ejecutará el test en bucle (ms)
  • Configuración de la ejecución del test:
    • throughput: número de ejecuciones por segundo menor que …
    • average: media del tiempo de ejecución menor que …
    • median: al menos, el 50% de las ejecuciones con un tiempo de ejecución menor que …
    • max: tiempo de ejecución de un test menor que …
    • totalTime: tiempo total de la ejecución de todos los test menor que …
    • percentileX: al menos el X% de las ejecuciones con un tiempo de ejecución menor que …

Cómo empezamos:

Para comenzar a utilizar ContiPerf, basta con incluir la librería contiperf-2.0.0.jar en nuestro proyecto e instanciar a su clase principal:

@Rule
 public ContiPerfRule i = new ContiPerfRule();

A partir de aquí, podremos utilizar las anotaciones propias de ContiPerf, por ejemplo:

@Test
 @PerfTest(invocations = 1000, threads = 20)
 @Required(max = 1200, average = 250)

Esto nos indica que vamos a llamar al método 1000 veces, repartidas en 20 hebras y que para que el test sea satisfactorio, este debe ejecutarse en un máximo de 1200ms y la media del tiempo de ejecución no puede superar los 250ms.

También es posible utilizar ContiPerf sobre testSuites, de modo que será la suite la que se ejecute y compruebe según los criterios configurados

@RunWith(ContiPerfSuiteRunner.class)
 @SuiteClasses(MyApplicationTest.class)
 @PerfTest(invocations = 1000, threads = 30)
 public static class PeakLoadTest {
 }

Integración con Maven:

Basta con incluir el siguiente bloque

<dependency>
 <groupId>org.databene</groupId>
 <artifactId>contiperf</artifactId>
 <version>2.0.0</version>
 <scope>test</scope>
 </dependency>

Y ejecutar mvn test

Si se utilizan los mismos test tanto para aceptación como para rendimiento, y se quieren lanzar los mismos sin la librería, bastaría con desactivar esta en la ejecución de los test.

mvn test -DargLine="-Dcontiperf.active=false"

Descarga:

Se puede obtener ContiPerf2 desde http://sourceforge.net/projects/contiperf/files/ContiPerf%202.0/

Próxima funcionalidad: ejecución de test con ramp-up y paradas aleatorias.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s