2009-12-14 18 views
7

Soy "relativamente nuevo" para pruebas unitarias y TDD. Recientemente, he completado mi primera aplicación de producción que tiene (al menos en teoría) una cobertura de código del 100%. También realicé pruebas unitarias en proyectos previos durante un tiempo, pero no en la forma real de TDD y con una buena cobertura de código. Siempre había sido una idea tardía. Sin embargo, siento que tengo una buena comprensión de eso.Infraestructura requerida para TDD?

También estoy tratando de entrenar al resto del equipo en TDD y pruebas unitarias para que podamos crecer juntos y comenzar a avanzar haciendo pruebas unitarias en todas nuestras aplicaciones, y eventualmente progresar a hacer un TDD completo con compilaciones automatizadas & integración continua. Publiqué a thread here con respecto a mi plan de ataque/agenda de entrenamiento para comentarios & critisism.

Una de las respuestas (de hecho, la más votada) sugirió que primero configurara la infraestructura antes de continuar con la capacitación. Desafortunadamente no tengo ninguna exposición a esto, y buscar en Google sobre los temas es difícil porque las páginas de CruiseControl.NET/nAnt/etc no explican realmente el 'por qué' deberíamos configurar esto y el 'cómo' se conecta todo a tu padre.

Somos una pequeña tienda (unos 10 desarrolladores) y utilizamos casi exclusivamente tecnologías de microsoft y hacemos nuestro desarrollo en VB.NET. Estamos buscando eventualmente comenzar a usar C#, pero eso es para otro momento. He estado usando el proyecto MSTest que viene con VS2008 para las pruebas de mi unidad, y he estado construyendo mis aplicaciones usando Visual Studio y desplegando proyectos de instalación de MSI ... También (desafortunadamente) usamos VSS para nuestro control de calidad: pero eso también está en la tabla de cortar y realmente me gustaría deshacerme de él y usar la subversión.

Sé que necesito usar CruiseControl.NET para CI y nAnt o MSBuild para compilar las aplicaciones. Y probablemente necesite un servidor de compilación para ejecutar todas estas compilaciones. Pero simplemente no puedo encontrar nada que 'conecte' los puntos y explica cómo interactúan entre sí, qué debería estar en su servidor de compilación, cuándo debe compilar con su servidor de compilación (es solo para compilaciones de despliegue, o incluso cuando solo desea compilar la aplicación que está desarrollando después de hacer un pequeño cambio, en su entorno local?). También estoy planeando eliminar MSTest ya que he encontrado que tiene errores y usaré nUnit en su lugar.

¿Alguien puede iluminar este vacío que tengo de 'saber cómo hacer TDD' a 'establecer la infraestructura adecuada para que todo el equipo pueda hacerlo y trabajar juntos'? Entiendo lo que es la integración continua, pero una vez más, no estoy seguro de cómo debe configurarse un servidor de compilación y cómo se conecta con todo, y por qué necesitamos uno (por ejemplo, el tono para la administración).

muchas gracias por su tiempo.

¿Qué porción de finalbuilder necesito? Parece que hay cierta superposición con el constructor final y la teamcity. El servidor de Finalbuilder parece ser un servidor de CI, así que supongo que no lo necesito. FinalBuilder parece ser un servidor de compilación, pero creo que TeamCity también es un servidor de compilación ... Y Automise parece ser una herramienta de automatización visual de Windows, como algún tipo de plataforma de desarrollo para aplicaciones de winforms ...

_I también no veo soporte para el constructor final en The Team City Supported Apps Diagram: _

+1

Creo que el siguiente enlace contiene un conjunto bastante exhaustivo de información sobre este tema: http://martinfowler.com/articles/continuousIntegration.html – Tomas

Respuesta

5

Eche un vistazo a un seminario que hice hace unas semanas - How To Start Unit Testing Successfully. En ese webinar, he hablado sobre las mejores prácticas de pruebas de equipos y unidades, y estaba dirigido a desarrolladores como usted que desean introducir pruebas unitarias en su organización.

primer orden de negocio que desea poner un proceso de CI (integración continua) en su lugar y para eso se necesitará tres herramientas:

  1. control Fuente
  2. servidor de compilación
  3. cliente Construir/secuencia de comandos

Espero que ya tenga algún tipo de control de origen en su lugar, así que hablemos de los otros dos.

Servidor de generación de - comprueba el control de origen y cuando se cambia (o alguna otra condición reunió) se ejecuta un script de construcción de algún cliente (o misma máquina) hay varios servidor de compilación disponibles recomiendo de TeamCity JetBrain que es fácil de instalar y uso (gran interfaz web) y es gratis para hasta 20 desarrolladores (ese eres tú).

Script de compilación - en su cliente de compilación desea ejecutar un script de compilación que genere su solución y ejecute las pruebas unitarias. TeamCity tiene algunas capacidades básicas de prueba de compilación &, pero para opciones más avanzadas (instalador de compilación, documentación, etc.) necesitará un script runner en el trabajo que use FinalBuilder; no es gratuito, pero tiene muy buen editor. Si busca una alternativa gratuita, eche un vistazo a ANT o NANT, pero prepárese para editar una gran cantidad de XML.

Otras herramientas - Debido a que una parte importante de la unidad de pruebas con éxito es lo fácil que es escribir y ejecutar pruebas en las máquinas de los desarrolladores le sugiero que consulte si hay mejores del IDE o herramientas externas que ayuden a los desarrolladores a escribir & ejecutar sus pruebas unitarias.

+1

+1 para TeamCity. Comenzamos con CruiseControl.NET y cambiamos a TeamCity porque era mucho más fácil de administrar. Los scripts de NAnt son bastante fáciles de editar, pero no es necesario que haga mucho con TeamCity. – TrueWill

+0

Muchas gracias por la información. Edité mi publicación original para señalar que utilizamos VSS. Aunque odio VSS =). Espero obtener la configuración de subversión para poder finalmente deshacernos de ese buggy VSS. Sin embargo, tengo una pregunta: ¿utiliza su servidor de compilación para compilar sus propias compilaciones locales a medida que se desarrolla? ¿O es solo para las compilaciones de implementación? – dferraro

+1

Ejecuto el script de compilación en mi máquina local, pero generalmente VS es suficiente para crear y probar mi proyecto –