¿Cómo decido qué marco de prueba usar?

8

La situación es esta.

Soy un desarrollador junior para un pequeño proyecto de TI del gobierno. No tenemos nada de integración continua o un marco de prueba automatizado. Pero la idea es desarrollar este tipo de cosas / mejorar nuestro entorno de desarrollo.

El producto es un algoritmo de procesamiento de datos que luego muestra información al usuario final a través de una aplicación web.

Así que lo que viene es un montón de trabajo modificando el Javascript de la aplicación web. Como tal, queremos implementar una prueba unitaria para JavaScript.

He examinado esta pregunta de desbordamiento de pila que describe varios marcos de prueba de unidad diferentes para javascript.

La pregunta es: ¿cómo decido entre qué marco comenzar a usar?

  • ¿Qué es una lista de criterios para elegir un marco de prueba?
  • ¿Es práctico probarlos todos?
  • ¿Pasa mucho tiempo leyendo foros / etc sobre cómo se usan?
dwjohnston
fuente

Respuestas:

13

¿Qué es una lista de criterios para elegir un marco de prueba?

1) sintaxis

A medida que investigue diferentes marcos de prueba, notará que la sintaxis es un factor diferenciador en todos ellos. Esto realmente dependerá de lo que te haga sentir cómodo.

Por ejemplo, qUnit es más un marco de prueba declarativo. Su API consta de funciones llamadas test, equals ,triclyEqual, deepEqual, etc.

Otro marco de prueba, mocha , se parece más a rspec en que se lee en una estructura más parecida a una oración. Su API consta de funciones llamadas describe, it, afirmar.equal, etc.

Mi preferencia personal es una qunit como estructura.

2) Características: trozos, espías, servidor falso, reloj falso, etc.

Cuando comience a probar en Javascript, se encontrará rápidamente en situaciones en las que necesita su marco de prueba para ayudarlo a probar ciertos casos de uso. Por ejemplo:

Espías: esto lo ayudará a detectar si su código llamó a una función cuando debería

Stubs: muy similar a un espía, excepto que contiene un comportamiento predefinido (Ejemplo: cuando se llama al stub, devuelve foo)

Servidor falso: si su código emite llamadas AJAX y desea falsificar la respuesta de la llamada AJAX, un servidor falso lo ayudará a realizar pruebas más fácilmente.

Reloj falso: si su código reacciona de manera diferente según la fecha o la hora, un reloj falso lo ayudará a controlar exactamente qué hora es mientras se ejecuta la prueba.

Mi recomendación para un Framework Javascript que admita todas las características anteriores es Sinon.JS . Como me gusta una qunit como sintaxis y framework, uso qunit AND Sinon.JS. qunit maneja mis afirmaciones y ejecuta mis pruebas. Sinon.JS me da la posibilidad de tropezar, espiar, ejecutar un servidor falso y falsificar el reloj.

3) Apoyo comunitario

¿Su marco de prueba es compatible con la comunidad? Por ejemplo, grunt (una herramienta de entorno de compilación) admite la ejecución de qunit en un servidor PhantomJS sin cabeza: https://github.com/gruntjs/grunt-contrib-qunit . Esto facilita la escritura de pruebas y su ejecución automática cada vez que guardo el archivo de prueba.

¿Es práctico probarlos todos? No, no es práctico. En su lugar, investigue el sitio web de cada marco y elija uno con el que se sienta cómodo y que también lo respalde durante sus pruebas de escritura.

¿Pasa mucho tiempo leyendo foros / etc sobre cómo se usan? Coge un libro sobre el marco que elijas y hojealo a medida que lo necesites.

richardaday
fuente