No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

19 Días
2 Hrs
48 Min
51 Seg

Testing de software y de datos

15/25
Recursos

Aportes 24

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.

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.

**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

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.

Son utilizados para escribir y ejecutar pruebas unitarias, de integración o funcionales: * `unittest` * Integrado en la biblioteca estándar de Python. * Ofrece herramientas para escribir pruebas unitarias y organizar casos de prueba en clases. * Similar a frameworks como JUnit (Java). * `pytest` * Uno de los más populares debido a su simplicidad y flexibilidad. * Compatible con `unittest`. * Características como fixtures, parametrización y extensibilidad mediante plugins.
Algunas librerias que encontre son: * Unittest(viene ya incluida) * Pytest * Hypothesis
### Unittest (pyTest): Viene incluida denttro de Pythom Hypotesis: Nos ayuda para generar escenarios aleatorios para ejecutarlo en nuestros test
### 1. **unittest** [**Descripción**: Es la librería estándar de Python para pruebas unitarias, inspirada en JUnit de Java](https://docs.python.org/3/library/unittest.html)[1](https://docs.python.org/3/library/unittest.html). **Uso Básico**: Python`import` unittest `class TestStringMethods`(unittest.TestCase): ` def test_upper(self`): ` self.assertEqual('foo'.upper(), 'FOO'`) ` def test_isupper(self`): ` self.assertTrue('FOO'`.isupper()) ` self.assertFalse('Foo'`.isupper()) ` def test_split(self`): ` s = 'hello world'` ` self.assertEqual(s.split(), ['hello', 'world'`]) ` with` self.assertRaises(TypeError): ` s.split(2`) `if __name__ == '__main__'`: unittest.main() Código generado por IA. Revisar y usar cuidadosamente. [Más información sobre preguntas frecuentes](https://www.bing.com/new#faq). **Ventajas**: * Integrado en la biblioteca estándar de Python. * Soporte para fixtures, suites de pruebas y runners. ### 2. **pytest** [**Descripción**: Una librería muy popular que simplifica la escritura de pruebas y soporta fixtures avanzados y plugins](https://docs.python.org/3/library/unittest.html)[2](https://www.softwaretestinghelp.com/python-testing-frameworks/). **Uso Básico**: Python`def test_upper`(): ` assert 'foo'.upper() == 'FOO'` `def test_isupper`(): ` assert 'FOO'`.isupper() ` assert not 'Foo'`.isupper() `def test_split`(): ` s = 'hello world'` ` assert s.split() == ['hello', 'world'`] ` with` pytest.raises(TypeError): ` s.split(2`) Código generado por IA. Revisar y usar cuidadosamente. [Más información sobre preguntas frecuentes](https://www.bing.com/new#faq). **Ventajas**: * Sintaxis simple y fácil de leer. * Soporte para fixtures y plugins. * Integración con otras herramientas de testing. ### 3. **nose2** [**Descripción**: Es la sucesora de Nose y extiende las capacidades de unittest con plugins adicionales](https://docs.python.org/3/library/unittest.html)[2](https://www.softwaretestinghelp.com/python-testing-frameworks/). **Uso Básico**: Python`import` unittest `class TestStringMethods`(unittest.TestCase): ` def test_upper(self`): ` self.assertEqual('foo'.upper(), 'FOO'`) ` def test_isupper(self`): ` self.assertTrue('FOO'`.isupper()) ` self.assertFalse('Foo'`.isupper()) ` def test_split(self`): ` s = 'hello world'` ` self.assertEqual(s.split(), ['hello', 'world'`]) ` with` self.assertRaises(TypeError): ` s.split(2`) `if __name__ == '__main__'`: unittest.main() Código generado por IA. Revisar y usar cuidadosamente. [Más información sobre preguntas frecuentes](https://www.bing.com/new#faq). **Ventajas**: * Compatible con unittest. * Soporte para plugins adicionales. ### 4. **doctest** [**Descripción**: Permite escribir pruebas dentro de los docstrings y ejecutarlas como parte de la documentación](https://docs.python.org/3/library/unittest.html)[1](https://docs.python.org/3/library/unittest.html). **Uso Básico**: Python`def add(a, b`): ` `""" Suma dos números. \>>> add(2, 3) 5 \>>> add('a', 'b') 'ab' ` """` ` return` a + b `if __name__ == "__main__"`: ` import` doctest doctest.testmod() Código generado por IA. Revisar y usar cuidadosamente. [Más información sobre preguntas frecuentes](https://www.bing.com/new#faq). **Ventajas**: * Fácil de usar para pequeñas pruebas. * Integración con la documentación. ### 5. **Robot Framework** [**Descripción**: Un framework de automatización de pruebas para pruebas de aceptación y desarrollo dirigido por pruebas (TDD)](https://www.softwaretestinghelp.com/python-testing-frameworks/)[2](https://www.softwaretestinghelp.com/python-testing-frameworks/). **Uso Básico**: \*\*\* Settings \*\*\* Library OperatingSystem \*\*\* Test Cases \*\*\* Example Test \[Documentation] This is an example test \[Tags] example Run Process echo Hello, Robot Framework! **Ventajas**: * Basado en palabras clave, lo que facilita la lectura y escritura de pruebas. * Extensible con bibliotecas externas.
No me quedó muy clara la diferencia entre el testing en data y el testing en ingeniería.
* **Ventajas.** 1. **Mejora de la Calidad del Software** * **Detección Temprana de Errores**: Permite identificar y corregir errores antes de que lleguen a producción, lo que mejora la calidad general del software. * **Pruebas Exhaustivas**: Facilita la realización de pruebas unitarias, de integración, de aceptación y de regresión en un entorno controlado. 2. **Reducción de Riesgos** * **Seguridad**: Minimiza el riesgo de introducir vulnerabilidades de seguridad en el entorno de producción. * **Estabilidad**: Asegura que las nuevas características o cambios no afecten negativamente la estabilidad del sistema en producción. 3. **Facilita la Colaboración** * **Trabajo en Equipo**: Diferentes equipos (desarrolladores, testers, DevOps) pueden trabajar en paralelo en un entorno controlado. * **Revisión y Feedback**: Los cambios pueden ser revisados y probados por varios equipos antes de ser aprobados para producción. 4. **Mejora la Planificación y el Despliegue** * **Planificación de Despliegue**: Permite simular el despliegue en producción y planificar mejor los procesos de lanzamiento. * **Pruebas de Carga y Rendimiento**: Facilita la realización de pruebas de rendimiento y carga en un entorno que replica el entorno de producción. * **Desventajas.** 1. **Costos Adicionales** * **Recursos**: Requiere recursos adicionales (hardware, software, personal) para mantener los entornos de desarrollo, pruebas y staging. * **Tiempo**: Configurar y mantener estos entornos puede consumir tiempo que podría utilizarse en el desarrollo directo de nuevas funcionalidades. 2. **Complejidad** * **Administración de Ambientes**: Aumenta la complejidad de la administración de múltiples entornos, incluyendo la sincronización de datos y configuraciones. * **Desincronización**: Existe el riesgo de que los entornos no estén completamente sincronizados con el entorno de producción, lo que puede llevar a resultados de pruebas inexactos. 3. **Mantenimiento** * **Actualizaciones y Parches**: Requiere aplicar actualizaciones y parches a todos los entornos, no solo a producción. * **Depuración**: La depuración de problemas puede ser más compleja debido a diferencias entre entornos. * **¿Que implica?** 1. **Configuración Inicial** * **Espejo del Entorno de Producción**: Es crucial que los entornos de pruebas y staging se configuren para ser lo más similares posible al entorno de producción en términos de software, hardware, configuraciones y datos. * **Automatización**: Implementar herramientas de automatización para la configuración y el mantenimiento de entornos puede reducir errores y facilitar la administración. 2. **Sincronización de Datos y Configuraciones** * **Consistencia**: Mantener la consistencia de los datos y configuraciones entre los entornos es vital para asegurar que las pruebas sean representativas. * **Datos de Prueba**: Utilizar datos de prueba realistas sin comprometer la privacidad o la seguridad de los datos sensibles. 3. **Gestión de Versiones** * **Control de Versiones**: Implementar un control estricto de versiones para asegurar que los cambios se prueben de manera consistente en todos los entornos antes de llegar a producción. * **Pipelines de CI/CD**: Utilizar pipelines de Integración Continua/Despliegue Continuo (CI/CD) para automatizar el flujo de trabajo desde el desarrollo hasta la producción. 4. **Pruebas de Integración y Regresión** * **Integración Continua**: Las pruebas de integración continua ayudan a detectar errores rápidamente y a mantener la calidad del código. * **Pruebas de Regresión**: Realizar pruebas de regresión para asegurar que nuevas funcionalidades no introduzcan errores en partes existentes del software. 5. **Monitoreo y Feedback** * **Monitoreo de Ambientes**: Implementar herramientas de monitoreo para detectar y solucionar problemas en los entornos de desarrollo, pruebas y staging. * **Feedback Continuo**: Establecer un mecanismo de feedback continuo para mejorar el proceso de desarrollo y despliegue basado en los resultados obtenidos en estos entornos.

Gracias

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 “property 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 “property 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 “property 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