Beneficios de las pruebas E2E

En la pirámide de pruebas de extremo a extremo (E2E), las pruebas ocupan uno de los peldaños superiores. Al escribir una prueba E2E, puede confiar en los resultados de la lógica de su aplicación, probar integraciones con otros sistemas y crear un "contrato" para su aplicación.

Desafortunadamente, muchos de los colegas con los que trabajé no escribieron pruebas E2E. En parte porque se lanzaron de lleno a las pruebas unitarias y pensaron que era mejor por varias razones, incluida la tendencia TDD. En parte porque creían que las pruebas de E2E son difíciles de escribir, tardan mucho en ejecutarse y hay problemas con la instrumentación.

Analicemos estas opiniones y veamos las ventajas que ofrecen las pruebas E2E.

Terminología

Pongamos el tipo de autotest bajo las pruebas E2E. Estos autotests deben cubrir todas las funciones del servicio desde el punto de vista del cliente. Lo hacen simulando la interacción real del cliente, ya sea una solicitud HTTP o haciendo clic en un botón de la interfaz de usuario.

El enfoque de prueba unitaria es mejor

Escribir pruebas unitarias, en mi experiencia, lleva mucho más tiempo que las pruebas E2E. Sí, al principio tienes que averiguar cómo es mejor escribir las pruebas E2E, pero lo mismo ocurre con las pruebas unitarias.

Por otro lado, como resultado, una prueba E2E cubre más código que una prueba unitaria, aunque puede requerir menos líneas en comparación con un conjunto de pruebas unitarias similar.

No tiene que perder tiempo en comprender cómo simular dependencias correctamente, porque los sistemas externos se convierten en ellas en las pruebas E2E, y la interacción con el servicio bajo prueba se construye de acuerdo con el principio de "caja negra".

No es necesario verificar todas las condiciones de contorno para un método de clase única. Esto aumenta la flexibilidad de trabajar con el código, ya que no hay necesidad de refactorizar todo el conjunto de pruebas ante el más mínimo cambio en la lógica interna de la aplicación.

, , 100 ( ), .

backend- , API HTTP ( GraphQL) MQ. HTTP, mainstream .

Frontend- , , Web- () . , , , .

E2E , . . .. . , .

E2E

, , .

"" code-coverage. , , , , . exception, , ?

, E2E .

E2E API . , backend, E2E , , frontend .

, , E2E , unit-, .

! , E2E ?




All Articles