2012-06-12 9 views
5

Empecé a escribir una aplicación de JavaScript como un proyecto personal. Espero aprender y usar pruebas unitarias para este proyecto. No tengo mucha experiencia en escribir pruebas unitarias, pero he leído que Jasmine sería una buena biblioteca para ayudarme a lograr esto.Desarrollo de JavaScript: ¿cuándo debería comenzar a hacer pruebas unitarias?

Dicho esto, estaba un poco exageradamente celoso en mi actividad inicial de codificación. Tuve una idea y corrí con ella. Como tal, la estructura de mi aplicación era y sigue siendo no como OO como preferiría. Esto me ha llevado por el camino de refactores múltiples y grandes. Descubrí que la refactorización en un lenguaje débilmente tipado me deja especialmente propenso a la reentrada de errores.

El hecho de que tengo que volver atrás y solucionar los errores que he reintroducido me hace anhelar pruebas unitarias. Por el contrario, sin embargo, el hecho de que estoy reelaborando los cimientos de mi base de código tanto todavía me hace dudar. No quiero crear pruebas unitarias para mi proyecto solo para luego decidir que se necesita más reestructuración (lo cual depreciará mis pruebas más allá del punto de 'corregir un error').

¿Es esto una preocupación común? Siento que habrá un momento en el que mi "base" será lo suficientemente estable como para escribir pruebas para ello ... pero eso hace que las pruebas suenen mucho menos atractivas.

+2

Creo que esto pertenece a [programadores.se]. – zzzzBov

Respuesta

4

Consideraría tratar su código base actual como "experimental" o como un "prototipo", como en, algo que en su mayoría descartaría.

Si planea refaccionar su base de código, probablemente sería una buena idea presentar pruebas de unidad antes de refactorizar o para el código modificado.

Las ventajas de escribir pruebas para la base de código actual son bastante obvias: puede ejecutar la base de código refactorizada para verificar la funcionalidad. Probablemente necesites reestructurar tus pruebas también mientras estás refabricando, pero eso es normal.

Lo que no debe hacer mientras reescribe las pruebas es eliminarlas. Trate de mantener iguales todas las afirmaciones finales en cada una de sus pruebas, al mismo tiempo que reemplaza la forma en que la prueba funciona. De esta manera, debería poder realizar un seguimiento de lo que está probando mejor, y de que la nueva funcionalidad sigue haciendo el mismo trabajo.

Por supuesto, si escribió su código original en una forma no OO, puede ser difícil probarlo bien. En este caso, le sugiero que elija ya sea escribir pruebas de nivel superior (pruebas funcionales) para su código original, o escribir su código refactorizado utilizando un enfoque de tipo TDD.

Al usar pruebas funcionales, puede tener una cobertura de prueba para la funcionalidad principal de su aplicación. No tendrá las pruebas tan finas como con las pruebas unitarias, pero podría escribir las pruebas más fácilmente y no necesitaría modificarlas al final. Puede usar una herramienta como Selenio para esto.

Con el enfoque TDD, probablemente tenga la menor cantidad de trabajo. Aseguraría una buena cobertura de prueba para el código recién escrito, pero tendría que verificar manualmente que el código funciona de la misma manera que el anterior.

Cuestiones relacionadas