Pregunta

Esto sin duda supone que la unidad de pruebas es una buena cosa.Nuestros proyectos tienen un cierto nivel de unidad de prueba, pero es inconsistente en el mejor.

¿Cuáles son las maneras convincentes de que usted ha utilizado o ha tenido utilizado con usted para convencer a todos de que formalizó la unidad de pruebas es una buena cosa, y que lo que es necesario es, en realidad, en el mejor interés de la 'largeish' proyectos en los que trabajamos.Yo no soy un desarrollador, pero estoy en el Aseguramiento de la Calidad y que les gustaría mejorar la calidad de los trabajos entregados para asegurarse de que está listo para la prueba.

Por formalizada la unidad de pruebas, simplemente estoy hablando de

  • Identificación de la Unidad de Pruebas escritas
  • La identificación de los datos de prueba (o describir)
  • La escritura de estas pruebas
  • El seguimiento de estas pruebas (y re-uso según sea necesario)
  • Divulgar los resultados
¿Fue útil?

Solución 13

Así, dos años después de que hice esta pregunta, me parece que una respuesta inesperada fue que al pasar a un nuevo SDLC era lo que se necesitaba.Hace cinco años, hemos establecido nuestra primera oficial de SDLC.Mejora nuestra situación, pero dejó de lado algunas cosas importantes, tales como la automatización.Ahora estamos en el proceso de establecimiento de una nueva SDLC (en virtud de la nueva gestión) donde uno de los inquilinos es la automatización.No sólo las pruebas automatizadas, pero automatizadas pruebas funcionales.

Supongo que la lección es que yo estaba pensando demasiado pequeño.Si usted va a cambiar la forma de crear software, ir "a todo cerdo' y hacer un cambio drástico en lugar de proponer un cambio incremental si usted no está acostumbrado a eso.

Otros consejos

Una muy convincente manera es hacer formalizado unidad de prueba a ti mismo, independientemente de lo que su equipo/empresa.Esto podría tomar algún esfuerzo adicional de su lado, especialmente si usted no tiene experiencia con este tipo de prácticas.

Cuando usted puede, a continuación, mostrar su código es mejor y son más productivos que sus compañeros desarrolladores, ellos van a querer saber por qué.Luego alimentar a su favorito de la unidad de métodos de prueba.

Una vez que hayas convencido a sus compañeros desarrolladores, convencer a la gestión juntos.

Yo uso Maven con el Segura y Cobertura plugins para todos mis construye.La prueba real de los casos se crean con JUnit, DbUnit y EasyMock.

La Identificación De La Unidad De Pruebas Intento seguir el Desarrollo dirigido por tests, pero para ser honesto, yo normalmente que para el puñado de los casos de prueba y, a continuación, volver y crear pruebas para el borde y, a excepción de los casos más adelante.

La Identificación De Los Datos De Prueba DbUnit es ideal para la carga de datos de prueba para las pruebas unitarias.

Escribir Casos De Prueba Puedo usar JUnit para crear los casos de prueba.Trato de escribir de auto documentación de casos de prueba, pero el uso de Javadocs para comentar algo que no es obvio.

El Seguimiento Y Divulgar Los Resultados Puedo integrar la unidad de pruebas en mi Maven build ciclo mediante el Infalible plugin y yo uso la Corbertura plugin para medir la cobertura alcanzada por dichas pruebas.Yo siempre generar y publicar un sitio web, incluyendo el Infalible y Cobertura de los informes como parte de mi día a construir para que pueda ver lo pruebas fallidas/pasado.

El evento, en el que me convenció fue cuando nos las arreglamos para regresar un error tres veces, en tres versiones.Una vez que me di cuenta de lo mucho más productiva que yo era como un programador cuando yo no estaba constantemente la fijación de trivial errores después de que ellos se habían ido para el cliente, y yo podría haber una cálida difusa sensación de que los colegas de código hacen lo que decía, me convirtió.

De vuelta en el día que me hice Cobol desarrollo en Mainframes hicimos este religiosamente en la que varias empresas he trabajado en y fue aceptado como la manera en que hiciste las cosas, porque el entorno la hacen cumplir.Creo que fue una muy esquema típico para la época, y tal vez algunas de las razones podría ser aplicable a usted:-

Como la mayoría de los entornos de mainframe teníamos tres reinos, desarrollo, control de Calidad y Producción.Los programadores desarrollado en el desarrollo y la unidad que probamos allí, y una vez que se firmó y se feliz que la unidad se ha migrado a la garantía de calidad de medio ambiente (con la prueba y los resultados docs), donde se sistema probado por el dedicado QA personal.El desarrollo de la GC, la migración es un paso formal que sucedió durante la noche.Una vez QA ed el código se ha migrado a la Producción - y hemos tenido muy pocos errores.

La motivación para conseguir la unidad de las pruebas de hecho y de derecho de que si usted no lo hizo y se encontró un bug de garantía de la calidad el personal era obvio que no había hecho el trabajo.Por consiguiente, su reputación depende de la forma en riguroso que fueron.Por supuesto, la mayoría de la gente acabaría con el ocasional error, pero los codificadores que produce sólido probado el código todo el tiempo pronto consiguió una estrella de la reputación y los que producen buggy código fue notado demasiado.El empuje sería siempre a tu juego, y, en consecuencia, la cultura producida fue uno de los que la empujó hacia la libre de errores de código entregado por primera vez.

La extracción de los puntos pertinentes -

  1. Coder reputación atado con la entrega de libre de errores probado el código
  2. Importante sobrecarga asociada con el movimiento de las pruebas unitarias de código para el siguiente nivel, así que la motivación no se repita esto y hacerlo bien la primera vez.
  3. Sistema de pruebas realizadas por personas diferentes a las pruebas unitarias - idealmente con un equipo diferente.

Estoy seguro de que su entorno se va a diferir, pero los directores podrían ser traducible.

A veces el ejemplo es la mejor manera.También me parece que recordarle a la gente que ciertas cosas simplemente no suceden cuando las cosas están bajo prueba.La próxima vez que alguien le pide que escriba algo, hazlo con pruebas de independencia.Finalmente sus compañeros va a ser celoso de la facilidad con la que puede cambiar tu código y saber que todavía funciona.

Como para la gestión que usted necesita para enfatizar cuánto tiempo se desperdicia debido a la explosión nuclear que se produce cuando se necesita hacer un cambio a base de X que no está bajo prueba.

Muchos desarrolladores no darse cuenta de lo mucho que refactorizar sin garantizar que se mantiene el comportamiento de todo el sistema.Para mí este es el mayor beneficio a las pruebas unitarias y TDD en mi opinión.

  1. Requisitos de Software de cambio
  2. Los cambios de Software para satisfacer las necesidades

La única certeza es el cambio.El cambio de código que no está bajo prueba requiere que el desarrollador de ser conscientes de cada comportamiento efecto secundario posible.La realidad es que los programadores que piensan que se puede leer en cada permutación, lo hace por un dolor de replanteo proceso de ensayo y error hasta que no se rompe, obviamente.En este punto, el check-in.

La pragmática programador reconoce que él/ella no es perfecta y todo el saber, y que los exámenes son como una red de seguridad que les permite caminar por la refactorización en la cuerda floja de forma rápida y segura.

En cuanto a la prueba de escritura en greenfield código, tendría que abogan tanto como sea posible.Pasar el tiempo de la definición de la comportamientos que usted desea fuera de su sistema y pruebas de escritura inicialmente para expresar su más alto nivel de las construcciones.La unidad de pruebas puede venir en forma de pensamientos cristalizar.

Espero que esto ayude.

La educación y/o certificación.

Dar a los miembros de su equipo un entrenamiento formal en el campo de pruebas - tal vez con el examen de certificación (dependiendo de los miembros de su equipo y de su propia actitud hacia la certificación).Voy a tomar la prueba a un nivel más alto de esa manera, y los miembros de su equipo será más probable que se tome una actitud profesional hacia las pruebas.

Hay una gran diferencia entre convincente y que requieren.

Si usted encuentra una manera de convencer a sus colegas de escribir - gran.Sin embargo, si usted cree que algunos formalizado reglas y les obligan a escribir pruebas unitarias, van a encontrar una manera de superar esto.Como resultado, se obtendrá un montón de pruebas de unidad que no valen nada:Habrá prueba de unidad para cada clase disponibles y que pondrá a prueba los setters y getters.

Piense dos veces antes de la creación y aplicación de normas.Los desarrolladores son buenos en la superación de ellos.

La primera vez alrededor de usted sólo tiene que ir por delante y escribir y mostrar a la gente que vale la pena.He encontrado en tres proyectos que es la única manera de convencer a la gente.Algunas personas que no código (por ejemplo,junior jefes de proyecto) no será capaz de ver el valor hasta que mirando de ellos a la derecha en la cara.

En mi equipo de software, tenemos la tendencia a escribir un pequeño negocio en el caso de que sobre estos temas y presentarlos a la gerencia con el fin de tener el tiempo disponible para crear y pruebas en pista.Nos explican que el tiempo necesario para probar está bien hecho para cuando la hora de la verdad viene y todo lo que está en la línea.Hemos creado también un Hudson servidor de generación de centralizar el seguimiento de la unidad de pruebas.Esto hace que sea mucho más fácil para los desarrolladores para seguir la pista de la falta de pruebas y a descubrir problemas recurrentes.

Recuérdele a su equipo o a otros desarrolladores que ellos son profesionales, no aficionados.Trabajó para mí!

También, es un estándar de la industria en estos días.Sin experiencia de prueba de unidad, que son menos deseables y menos valiosos, como los empleados para posibles futuros empleadores.

Como líder del equipo, es mi responsabilidad asegurarme de que mis programadores están haciendo pruebas de unidad en todos los módulos de los que ellos trabajan.Supongo que en este punto, no es siquiera una cuestión de cómo convencer a ellos, es necesario.No es que a veces, no en largish proyectos, todo el tiempo.La unidad de pruebas es la primera línea de defensa en contra de poner algo en la producción que tendrá que mantener.Si algo se ponga en producción que no ha sido completamente unidad y el sistema de la prueba, entonces va a volver a morder.Supongo que una de las políticas que tenemos aquí para apoyar esto es que si sopla en la producción, o las causas de los problemas, el programador responsable de la codificación y las pruebas de que el módulo será la que tiene que cuidar de los problemas, hacer la limpieza, etc.Que solo es un muy buen motivador.
La otra es que se trata de orgullo.Yo trabajo en una tienda de cerca de 75 codificadores, a pesar de que es grande por algunos estándares, es realmente lo suficientemente pequeño como para que todos sepamos el uno del otro.También es lo suficientemente pequeño que sabemos lo que el otro es trabajando, y cuando lo hace mover a la producción, somos conscientes de que cualquier finaliza de forma anómala, fallas, etc.Si usted tiene cuidado, hacer la unidad y pruebas del sistema, las posibilidades de mover algo de la producción sin causar errores aumenta considerablemente.Puede tomar una hora o dos de mover algo de la producción y no se dan cuenta de ello, pero hay grandes recompensas que intervienen en no meter la pata.Es muy agradable de escuchar felicitaciones en el pasillo cuando se mueve un proyecto y no el tornillo de seguridad.

Escribir un montón de ellos y demostrar que la unidad de pruebas ha mejorado su productividad y la calidad de su código.Sin algún tipo de prueba, a veces la gente no cree que vale la pena.

Usted podría tomar un poco de inspiración de una iniciativa en Google.Su prueba de equipo comenzó a poner ejemplos, consejos y beneficios en el interior de las cabinas sanitarias para elevar el perfil de los méritos de la automatización de pruebas.

https://testing.googleblog.com/2007/01/introducing-testing-on-toilet.html

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