¿Qué es un Test? ¿Qué tipos de Test Existen? Jest

2/16
Recursos
Transcripción

Aportes 23

Preguntas 1

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Mis notas sobre la clase:

¿Qué es un test?

Como developers tenemos que garantizar que el codigo escrito cumpla con ciertos requisitos/expectativas. Esto lo hacemos por medio de una prueba (test).

Esto nos asegura:

  • Nuestro codigo cumple con el standar.
  • Enviamos a producción sin errores.

Tipos de pruebas

Debemos tener en cuenta que existen dos tipos de pruebas:

  • Funcionales.

    • Pruebas Unitarias.- Se prueban pequeñas partes de nuestro codigo asegurandonos así que cumplen con lo que se desea. (En una pagina web las pruebas se traducen a probar cada sección de la pagina y todas las interacciones en ellas).
  • No funcionales.

Jest

Jest es un framework de JavaScript para pruebas.

memes del gran @DezkaReid

Buenas! Me quedé con intriga sobre pruebas funcionales y no funcionales, les dejo un pequeño resumen personal de lo que estuve investigando…

Pruebas funcionales:
Son pruebas que se realizan para testear que la funcionalidad del producto sea correcta, es decir, pasarle datos de entrada y recibir los de salida esperados. Hay varios tipos, están las pruebas unitarias, smoke test, sanity, etc.

Pruebas no funcionales:
Con estas testeamos todo lo que no influye a la funcionalidad del producto, como por ejemplo, la accesibilidad, configuración, de rendimiento, entre otras.

Coverage: Esta herramienta nos permite que tanto estamos probando de nuestro proyecto y generar un reporte que nosotros podamos analizar a detalle y ver que nos falta por probar en nuestros proyectos.

A modo de que tengas una vista general más amplia de los tipos de testing que existen, investigué de qué tratan cada uno de los tipos de testing y te los quiero explicar a continuación:

<h3>PRUEBAS FUNCIONALES</h3>

Es una prueba basada en la ejecución, revisión y retroalimentación de las funcionalidades previamente diseñadas para el software.
Es decir, son pruebas específicas, concretas y exhaustivas para probar y validar que el software hace lo que debe y sobre todo, lo que se ha especificado.
Dentro de los tipos de pruebas unitarias se encuentran:

  • Unit Testing: Este tipo de testing consiste en probar de forma individual las funciones y/o métodos del código. Este tipo de testing se usa cuando queremos implementar Test Driven Development (TDD)
    Debido a lo específicas que son, generalmente son las pruebas automatizadas de menor coste, y pueden ejecutarse rápidamente por un servidor de Continuous Integration (integración continua o CI)
  • Integration Testing: Verifican que los diferentes módulos y/o servicios usados por nuestra aplicación funcionen en armonía cuando trabajan en conjunto. Son el paso siguiente al Unit Testing y son mucho más costosas, ya que requieren que la aplicación esté configurada y corriendo.
  • Functional Testing: Basados en los requerimientos del negocio, verifican el resultado de una acción, sin importarle los estados intermedios del sistema mientras se lleva a cabo la ejecución.
  • End-2-end Testing (e2e): Verifican que los flujos que sigue un usuario trabajen como se espera, y pueden ser tan simples como cargar una página o verificar un login; o cosas más complejas como un pago en línea.
    Son de las más costosas, así que lo ideal es usarla en partes clave de nuestra aplicación, confiando en pruebas más livianas y básicas como Unit Testing
  • Regression Testing: Se refiere a las pruebas que se aplican a algo que funcionaba en el pasado y se quiere asegurar que siga así. Si falla, significa que una nueva funcionalidad ha afectado otra funcionalidad que era correcta en el pasado, causando una “regresión”.
  • Acceptance Testing: Son pruebas formales, ejecutadas para verificar si un sistema satisface sus requerimientos de negocio.
    Estas pruebas replican el comportamiento de los usuarios, a fin de rechazar cambios si no se cumplen los objetivos. Estos objetivos pueden ir más allá de obtener una respuesta específica, y medir el rendimiento del sistema. Se suelen aplicar al final del desarrollo, con el objetivo de que si algo salió mal, volver a corregirlo.
<h3>PUEBAS NO FUNCIONALES</h3>

Por otro lado, las Pruebas No Funcionales evalúas cosas como la disponibilidad, accesibilidad, usabilidad, mantenibilidad, seguridad, rendimiento.


Como vemos, esto del testing es un mundo muy completo, y acá vamos a adentrarnos en él 😉

Documentacion:

aqui

Me encanta el imagotipo de Jest. Es una pasada.

Hacer Test nos permite comprobar que nuestro código cumple nuestras expectativas y requisitos.

¿Qué es un Test?
Un test es una serie de estrategias que al emplearlas y ejecutarlas correctamente, debe dar confiabilidad al proyecto realizado para que garantice su pleno funcionamiento en producción, y minimizar los errores que se puedan encontrar.

Aporte sobre Jest

Jest
Jest es una potente herramienta que nos permite trabajar con pruebas, para distintos tipos de proyectos como Babel, TypeScript, Node, React, Angular, Vue, entre otros.

Jest es un framework de pruebas para JavaScript.
Jest nos permite empezar a hacer pruebas sin tanta configuración.
• Nos permite probar nuestra UI con Snpashots. Los snapshots permiten llevar un seguimiento de objetos grandes fácilmente. Pueden vivir a la par de tus tests o ser incrustados en línea.
• Podemos isolar las pruebas. Esto quiere decir que las pruebas correran en paralelo en su propio proceso para maximizar el rendimiento.
• Tiene una herramienta de coverage para ver el porcentaje de código que estamos probando de nuestro proyecto y generar un reporte para poder analizar a detalle.
• Permite trabajar con mocks. Los mocks permiten mockear cualquier objeto que se encuentre fuera del scope del test.
Jest tiene una gran cantidad de documentación para usar estas características para probar nuestro código.

Jest nos permite mediante coverage ver el avance y los diferentes puntos que requieren mayor cubrimiento, asi mismo los mocks son de gran ayuda para complementar las pruebas unitarias.

Muy buena explicación 😄

Soy el único que ha creído que isolar existia mientras lo ha dicho? A mi también me pasa😇, tanto pensar en inglés y luego nos trabamos en la traducción…

¿ Porque debemos de hacer tests a nuestro código ?

Los tests nos ayudan a poder validar si el codigo que escribimos, esta funcionando de la manera en la que DEBERIA de funcionar, esto es importante de mencionar, ya que aunque nuestro codigo si corra y este “funcionando bien”, puede que este no cumpla su verdadero objetivo.
/

/
¿Porque deberiamos usar Jest ?

Nosotros podemos hacer tests incluso con las herramientas propias de el lenguaje de programacion en el que esta el codigo que queremos testear, sin embargo esto muchas veces no es muy efectivo y aconsejable, ya que estamos muy limitados e incluso puede hacer que nuestro codigo tenga malas practicas, es ahi donde Jest llega a salvar el dia, ya que este nos permite testear nuestro codigo de una manera mas rapida y eficiente.

Que genial, asi podemos asegurar que no hayan errores al programar

Estas son mis notas de la clase.

**¿Que significa probar?
*Uno como desarrollador debe de esperar que es código que está escribiendo deba de cumplir con una expectativa.
Por ejemplo, debemos de garantizar que si una función retorna string, siempre deba de retornar strings. Para esto debemos de comprobarlo por medio de una prueba.
Una prueba permite generar una expectativa sobre el resultado de un código.
Nosotros vamos a garantizar que la funcionalidad de nuestro desarrollo cumpla con el estándar, que pueda ser enviado a producción sin errores
, y de esta forma podamos tener la confianza de que estamos haciendo un buen código.

Tipos de pruebas.

1. Funcionales
	○ Unitarias: prueba pequeñas fracciones de código, las cuales van a garantizar que el código cumpla con lo que nosotros deseamos.
2. No funcionales

Jest
Jest es una potente herramienta que nos permite trabajar con pruebas, para distintos tipos de proyectos como Babel, TypeScript, Node, React, Angular, Vue, entre otros.

  • En mi opinión no se garantiza al 100% que el código vaya libre de errores, pero si disminuye una gran porcentaje de ellos y se evita que pasen a producción, lo cual nos permite ahorrar tiempo y dinero que serían destinados a corregir esos errores.

Los test siempre estan orientados a ayudar a otros desarrolladores con nuestro codigo 😄

Si muchos de los proyectos en los que trabaje los hubieran implementado pruebas unitarias nos hubiéramos ahorrado muchos dolores de cabeza

Permite trabajar con Babel, TS, Node, React, MongoDB, Puppeteer, y más. Se puede hacer cosas sin mucha configuración t prepararlo con snapshots el UI con sus pruebas. Partiendo de esto, JEst es potente, fácil de usar y una herramienta importante que es el Coverage generando un reporte, que permite analizar cuánto estamos probando nuestro proyecto y garantizar su implementación con Mocks.

Definición
Testing es el proceso de ejecutar un programa con el objetivo de encontrar errores. Si el “testing” es exitoso, entonces podemos sersioramos que los features están cumplidos.

Las ventajas de poseer testing son:

  • Conocemos mejor el código y sus implicaciones en otros procesos (integración testing).
  • Reducimos el tiempo de desarrollo y horas de revisión para encontrar el “error”.

Contamos con un despertador que todas las mañanas a las 9 AM suena su alarma, pero desde hace unos días ya no lo hace, eso es una anomalía, en caso de que hubiera llegado con una manecilla rota, seria defecto, si necesita luz para funcionar y por una tormenta se nos va la luz y ya no sirve, es fallo y por último si utilizas tu despertador para que te ayude a volver con tu ex, es un error.

Tipos de testing

Pruebas unitarias

Las pruebas unitarias son el nivel básico, limitadas al recurso de la aplicación. Consisten en las pruebas individuales de métodos y funciones de clases, componentes o módulos.

Pruebas de integración

Las pruebas de integración verifican que, los diferentes módulos o servicios, trabajen para su objetivo.

Pruebas funcionales

Enfocadas sobre los requerimientos de una aplicación, validan la salida de una acción y no se detienen para revisar estados intermedios de un sistema.

Pruebas de satisfacción o Alpha

Son pruebas que son ejecutadas para verificar si un sistema satisface sus requerimientos de negocio. Requieren que la aplicación esté en una fase llamada “testing or test”, el cual supone que se encuentra lista para replicar el comportamiento del usuario.

Entre sus validaciones pudieran ser:

  • El rendimiento del sistema.
  • Cambios visuales o adaptativos.

Son típicamente echas por el equipo de QA.

Pruebas de usuario o Beta

Esta prueba es conducida por uno o varios clientes. Esta versión es lanzada para “simular” un entorno real.

Dependiendo de su ámbito, puede contener diferentes contextos:

  • Escala o audiencia.
  • Sistema operativo o dispositivo final.
  • Seguridad.
  • Estrés.
  • Comunicación.

cuales son las vantajas de jest respecto a react proptypes

Las pruebas juegan un rol fundamental en equipos profesionales, a veces no se cuenta con un team de QA