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

¿Quiero hacer un proyecto académico de nivel M.tech en mecatrónica? ¿Algunas ideas?

Mi Ajax se ejecuta correctamente, los valores se pasan al otro JSP pero cuando intento mostrar el valor en un control en la página JSP, ¿muestra 'nulo'?

Soy principiante en Java. ¿Cómo puedo construir una aplicación basada en cliente-servidor?

¿Qué sitios web has creado?

Hice un excelente formulario de contacto. ¿Cómo hago (usando HTML y CSS), que cuando alguien presiona 'enviar', me envían el formulario completo por correo electrónico?

He construido un servidor a partir de una computadora portátil vieja y ahora tengo hambre de más. Quiero comprar un servidor físico para alojar efectivamente 2/3 servidores de alta potencia. ¿Dónde puedo comprar uno por alrededor de 350 USD?

Estoy creando una aplicación en Haskell que implica un poco de raspado web. ¿Debo construir la parte de raspado web en Haskell o en Python?

Me encanta instantdomainsearch.com. ¿Cuánto dinero y tiempo de desarrollo se necesitaría para crear una interfaz tan simplista en un mercado con un número limitado de productos (500-600) de varios proveedores?

Cómo vincular archivos PHP y SQL existentes para crear una página web

Soy nuevo en desarrollo web y acabo de aprender HTML, CSS y JS, pero de repente, cosas como Node.js, Require.js y Backbone.js se están acercando. ¿Qué son estos y por qué los necesitamos?

Cómo crear un complemento jQuery

Soy un principiante en diseño web. ¿Es w3schools.com un buen lugar para comenzar?

Cómo agregar un formulario de suscriptor a mi sitio web pero sin enviar un correo de confirmación a la identificación del suscriptor

Estoy desarrollando un sitio web de WordPress. El sitio alojará imágenes de casi 500 gb. ¿Cuál es la mejor estrategia?

Mi comprensión de cómo usar las API RESTful está jodida. ¿Qué tengo que hacer?