No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Testing de software y de datos

15/25
Recursos

Aportes 17

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Hay varias librer铆as de Python para pruebas automatizadas, algunas de las m谩s populares son:

  1. unittest: Es una librer铆a est谩ndar de Python para pruebas unitarias. Proporciona una estructura com煤n para escribir pruebas y comparar resultados esperados con resultados actuales.

  2. pytest: Es una librer铆a popular para pruebas automatizadas que se centra en hacer las pruebas f谩ciles de leer y escribir. Incluye caracter铆sticas como la detecci贸n autom谩tica de pruebas y la capacidad de ejecutar varias pruebas al mismo tiempo.

  3. nose: Es una librer铆a de pruebas automatizadas que se enfoca en encontrar y ejecutar autom谩ticamente todas las pruebas en un paquete de Python.

  4. doctest: Es una librer铆a de Python que permite incluir pruebas en comentarios en el c贸digo fuente. Las pruebas se ejecutan autom谩ticamente cuando se importa el m贸dulo.

  5. behave: Es una librer铆a de pruebas automatizadas BDD (Test driven development) para Python. Esta librer铆a utiliza Gherkin lenguaje para escribir pruebas.

**Testing unitario: **Sirve para hacer los test de cada una de las funciones por separado
Test de integracion:Es para comprobar que las funciones funcionan correctamente en conjunto
**Test end 2 end: **Es para comprovar que la funcion funciona en produccion

Mi resumen de la clase:

La colaboraci贸n es muy importante, el testing es muy necesario para cada vez que realicemos algo, estemos considerando lo importante. Para estos hacemos funciones que revisan lo que hacemos y que al meter cierto valor, sale lo que esperamos. Las pruebas unitarias ser谩n de gran ayuda para esto.

El testing de software: va de pruebas unitarias, de integraci贸n y las pruebas E2E con caracter铆sticas visibles para probar que lo que hacemos tenga calidad.

Comparto un blog donde encontr茅 algo de evaluaci贸n de Data Quality con Python y al final utiliza un scrip de Python para automatizar controles de datos.
https://servian.dev/data-quality-and-testing-frameworks-316c09436ab2
No es la consigna en s铆, pero me gusto mucho porque va de algo simple a algo avanzado.

Esto es la respuesta que me mando ChatGPT:

DataOps y DevOps son dos pr谩cticas de ingenier铆a de software relacionadas pero diferentes que se utilizan para acelerar la entrega de software y mejorar la calidad del mismo. A continuaci贸n se presentan algunas de las principales diferencias entre DataOps y DevOps:

  • Objetivos: El objetivo principal de DevOps es integrar y automatizar el proceso de desarrollo y despliegue de software para acelerar la entrega y mejorar la calidad del mismo. Por otro lado, el objetivo principal de DataOps es integrar y automatizar el proceso de gesti贸n de datos para acelerar el acceso y mejorar la calidad de los datos.

  • Enfoque: DevOps se centra en la integraci贸n y automatizaci贸n del proceso de desarrollo y despliegue de software, mientras que DataOps se centra en la integraci贸n y automatizaci贸n del proceso de gesti贸n de datos.

  • Proceso: El proceso de DevOps incluye la integraci贸n continua, la entrega continua y la implementaci贸n continua, mientras que el proceso de DataOps incluye la integraci贸n de datos, la gesti贸n de datos y la entrega de datos.

  • Tecnolog铆a: DevOps utiliza herramientas como Jenkins, Docker, Kubernetes y Git para integrar y automatizar el proceso de desarrollo y despliegue de software, mientras que DataOps utiliza herramientas como Apache Kafka, Apache Hadoop, Apache Spark y herramientas de ETL (Extract, Transform, Load) para integrar y automatizar el proceso de gesti贸n de datos.

  • Equipo: En DevOps, los equipos de desarrollo y operaciones trabajan juntos para integrar y automatizar el proceso de desarrollo y despliegue de software, mientras que en DataOps, los equipos de datos y operaciones trabajan juntos para integrar y automatizar el proceso de gesti贸n de datos.

En resumen, DataOps y DevOps son dos pr谩cticas de ingenier铆a de software relacionadas pero diferentes que se centran en integrar y automatizar procesos diferentes para acelerar la entrega de software y mejorar la calidad del mismo. Mientras que DevOps se centra en el proceso de desarrollo y despliegue de software, DataOps se centra en el proceso de gesti贸n de datos.

Tres bibliotecas populares disponibles en Python para hacer pruebas de software: 1. **unittest**: `unittest` es un marco de pruebas unitarias integrado en la biblioteca est谩ndar de Python. Permite a los desarrolladores escribir casos de prueba de manera estructurada utilizando clases y m茅todos. Proporciona aserciones incorporadas para verificar el comportamiento esperado de las funciones y m茅todos. `unittest` es adecuado para pruebas unitarias y de integraci贸n en proyectos Python y ofrece una amplia gama de funcionalidades para organizar y ejecutar pruebas de forma eficiente. 2. **pytest**: `pytest` es una biblioteca de pruebas popular y ampliamente utilizada en el ecosistema de Python. Ofrece una sintaxis m谩s simple y expresiva para escribir casos de prueba en comparaci贸n con `unittest`, lo que facilita la escritura y lectura de pruebas. `pytest` tambi茅n proporciona potentes caracter铆sticas adicionales, como la detecci贸n autom谩tica de pruebas, parametrizaci贸n flexible, fixtures para configurar y limpiar el estado de las pruebas, y una amplia variedad de complementos para extender sus capacidades. Es altamente compatible con `unittest` y puede ejecutar pruebas escritas en este marco de pruebas y otros marcos populares. 3. **nose2**: `nose2` es otro marco de pruebas que mejora y extiende el marco de pruebas `unittest` integrado en Python. Proporciona una sintaxis m谩s simple y concisa para escribir pruebas en comparaci贸n con `unittest`, y tambi茅n ofrece caracter铆sticas adicionales, como descubrimiento autom谩tico de pruebas, ejecuci贸n paralela de pruebas, y plugins para extender su funcionalidad. `nose2` es una opci贸n popular para proyectos Python debido a su facilidad de uso y capacidades mejoradas en comparaci贸n con `unittest`.
Realmente me quede con la duda sobre el test de datos ? Que es realmente Test de Datos ? que tecnicas se utilizan ? Que diferencia hay con el test de software ?
Unittest: de las herramientas m谩s populares en Python, y que sin duda todos los desarrolladores de Python hemos o铆do hablar, ya que es la herramienta que viene incluida con el lenguaje Pytest: es una herramienta para test unitario, una de las m谩s utilizadas por detr谩s de unittest. Es una herramienta muy potente para testing unitario, altamente customizable, y con muchos plugins con todo tipo de usos, adem谩s de features como fixtures, o el archivo conftest, que nos permite hacer un setup global para tu suite de testing Hypothesis: es una librer铆a que se apoya en la filosof铆a 鈥減roperty based testing鈥, b谩sicamente hace uso de una serie de estrategias que definimos, para generar escenarios pseudo-aleatorios en los que ejecutar nuestros tests, de esta forma nos aseguramos la solidez de nuestro c贸digo. Playwright: es una librer铆a que se apoya en la filosof铆a 鈥減roperty based testing鈥, b谩sicamente hace uso de una serie de estrategias que definimos, para generar escenarios pseudo-aleatorios en los que ejecutar nuestros tests, de esta forma nos aseguramos la solidez de nuestro c贸digo. Robot: es una herramienta que nos permite hacer testing en base a comportamientos, usando la filosof铆a Behavior Driven Development (BDD). Este paradigma de testing se basa en que nuestro c贸digo deber铆a ser siempre evaluado en funci贸n del comportamiento deseado, sin llegar a comprender c贸mo funciona el c贸digo que lo implementa.

Unittest;
De las herramientas m谩s populares en Python, y que sin duda todos los desarrolladores de Python hemos o铆do hablar, ya que es la herramienta que viene incluida con el lenguaje.

Pytest :
Es una herramienta para test unitario, una de las m谩s utilizadas por detr谩s de unittest. Es una herramienta muy potente para testing unitario, altamente customizable, y con muchos plugins con todo tipo de usos, adem谩s de features como fixtures, o el archivo conftest, que nos permite hacer un setup global para tu suite de testing.

15. Testing de software y de datos

  • Testing implica hacer funciones para verificar los m贸dulos que estamos creando y que devuelvan lo que realmente queremos.

Cuando se trata de realizar pruebas en proyectos de Data Science, hay varias librer铆as 煤tiles en Python que se pueden utilizar. Algunas de las librer铆as m谩s comunes para realizar pruebas en proyectos de Data Science son:

  1. pytest: pytest es una librer铆a popular y flexible para realizar pruebas en Python. Proporciona una sintaxis sencilla y potente para escribir casos de prueba, y ofrece una amplia gama de funcionalidades, como fixtures, parametrizaci贸n, y cobertura de c贸digo.
  2. unittest: unittest es el m贸dulo de pruebas unitarias integrado en la biblioteca est谩ndar de Python. Permite escribir casos de prueba utilizando clases y m茅todos, y proporciona una amplia gama de aserciones para verificar el comportamiento esperado de las funciones y clases.
  3. doctest: doctest es una librer铆a ligera que permite escribir pruebas en el mismo formato que la documentaci贸n de un m贸dulo o funci贸n. Es 煤til para verificar que los ejemplos de c贸digo en la documentaci贸n se ejecuten correctamente y produzcan los resultados esperados.
  4. hypothesis: hypothesis es una librer铆a de generaci贸n de datos aleatorios para pruebas. Permite definir propiedades y estrategias para generar casos de prueba autom谩ticamente, lo que puede ser especialmente 煤til en la validaci贸n de resultados para conjuntos de datos grandes y complejos.
  5. mock: mock es una librer铆a para simular y reemplazar objetos o funciones en pruebas unitarias. Es 煤til para simular dependencias externas, como bases de datos o servicios web, y proporciona una manera de controlar y verificar el comportamiento de esas dependencias durante las pruebas.

Estas son solo algunas de las librer铆as m谩s populares para realizar pruebas en proyectos de Data Science en Python. La elecci贸n de la librer铆a depender谩 de las necesidades espec铆ficas del proyecto y de las preferencias del equipo de desarrollo.

Testing de Software:

  1. unittest: Es el m贸dulo de pruebas unitarias est谩ndar en Python. Proporciona una amplia gama de herramientas para escribir y ejecutar pruebas unitarias de forma estructurada.
  2. pytest: Es una librer铆a de pruebas popular y flexible que ampl铆a las capacidades de unittest. Proporciona una sintaxis m谩s sencilla y ofrece caracter铆sticas adicionales, como la detecci贸n autom谩tica de pruebas, informes detallados y la posibilidad de escribir extensiones personalizadas.
  3. nose2: Es otra opci贸n popular para pruebas unitarias. Proporciona una sintaxis mejorada y una configuraci贸n sencilla, adem谩s de admitir caracter铆sticas avanzadas como la ejecuci贸n de pruebas paralelas y la generaci贸n de informes.

Testing de Data:

  1. pandas.testing: Es una sublibrer铆a de Pandas que proporciona herramientas espec铆ficas para realizar pruebas en estructuras de datos, como DataFrames y Series. Permite comparar resultados esperados con resultados obtenidos y realizar verificaciones de igualdad o casi igualdad.
  2. numpy.testing: Es una sublibrer铆a de NumPy que contiene herramientas para realizar pruebas en arreglos num茅ricos. Proporciona funciones para comparar arreglos, verificar igualdad aproximada, comprobar la validez de tipos de datos y realizar otras verificaciones de calidad de datos.
  3. hypothesis: Es una librer铆a de pruebas basada en propiedades que permite generar casos de prueba autom谩ticamente y explorar diferentes escenarios. Es 煤til para probar el comportamiento de funciones y programas en una amplia gama de entradas y casos l铆mite.

Encontre varias librerias para Testing en Python:

  • Pytest
  • Pyunit
  • Behave
  • Lettuce
  • Jasmine
  • Gauge

驴 Qu茅 buscar en un framework de automatizaci贸n de pruebas?
Los frameworks ayudan a automatizar los procesos de prueba mientras reduce los esfuerzos manuales y hace que el proceso de prueba sea m谩s r谩pido y m谩s eficiente. Cuando busquemos un framework, debemos tener en cuenta los siguientes puntos para elegir el que m谩s se adapte a nuestro proyecto:

  • La capacidad del framework para justificar nuestras
  • necesidades de prueba.
  • Facilidad de uso.
  • Biblioteca con componentes reutilizables.
  • Gastos generales de mantenimiento.
  • Integraci贸n con otras herramientas y frameworks.
  • Funcionalidades del framework.
  • Integraci贸n con las herramientas de terceros.
  • Complejidad.
  • Conocer las caracter铆sticas del framework.
  • Funciones de soporte y mantenimiento.
  • Disparo autom谩tico sin necesidad de intervenci贸n humana.
  • Estabilidad, flexibilidad y extensibilidad.
  • Informe de creaciones.

Buena explicacion.

Algunas herramientas para testing en Python

  • Unittest: Es una librer铆a que ya viene incluida con el lenguaje, es muy sencilla de usar y tiene compatibilidad con el resto librer铆as, pero carece de funcionalidades y un sistema de plugins.
  • Pytest: Es una herramienta muy potente debido a la gran cantidad de plugins y comunidad que tiene, adem谩s iniciar con ella no es tan dif铆cil, pero tiene la desventaja de que es dif铆cil profundizar en la herramienta y algunos plugins pueden estar desactualizados.
  • Hypothesis: Es una librer铆a que se caracteriza por la filosof铆a 鈥減roperty based testing鈥, que se basa en generar escenarios pseudo-aleatorios para ejecutar nuestros test, esto permite aumentar la confiabilidad de los tests, las desventajas son que el hacer pruebas m谩s complejas toma bastante tiempo y la curva de aprendizaje es elevada.

Estas me parecieron interesantes, aunque dentro de este link hay mas herramientas: https://openwebinars.net/blog/herramientas-de-testing-en-python/

unittest: Es una librer铆a est谩ndar de Python que proporciona un marco completo para escribir y ejecutar pruebas unitarias.

pytest: Es una librer铆a de c贸digo abierto que ofrece una interfaz f谩cil de usar y poderosa para escribir y ejecutar pruebas unitarias.

doctest: Es una librer铆a est谩ndar de Python que permite escribir pruebas en forma de documentaci贸n y verificar su salida autom谩ticamente.

nose: Es una librer铆a de c贸digo abierto que proporciona una manera f谩cil de encontrar y ejecutar pruebas unitarias.

Estas son solo algunas de las muchas opciones disponibles, la elecci贸n de la librer铆a depende de las necesidades y preferencias del desarrollador.

Fuente: ChatGpt