1 of 30

Acerca de automatización

Now part of

Sergio Orozco SDET

2 of 30

Contenido

  • Introducción
  • Estrategias y tipos de pruebas
  • Prácticas recomendadas

3 of 30

¿Qué NO es automatización de pruebas?

  • Un vendor tool
  • Un determinante único de calidad
  • Una labor exclusiva de un solo rol

4 of 30

¿Qué es automatización de pruebas?

La automatización de pruebas consiste en el uso de software especial para controlar la ejecución de pruebas y la comparación entre los resultados obtenidos y los resultados esperados.

5 of 30

Pruebas automatizadas�

  • Deben ser automáticas y repetibles
  • Deben ser fáciles de implementar
  • Deben tener valor en el futuro
  • Deben poderse ejecutar fácilmente
  • Deben correr rápido

6 of 30

Pirámide de pruebas

Unit

Integration

Component

E2E

Exploratory

7 of 30

Pirámide de pruebas

Unit

Integration

Component

E2E

Exploratory

TIEMPO

COSTO

8 of 30

Pruebas de unidad

Unit

Integration

Component

E2E

Exploratory

9 of 30

Ejemplo: una suma

 function suma(a, b) {

   return a + b;

 }

 function sumaTest1() {

   const resultado = suma(0, 0);

   assert(0, resultado)

 }

10 of 30

Pruebas de unidad

  • Deben tener resultados consistentes
  • Deben tener control total del SUT
  • Deben ser completamente aisladas
  • Deben mostrar resultados fáciles de leer cuando fallan

11 of 30

Prácticas recomendadas para pruebas unitarias

  • Usar objetos simulados (mocks, stubs, spies, fakes)
  • Inyección de dependencias
  • Organización AAA (arrange - act - assert)
  • Tener en cuenta el Coverage
  • Tener buenos datos de prueba

12 of 30

Pruebas de integración

Unit

Integration

Component

E2E

Exploratory

13 of 30

Pruebas de integración

controller.js: obtenerJugador()

servicio.js: obtenerJugador()

domain.js: obtenerJugador()

persistence.js: obtenerJugador()

Se prueban sólo las partes que se integran con elementos externos

14 of 30

Pruebas de integración

  • Prueban la integración con componentes externos
  • Cubren diferentes formas de operaciones exitosas y fallidas con el componente externo
  • Ej: en la capa http se puede verificar si falta un header HTTP
  • Ej: se puede verificar el mapping correcto de la BD con el código

15 of 30

Pruebas de Componentes

Unit

Integration

Component

E2E

Exploratory

16 of 30

Pruebas de componentes

  • Se prueba un componente completo, utilizando test doubles para la comunicación con sistemas externos
  • Se pueden hacer pruebas de componentes de UI y backend

17 of 30

Pruebas de componentes UI

UI running

Respuestas dadas por un test double

HTTP backend call

Automation test script

selenium

puppeteer

protractor

etc

18 of 30

Pruebas de componentes de UI

  • Probar múltiples browsers de forma más rápida
  • Permite concentrar esfuerzos de pruebas en componentes y comportamientos de la UI
  • Ej: si un menú se despliega, si un botón se deshabilita, si la navegación es correcta, etc

19 of 30

Pruebas de componentes backend

Backend running

Respuestas dadas por un test double

Llamados a dependencias externas

test script

GET

POST

DELETE

etc

DB en memoria

20 of 30

Pruebas de componentes backend

  • Se ejecuta el backend y se prueba desde sus interfaces de acceso (ej: API REST)
  • Se inyectan test doubles para controlar las pruebas
  • De gran importancia cuando se prueban micro servicios

21 of 30

Pruebas E2E

Unit

Integration

Component

E2E

Exploratory

22 of 30

Pruebas E2E

  • Se ejecutan contra el sistema completo desplegado en un ambiente
  • Valida la completa integración de los componentes desplegados
  • Se pueden ejecutar por API y por UI

23 of 30

Pruebas E2E UI

UI running

HTTP backend call

Automation script

selenium

puppeteer

protractor

etc

Aplicación desplegada

Llamada al backend real desplegado

24 of 30

Pruebas E2E API

Llamada al backend real desplegado

HTTP backend call

Prueba automatizada

java

node

go

etc

25 of 30

Prácticas recomendadas E2E

  • Manejar un presupuesto de tiempo
  • Escribir las pruebas orientadas a escenarios de usuario
  • Revisar si la prueba tiene sentido que sea E2E o se puede hacer en otro nivel
  • Tener estrategias de data setup y teardown

26 of 30

Prácticas recomendadas generales

  • Utilizar patrones de diseño
  • Utilizar analizadores de código estático
  • Tener buenos reportes de pruebas
  • Tener siempre feedback rápido

27 of 30

Prácticas recomendadas generales

  • Que hagan parte de continuos integration
  • Que sean responsabilidad de todo el equipo
  • Implementar pruebas por prioridades

28 of 30

Pruebas exploratorias

Unit

Integration

Component

E2E

Exploratory

29 of 30

Pruebas exploratorias

  • Se basan en cómo los usuarios utilizarían el sistema y no en un paso a paso de pruebas previamente definidos como un guión 
  • Se debe tener un objetivo
  • Se debe registrar cómo se hizo la prueba

30 of 30

...Aún hay más

  • Pruebas de usabilidad
  • A/B testing
  • Pruebas de performance
  • Pruebas de seguridad
  • Pruebas en móviles