2009-02-04 22 views
6

Tengo un código que quiero medir la velocidad de mientras se ejecuta de forma continua en las pruebas de regresión automática. El propósito de esto sería alertarme sobre los cambios realizados en el código que han tenido un impacto negativo en el rendimiento.La mejor manera de medir el tiempo de ejecución en las pruebas de regresión automática

En pseudo-código, quiero algo como esto:

cpuTimer.start 
runTest 
cpuTimer.stop 

diff = cpuTimer.getDuration 

if diff > prevDiff // Perhaps to within a tolerance 
    failTest 

estoy mirando ThreadMXBean # getCurrentThreadCpuTime() para esto, pero el problema principal es que las pruebas automatizadas se llevará a cabo en una amplia rango de diferentes PC de desarrollador, y se procesará automáticamente para probar servidores con una gama de hardware y capacidades diferentes.

¿Funcionará esto o los números saldrán mal?

¿Cómo se debe resolver este problema? ¿Hay una mejor manera? ¿Hay una herramienta estándar para este tipo de alcaparras?

Respuesta

0

Un enfoque sería analizar los archivos xml estándar que se generan desde la ejecución de junit tanto en maven como en ant. Estos contienen todos los datos que necesita. Aunque hay herramientas para generar informes basados ​​en estos, no conozco ningún agregador/observador.

Si los pone en una tabla de base de datos con campos hostname, testname, executiontime y buildNumber, podrá hacer la mayoría de las cosas que necesite.

+0

Debería haber dicho que no estoy usando JUnit. Por tediosas y horribles razones técnicas e históricas, todo el sistema está hecho a medida. – izb

+0

Cambiar a junit se ha vuelto mucho más fácil con junit4;) – krosenvold

3

Puede tratar de mirar Perf4J. No lo he usado todavía, pero está en mi lista de cosas para investigar.

Desde su página web:

Perf4J es System.currentTimeMillis() como log4j es System.out.println()

El Developer Guide es una buena introducción.

+0

Tenemos que hacer algo similar en nuestro proyecto y Perf4J parece ser la mejor solución. –

+0

esto realmente se ve bien. ¿Alguien ha trabajado con eso todavía? – Epaga

Cuestiones relacionadas