Pregunta

Hola en mi proyecto tenemos cientos de casos de prueba cases.These prueba son parte del proceso de construcción, que se desencadena en cada registro y envía correo a nuestros group.this desarrollador del proyecto es bastante grande y es resultado de más de cinco años.
Ahora tenemos tantos casos de prueba que construyen tarda más de una hora .Algunos de los casos de prueba no están estructurados adecuadamente y después de la refactorización ellos yo era capaz de reducir sustancialmente el tiempo de ejecución, pero tenemos cientos de casos de prueba y refactorización uno por uno parece poco demasiado.
Ahora corro algunos de los casos de prueba (que toma muy largo para ejecutar) sólo como parte de nightly build y no como parte de cada registro.
Tengo curiosidad de cómo otros chicos logran esto.

¿Fue útil?

Solución

Creo que fue en "trabajar eficazmente con el código heredado" que él dijo que si su conjunto de pruebas tarda más de un par de minutos se ralentizará desarrolladores abajo demasiado y las pruebas comenzará a conseguir descuidado. Suena como que está cayendo en esa trampa.

¿Son los casos de prueba que se ejecutan en contra de una base de datos? Entonces eso es más probable que su mayor fuente de problemas de rendimiento. Como regla general, los casos de prueba no deben estar siempre haciendo E / S, si es posible. Inyección de dependencias puede permitir que se sustituya un objeto de base de datos con objetos simulados que simulan la parte de la base de datos de su código. Eso permite probar el código , sin preocuparse de si la base de datos se ha configurado correctamente.

Le recomiendo trabajo efectivo con el código heredado por Michael plumas. El autor analiza cómo manejar una gran cantidad de los dolores de cabeza que usted parece estar corriendo en sin tener que refactorizar el código a la vez.

ACTUALIZACIÓN:

A otra posible ayuda sería algo así como NDbUnit. No he utilizado ampliamente aún, pero parece prometedor: http://code.google.com / p / ndbunit /

Otros consejos

Tal vez usted podría considerar mantener su base de datos Oracle, pero ejecutarlo desde una unidad de memoria RAM? No tendría que ser grande, ya que sólo contendría datos de prueba.

Tenemos alrededor de 1.000 pruebas, gran porcentaje de aquellos que se comunican a través del descanso y golpear la base de datos. tiempo de ejecución total es de unos 8 minutos. Una hora parece excesivo, pero no sé lo que está haciendo y la complejidad de sus pruebas son.

Sin embargo, creo que hay una manera de ayudarle. Estamos utilizando TeamCity y tiene una buena capacidad de tener múltiples agentes de construcción. Lo que podría hacer es dividir el proyecto de prueba en subproyectos con cada subproyecto que contiene sólo un número de pruebas. Se podría utilizar JNunit / NUnit Categorías para separarlos. De allí tendría que configurar TeamCity de manera que cada agente construiría un solo tipo de subproyecto. De esta manera, se obtendría la ejecución en paralelo de las pruebas. Con unos agentes (se obtiene de forma gratuita 3), debe ser capaz de llegar a 20 minutos, lo que incluso podría ser aceptable. Si se pone cada agente en la máquina virtual, puede que ni siquiera requieren máquinas adicionales, sólo tiene una gran cantidad de memoria RAM.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top