# Qué es End-to-End Testing

Las pruebas de software tienen diferentes tipos y niveles de pruebas que nos ayudan a identificar las fallas en el software con el fin de garantizar que el software cumpla con los requisitos y expectativas de los usuarios finales.

Las pruebas **End-to-End** es un nivel de pruebas para probar el flujo de una aplicación de principio a fin (o de extremo a extremo). El propósito de las pruebas End-to-End es simular los escenarios reales del usuario y validar que la aplicación y sus componentes están completamente integrados y se adhiere a los requisitos y expectativas de los usuarios finales.

{% hint style="success" %}

### Características de las pruebas End-to-End

* Simula todo el flujo del software desde el punto de vista del usuario final.
* Prueba el software desde la interfaz de usuario y no desde el código interno.
* Está enfocado en detectar posibles problemas que pudieran encontrar los usuarios finales en su interacción con el flujo general del aplicativo.
* Cubre las secciones que las pruebas unitarias y las pruebas de integración no cubren.
* Los casos de prueba deben diseñarse desde la perspectiva del usuario final.
  {% endhint %}

### Por qué realizamos pruebas End-to-End?

Los sistemas de software modernos se interconectan con múltiples subsistemas a través de servicios web, API, protocolos, base de datos, etc. Esto ha hecho que los sistemas de software modernos sean muy complicados. Estos subsistemas de los que estamos hablando pueden estar dentro de la misma organización o, en muchos casos, también pueden pertenecer a servicios de terceros. Además, estos subsistemas pueden ser algo similares o diferentes del sistema actual. Como resultado, si hay algún fallo en cualquier subsistema, puede afectar negativamente a todo el sistema de software y provocar su colapso.

Estos riesgos principales se pueden evitar y controlar mediante el tipo de pruebas End-to-End para mantener el control y asegurar la calidad en el producto de software en general.

Dado el gasto relativo de realizar pruebas End-to-End de forma manual, una buena práctica es realizar automatización de pruebas concentrandose en las características de la aplicación de mayor riesgo para el usuario final. Sin embargo, la automatización de pruebas funcionales, no tiene como objetivo eliminar el testing manual, sino ayudarlo y complementarlo. Si automatizamos aquello que puede ser automatizado, entonces los testers tendrán más tiempo y podrán centrar sus esfuerzos en resolver los aspectos más complejos que se le escapan a la automatización de pruebas unitarias o repetitivas.

Para más información sobre las pruebas End-to-End pueden consultar: <https://www.softwaretestinghelp.com/what-is-end-to-end-testing/>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://douglasfugazi.gitbook.io/introduction-to-cypress/introduccion/que-es-end-to-end-testing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
