Esto responde por qué deberías estar haciendo pruebas unitarias.
Los 3 videos a continuación cubren las pruebas unitarias en javascript, pero los principios generales se aplican en la mayoría de los idiomas.
Pruebas de la unidad: los minutos ahora ahorrarán horas más tarde - Eric Mann - https://www.youtube.com/watch?v=_UmmaPe8Bzc
Prueba de unidad JS (muy buena) - https://www.youtube.com/watch?v=-IYqgx8JxlU
Escribir JavaScript comprobable: https://www.youtube.com/watch?v=OzjogCFO4Zo
Ahora solo estoy aprendiendo sobre el tema, por lo que es posible que no esté 100% correcto y hay más de lo que estoy describiendo aquí, pero mi comprensión básica de las pruebas unitarias es que escribes un código de prueba (que se mantiene separado de tu código principal) que llama a una función en su código principal con la entrada (argumentos) que requiere la función y luego el código verifica si recupera un valor de retorno válido. Si recupera un valor válido, el marco de prueba de la unidad que está utilizando para ejecutar las pruebas muestra una luz verde (todo bien) si el valor no es válido, obtiene una luz roja y luego puede solucionar el problema inmediatamente antes de libere el nuevo código a producción, sin probar es posible que no haya captado el error.
Entonces escribe pruebas para su código actual y crea el código para que pase la prueba. Meses después, usted u otra persona necesitan modificar la función en su código principal, porque antes ya había escrito el código de prueba para esa función, ahora se ejecuta nuevamente y la prueba puede fallar porque el codificador introdujo un error lógico en la función o devolvió algo por completo diferente de lo que se supone que devuelve esa función. Nuevamente, sin la prueba en su lugar, ese error puede ser difícil de rastrear, ya que posiblemente también pueda afectar a otro código y pasará desapercibido.
Además, el hecho de que tenga un programa de computadora que ejecute su código y lo pruebe en lugar de hacerlo manualmente en el navegador página por página ahorra tiempo (pruebas unitarias para javascript). Digamos que modifica una función que es utilizada por algún script en una página web y funciona muy bien para su nuevo propósito. Pero, digamos también por razones de argumentos, que hay otra función que tiene en otro lugar de su código que depende de esa función recién modificada para que funcione correctamente. Esta función dependiente ahora puede dejar de funcionar debido a los cambios que ha realizado en la primera función, sin embargo, sin las pruebas que se ejecutan automáticamente en su computadora, no notará que hay un problema con esa función hasta que realmente se ejecute y tú'
Para reiterar, tener pruebas que se ejecutan mientras se desarrolla su aplicación detectará este tipo de problemas a medida que codifica. Al no tener las pruebas en su lugar, tendría que revisar manualmente toda su aplicación e incluso entonces puede ser difícil detectar el error, ingenuamente lo envía a producción y después de un tiempo un usuario amable le envía un informe de error no será tan bueno como sus mensajes de error en un marco de prueba).
Es bastante confuso cuando escuchas por primera vez sobre el tema y piensas para ti mismo, ¿no estoy probando mi código? Y el código que ha escrito funciona como se supone que debe hacerlo, "¿por qué necesito otro marco?" ... Sí, ya está probando su código, pero una computadora es mejor para hacerlo. Solo tiene que escribir pruebas lo suficientemente buenas para una función / unidad de código una vez y el resto se encarga de usted por la poderosa CPU en lugar de tener que verificar manualmente que todo su código todavía funciona cuando realiza un cambio en tu codigo.
Además, no tiene que probar el código de la unidad si no lo desea, pero vale la pena a medida que su base de proyecto / código comienza a crecer a medida que aumentan las posibilidades de introducir errores.