Mi profesor recomienda realizar pruebas unitarias cada vez que creo algo. ¿Es esta práctica realmente recomendada?

Diría que para proyectos más grandes / complejos es muy recomendable. El beneficio de escribir pruebas unitarias queda muy claro cuando más de un desarrollador (o puede ser solo uno) está trabajando en un módulo diferente del proyecto, con cierta dependencia de otro módulo.

En tales casos, incluso después de algunos días, algo cambia en el módulo (que interrumpirá la funcionalidad de otros módulos) al que hace referencia algunos otros submódulos en el proyecto, lo más probable es que ese módulo solo pruebe sus cambios y potencialmente introducir código de ruptura en QA / UAT o en el peor de los casos.

Incluso cuando se trabaja dentro del mismo módulo, se aplica el mismo concepto, ya que no todo lo que desarrolla un desarrollador, él / ella recordará con cada corrección de errores o la nueva funcionalidad que se agregue y, por lo tanto, es probable que no verifique el estado de trabajo del código existente (después de todo, cada uno debe mostrar progreso dentro de algún tiempo 🙂).

Por lo tanto, con las pruebas unitarias escritas para cada parte de su proyecto, cada desarrollador tiene una muy buena oportunidad (según la cobertura del código en las pruebas unitarias) para impulsar el código sin interrupciones hacia arriba.

Si y no.

Si desea escribir un código SOLIDO limpio, debe realizar una prueba unitaria. Hay un debate sobre qué tan lejos debe hacer la Prueba de Unidad. Probé la interfaz pública y, a veces, los métodos protegidos si lo hace desde entonces. Es un gran hábito comenzar temprano.

¿Por qué querría hacer una prueba unitaria? Le ayudará a escribir código que sea fácil de probar. El efecto secundario del código que es fácil de probar suele ser el código que tiene menos dependencias. Las dependencias hacen que su código no sea reutilizable. Unit Test debería hacerte pensar en todas las ramas de tu código y en cómo probarlas. Codifique que las ramas se vuelven más espaguetis y probablemente esté haciendo demasiado. Las luces deberían estar encendidas y usted debería ver la Sinergia del Código Bueno y la Prueba de Unidad. Puede escribir un buen código sin prueba unitaria y puede escribir un código malo con una prueba unitaria. Pero cuando comienza a escribir Good Code, Unit Test hará que el código sea aún mejor.

Prueba de unidad no es una bala de plata. No te muestran los errores en tu código. Simplemente le muestran qué está haciendo su código con los parámetros que les pasa. Aunque pueden ayudar a hacer un error más obvio que puede estar oculto en la lógica. Tenga en cuenta que si escribe código que tiene efectos secundarios o funciones que le dan valores diferentes con los mismos parámetros, la Prueba de unidad no lo ayudará. Unit Test son solo otra herramienta en su arsenal, como tener un depurador.

Cuando este concepto de unidad de escritura prueba primero y luego codifica su solución , era un desarrollador experimentado y el ingeniero de software que me sugirió esto estaba seguro de que estaba hablando en broma.

Por contradictorio que parezca, en realidad es la mejor práctica. Dejame explicar:

Este es un ejemplo demasiado simplificado, pero puede ayudarlo. Necesita crear una clase de matemáticas que realice funciones matemáticas básicas:

PHP se usa en este ejemplo debido a la facilidad de uso. Su primera prueba unitaria es crear una función que agrega dos números y devuelve el resultado. Primero crea una función testAdd y determina las entradas. El tipo de entradas y el resultado esperado de la implementación de la función. Luego, crea la función add () real con una mejor comprensión de los límites que deben tener las entradas (parámetros) y algunos resultados esperados.

Cuando cree su función de prueba primero, lo guiará para el diseño de la función real. PHP en realidad tiene un marco de prueba de unidad popular llamado PHPUnit (este ejemplo no usa esto) porque la intención es demostrar por qué la creación de pruebas unitarias primero realmente te ayuda a escribir código más robusto y generalmente puedes tomar el código de tus pruebas para hacer tu métodos reales

// Solo funciona en la versión 7.0+
clase TestExample
{
función pública testAdd ($ num1, $ num2)
{
afirmar (es_numeric ($ num1));
afirmar (es_numeric ($ num2));

// Prueba de implementación
$ resultado = $ this-> add ($ num1, $ num2);

afirmar (isset ($ resultado)); # El resultado debe existir y no ser nulo.
afirmar (es_numeric ($ resultado));
}

// Definimos algunas expectativas de la función add para que sepamos mejor cómo crear esta función:
función pública add (float $ x, float $ y): float
{
devolver $ x + $ y;
}
}

$ testRunner = nuevo TestExample ();
$ testRunner-> testAdd (12, 13);
$ testRunner-> testAdd (-2, 3);
$ testRunner-> testAdd (-2, ‘ade’); # fallará

Sí.

Las empresas tienen sistemas completos y empleados dedicados al desarrollo de marcos de prueba. Por lo general, especialmente con la prevalencia de la metodología SCRUM, el código de las personas se envía a diferentes compilaciones. Como tal, es probable que los errores aparezcan más temprano que tarde (en el modelo tradicional, Cascada, los errores a menudo aparecen cuando fusiona el código de muchos ingenieros juntos. Esto evita que una compilación se envíe en la fecha prevista. Las pruebas frecuentes lo evitan).

Sí. De hecho, algunas personas escriben primero la prueba y luego el código real. Las pruebas unitarias son esenciales para asegurarse de que su nuevo código / función no rompa su código / función anterior.

Cuando contratamos en CloudBoost.io, nos aseguramos de que la persona que entrevistamos también escriba todas las pruebas relacionadas con la función / método que acaba de escribir y nunca introducimos nuestro código en el repositorio sin las pruebas.

Como escritor técnico y programador, aprendí en la escuela que las pruebas de usabilidad deben hacerse. En la práctica, muchos no lo hacen y causa malos resultados muchas veces. Es la mejor práctica que se debe hacer para evitar problemas con la satisfacción del cliente.

Sí, y luego algunos: primero debe escribir las pruebas , antes de escribir su código real. La diferencia que esto crea en la usabilidad y calidad del código es bastante sorprendente.

More Interesting

Soy diseñador web (CSS / HTML) y quiero seguir igual. ¿Debo aprender JavaScript avanzado? Ya conozco JS y jQuery básicos.

Si uso MEAN stack sin MongoDB y en cambio uso MySQL, ¿habrá algún problema de rendimiento?

¿Cuál es una manera de crear un sitio web como MyFridgeFood o Supercook usando WordPress?

Tengo una buena comprensión de HTML5, CSS3, JS y jQuery. ¿Cuáles son algunos de los mejores sitios donde puedo practicar ejercicios interactivos para estos + Bootstrap?

Quiero convertir mi sitio web en una tienda para otros. ¿Cuál es el mejor script que puedo usar?

Cómo hacer un sitio web usando HTML y CSS

He tenido una idea para un sitio web durante más de 5 años. Me faltan las habilidades para crearlo yo mismo. ¿Hay algún lugar donde pueda contratar un equipo para construirlo para mí?

Me gustaría desarrollar una aplicación móvil HTML + CSS + JS con un back-end RDBMS (MongoDB es menos adecuado, en este caso). ¿Qué marcos debo usar?

Tengo una agencia de personal y quiero un sitio web donde los empleadores puedan encontrar a sus mejores trabajadores. ¿Cuál es el mejor software para crear el sitio web?

Si dijera que MVC era contra-intuitivo, ¿cómo me convencerías de lo contrario?

Tengo una idea de inicio, pero estoy debatiendo si comenzar en la web o como una aplicación.

Mi restaurante está fallando y mi dependencia en la agregación de sitios web es muy alta. ¿Hay alguna solución para esto, porque quiero crear mis propios clientes leales?

¿Qué debo hacer después de crear un sitio web usando solo HTML y CSS?

Quiero participar en un concurso de aplicaciones web donde el tema es "aplicaciones para la vida laboral diaria". ¿En qué contexto debo interpretar esto y qué campos puedo abordar?

Estoy aprendiendo C pero quiero ser desarrollador web. ¿Qué debo aprender?