unitarias tutorial pruebas integracion hacer español como unit-testing

unit testing - tutorial - ¿Qué debo hacer cuando un compañero de trabajo rechaza mis compromisos porque contienen pruebas de unidad?



pruebas unitarias angular 6 (17)

Me he mudado de un equipo a otro en la misma compañía. En el equipo antiguo (hardcore c ++) hicimos muchas pruebas unitarias. En mi nuevo equipo (también c ++) hacen pruebas funcionales en su lugar. Durante la revisión rechazan mi código debido a pruebas unitarias. La mayoría del equipo está interesado en aprender algo nuevo, pero no en el tipo que es VIP y tiene un enfoque de desarrollador legado. Él tiene que aceptar el código antes de cometer. Se resiste al cambio. ¿Consejo?

// actualización: informaré en este tema qué sucedió con mi búsqueda pero, por favor, comprenda que es una gran empresa, lleva tiempo Solo para aclarar, las pruebas que hago están bien y siempre funcionaron en otros equipos. No soy nuevo en esto. De vez en cuando necesito frenar las dependencias porque codificarlo es simple. En C ++ a veces hay que hacerlo. Eso puede introducir cambios en el código de producción solo por la prueba. Creo que tener una prueba de unidad justifica este tipo de cambios simples. Es mejor tenerlo que no tenerlo.

// update2: Gracias por un montón de buenos consejos, claramente no hay ninguna bala de plata aquí :( La mayoría del equipo está convencido, pero 2 desarrolladores senior (15y +) aún se oponen. Daré una breve charla sobre esto que el resto de mi equipo Apóyame, así que espero que esos muchachos estén de acuerdo :) Para relajarme un poco, comencé a aprender Ruby


Acabas de encontrar el problema de software más difícil de todos: las personas. Aunque vacilo en adivinar a su jefe sin un poco más de contexto (por ejemplo, ¿es esto realmente una imagen de prueba completa?), Un rechazo absoluto de su código solo porque incluyó pruebas de unidad es una práctica cuestionable en el mejor de los casos.

La ruta más sensata es tener una conversación personal con esta persona para que pueda comprender su posición. Usted describe a su jefe como resistente al cambio, pero generalmente las personas no son tan blancas o negras. Por ejemplo, tal vez considera que el volumen de código que está enviando es arriesgado dado su nuevo estado en el proyecto, sin comprender que las pruebas de su unidad le permiten escribir más código porque puede tener más confianza en él. Así que le daría el beneficio de la duda y tendría un corazón a corazón primero.

Aquí hay algunas preguntas para hacer durante su conversación:

  • ¿Qué piensas de las pruebas unitarias? ¿Cómo encajan en nuestra estrategia de prueba general?

  • ¿Cuáles son sus problemas con las pruebas de unidad que he estado enviando? ¿Son deficientes o carecen de alguna manera? ¿Está de acuerdo con las pruebas de la unidad en sí, pero preferiría que mi código estuviera organizado de manera diferente?

  • ¿Por qué todo nuestro código debe ser probado a nivel funcional?

  • ¿Todas las pruebas de unidad son malas o inapropiadas para nuestro proyecto?

  • ¿Cómo planea descubrir problemas asociados con entradas específicas a métodos cuando esas condiciones son más complejas de replicar en niveles de interfaz más altos?

  • Si tiene una objeción específica a la verificación de las pruebas unitarias, ¿hay alguna objeción al uso local de las pruebas unitarias para que al menos pueda verificar mi propio código?

Si siente que ahora entiende su posición y es insostenible con la forma en que desea escribir software, tiene una pregunta diferente que debe hacerse: ¿Disfruta del trabajo lo suficiente como para permanecer en el equipo a pesar de las prácticas cuestionables profesionalmente? ¿Es hora de empezar a buscar en otro lado?

A la inversa, si sientes que ahora entiendes por qué existe la regla y crees que es razonable a la luz del contexto general del proyecto, ¡entonces huzzah! Evitó una posible crisis al manejarse profesionalmente, puede quedarse con su nuevo equipo y volver a la parte divertida: el desarrollo de software.

Edit: Realmente no puedo estar de acuerdo con algunas de las publicaciones en esta pregunta que le dicen al OP que se adapte al equipo. La estandarización de las prácticas solo es buena cuando el equipo participa en la práctica. En lugar de decirle al OP que lo absorba y se ponga en línea, deberíamos alentarlo a que comprenda por qué se aplica la regla, para que pueda evaluar si tiene sentido por sus propios méritos.

El gerente también tiene algunas explicaciones para que pueda ayudar al OP a ver las cosas a su manera. Claro, no todos estarán de acuerdo con los gerentes todo el tiempo. Dirigí proyectos o equipos, y tomé mi parte de decisiones que no podían complacer a todos, pero siempre intenté hacerlos con la participación de todos, para poder llegar a la mejor decisión. En mi opinión, imponer un conjunto de "estándares" mediante un mandato de gestión sin tener en cuenta el impacto para el equipo e ignorar las sugerencias alternativas lo convierte en un mal administrador, no en uno bueno.


Almacene las pruebas unitarias en un control de versión paralelo y solo envíe el código al sistema central. Él revisará su código sin pruebas unitarias y usted todavía podrá beneficiarse de ellas ...

Además, sugiero que use uno de los controles de versión distribuidos, juegue con un juguete nuevo y divertido, y cuando uno de sus compañeros de trabajo quiera probar, puede abrazar y extender su conjunto de pruebas fácilmente.

Editar Para aclarar los siguientes comentarios:

Estoy sugiriendo que establezca un repositorio de código fuente local para sus pruebas de unidad. El código en sí todavía se sincronizaría con el repositorio administrado (a través del proceso de envío normal, simplemente no se envían las pruebas junto con el código).

También podría mantener las pruebas unitarias que cree que son útiles en su disco duro y no cambiaría nada, de la misma manera que cualquier desarrollador que conozco tiene algunos archivos de "herramientas" para varios propósitos.

La idea es que trabajando con pruebas unitarias, puede esperar que su índice de errores sea más bajo que los demás. Puede ayudar cuando se discute sobre este tipo de cosas con su líder tecnológico. Mientras complete el trabajo asignado a tiempo, no veo por qué no podría trabajar como le parece.


En pocos minutos deberías recibir algunas respuestas que te sean favorables. Mostrar este hilo a esa persona que está resistiendo el código. :)


Esto realmente no responde a su pregunta, pero no mencionó si está recibiendo cobertura de código.

Las pruebas funcionales y la cobertura del código pueden ser efectivas para demostrar la corrección del código y pueden haber sido populares cuando su gerente subía de rango.

El problema principal es que requiere mucho esfuerzo y no es muy práctico cuando su código aún está en proceso de cambio.


Haga que el líder de su equipo lea este documento (pdf), (que puede encontrar cuidadosamente digerido en esta publicación del blog ), y vea si cambia de opinión.

Ahora, un estudio no prueba nada, pero hay un párrafo para llevar muy intrigante:

Encontramos que, en promedio, los estudiantes que realizaron las pruebas primero escribieron más pruebas y, a su vez, los estudiantes que escribieron más pruebas tendieron a ser más productivos. También observamos que la calidad mínima aumentó linealmente con el número de pruebas de programador, independientemente de la estrategia de desarrollo empleada.

En otras palabras, mejores pruebas, mejor código. Período. (Esto cuadra con mi experiencia y la experiencia de muchos otros desarrolladores con los que he trabajado).

Si no puede lograr que este hombre cambie de opinión, busque trabajo en otra parte: ha terminado en uno de esos equipos de perdedores en los que los responsables son impermeables para aprender algo nuevo. No está bien.

EDITAR: hay docenas de estudios que muestran la efectividad de TDD. Pruebe here y here para más.


Interesante que el código fue rechazado por pruebas unitarias. ¿Los ha dejado fuera del código que envió para su aceptación, habría sido aceptado? Si ese es el caso, solo sigue haciendo pruebas de unidad y sigue produciendo el código de producción que pasa esas pruebas de unidad. Si sus pruebas son buenas, solo mejorarán el código de producción que entregue. La "sobrecarga" de escribir las pruebas unitarias no es mucho, ciertamente cuando se compara con la búsqueda de errores en una etapa posterior.

Dicho esto, no puedes entrar en un nuevo grupo y esperar cambiar la cultura del grupo de la noche a la mañana, esto simplemente no sucede. Mejor que te mantengas al día con tus buenas prácticas y envíes el código que pasa tus pruebas. Con el tiempo, su compañero de trabajo puede cambiar o las reglas pueden cambiar. Las personas se resisten a cambiar hasta que ven los beneficios.

Si su código no cumple con alguna otra norma establecida por el grupo, deberá abordar eso, por supuesto.


Las pruebas unitarias tienen costos, no solo beneficios. De http://www.joelonsoftware.com/items/2009/09/23.html :

Zawinski no hizo muchas pruebas unitarias. Ellos “suenan muy bien en principio. Dado un ritmo de desarrollo pausado, ese es ciertamente el camino a seguir. Pero cuando estás mirando, ''tenemos que ir de cero a terminar en seis semanas'', bueno, no puedo hacer eso a menos que elimine algo. Y lo que voy a cortar es lo que no es absolutamente crítico. Y las pruebas unitarias no son críticas. Si no hay una prueba de unidad, el cliente no se va a quejar de eso ".

De: http://www.codinghorror.com/blog/2005/04/good-test-bad-test.html

Mi principal problema en este momento con las pruebas unitarias es que cuando cambio un diseño obtengo una pila de pruebas fallidas. Esto significa que voy a escribir menos pruebas o hacer menos cambios grandes en el diseño. Ambos de los cuales son cosas malas.


Lo más importante en un equipo de desarrollo es atenerse a los estándares, incluso si no está de acuerdo con los estándares. Si cada uno hace lo suyo, entonces no tiene sentido tener estándares.

Puede mantener las pruebas unitarias para su propia satisfacción / confianza personal. Tal vez un día pueda demostrar que su enfoque ha impedido que un error vuelva a aparecer o haya beneficiado al equipo de alguna manera y luego puede ser más fácil hacer llegar su punto de vista.

Un día serás el tipo que establece los estándares y luego algunas personas no estarán de acuerdo contigo. Entonces les puedes contar esta historia.

Descargo de responsabilidad: uso pruebas de unidad cuando sea apropiado y también se alentará a cualquier persona que trabaje para mí.


Lo siento pero tendrás que adaptarte al equipo. Tendrás que hablarles a menudo sobre la prueba de unidad, no puedes convencerlos en un día.

Mi jefe no sabía nada acerca de oop y aún estaba programando en c #, ahora lo convencí de que usara el constructor, tal vez en unos pocos meses realice el método / campo privado en lugar del método estático.

adaptarse a ti mismo


Me parece que se niega a verificar las fuentes que contienen código para realizar pruebas unitarias, ¿verdad?

La solución simple para esto es no intentar verificar el código de prueba de su unidad. Aún puede escribirlo y realizar pruebas unitarias, pero manténgalo separado. Si desea que la revisión sea controlada, mantenga su propio repositorio separado para sus pruebas de unidad.

Así es como lo he hecho la mayor parte de mi carrera de 20 años. Creo que solo he trabajado en un programa que realizaba un seguimiento oficial de las pruebas unitarias como lo hizo su antiguo grupo.


Por otro lado, el revisor puede rechazar las pruebas unitarias de razón:

  • Probablemente, las reglas se aplican a todo el código en el proyecto
  • Esto significa que las pruebas unitarias significan mucho más código para revisar
  • Las pruebas unitarias no se pueden escribir de manera que cumplan con los estándares generales de revisión / codificación

Especialmente en C ++, imagino que sus pruebas se mezclan con el código principal de la aplicación, ya que no existe una configuración de prueba de unidad en el proyecto. En cuyo caso podría hacer que el código sea más difícil de seguir.


Renombra tus Pruebas Unitarias "en pruebas funcionales en cámara".

EDITAR: de manera más práctica, si no puede superar el elemento humano, puede mantener sus pruebas de unidad en un pequeño repositorio paralelo privado. Desempaquételos cuando los desarrolle o mantenga, ejecútelos, actualícelos y luego guárdelos hasta la próxima vez.


Si el equipo no tiene experiencia en el mantenimiento de una unidad de pruebas de la unidad, entonces tienen un problema, pero difícilmente podrá resolverlo si él es más importante en la empresa que usted.


Sigue escribiendo esas pruebas, pero evita escribir pruebas triviales. Tal vez con una prueba trivial crees que puedes educar a otros, pero pueden verlo como una prueba de que es una pérdida de tiempo. Intente corregir errores escribiendo una prueba para reproducir el problema y haga una presentación sobre lo que hizo al equipo. Trate de no vender pruebas de unidad como la nueva religión, pero trate de explicar por qué esta es la forma en que trabaja. Gasta tu energía en convencer a los otros miembros del equipo primero.

En algún momento, notarán que puedes realizar grandes cambios en la implementación de tu código sin retroceder.


Soy un bastardo perezoso que no escribe en ningún lugar lo suficientemente cerca de las pruebas unitarias, pero no soy lo suficientemente idiota como para rechazar las pruebas unitarias cuando mis muchachos hacen el esfuerzo de escribirlas. Puedes intentar trabajar dentro de los confines de la administración estúpida, pero a menos que haya alguna esperanza de que este tipo desaparezca pronto de la escena, te sugiero que encuentres otro equipo.


Uno de los buenos consejos que recibí durante una conferencia universitaria sobre la calidad del software:

Si te metes en un equipo / compañía donde realmente no saben cómo hacer software. Trate de ayudarlos a mejorar (acepte que no hay una buena manera, pero no intentarlo no es la manera). Cree buenos argumentos (por ejemplo: ¿mi código tiene menos errores y le lleva la misma cantidad de tiempo escribir?). Si no puede cambiar la compañía / equipo: No se quede, comience a buscar un nuevo trabajo, con esta compañía u otra.


Voy a proponer una versión menos dramática de la respuesta de John Feminella.

Habla con la persona en cuestión pero no hagas una gran canción y baila sobre ella. Ciertamente, no digas "por qué no te gusta que haga algo que mejora mi código", esto es un desafío para su conocimiento y, dado que muchos desarrolladores son bastante sensibles a las críticas implícitas, puede que te diga que te pierdas.

En su lugar, primero aclararía "¿solo falló la revisión porque incluí este código de prueba?" Luego diga "Creo que mi productividad es mayor cuando escribo las pruebas, ¿cuál es el problema que tengo al revisarlas?"