Skip to content
IRC-CodingIRC-Coding
Acceptance TestsUATUser Acceptance TestingATDDBDDCriterios de aceptaciónAkzeptanzkriterien

Acceptance Tests: Validar software desde la perspectiva del usuario

Aprende sobre Acceptance Tests, UAT, ATDD, BDD y criterios de aceptación. Valida que tu software cumpla los requisitos.

S

schutzgeist

8 min read
Acceptance Tests: Validar software desde la perspectiva del usuario

Pruebas de Aceptación

Las pruebas de aceptación validan si una aplicación es aceptable desde la perspectiva del usuario o cliente. Se sitúan al final del proceso de testing y verifican que el sistema cumple los requisitos acordados. Aunque pueden realizarse de forma manual, cada vez es más común automatizarlas mediante BDD o ATDD.

In a Nutshell

  • Las pruebas de aceptación validan el software desde una perspectiva empresarial.
  • Verifican que se cumplen los requisitos y criterios de aceptación.
  • Las pruebas de aceptación del usuario se ejecutan frecuentemente por parte del cliente o el departamento responsable.
  • ATDD y BDD facilitan la automatización de pruebas de aceptación.
  • Criterios de aceptación bien definidos son la base para pruebas de aceptación exitosas.

Descripción Técnica Compacta

Las pruebas de aceptación son actividades que evalúan si un sistema cumple los requisitos acordados y está listo para entrar en producción. A diferencia de las pruebas técnicas, que suelen verificar la implementación interna, las pruebas de aceptación se basan en casos de uso y se orientan a las necesidades del usuario final.

Las pruebas de aceptación constituyen el último paso del proceso de testing. Se ejecutan una vez completadas las pruebas de sistema e integración. El resultado determina si el cliente aprueba o rechaza la aplicación.

Tipos de Pruebas de Aceptación

User Acceptance Tests (UAT)

Las pruebas de aceptación del usuario las realizan los usuarios finales o departamentos responsables en un entorno realista. Validan que el software respalda los flujos de trabajo diarios y produce los resultados esperados. El UAT es la forma más común de pruebas de aceptación.

Business Acceptance Tests

Los departamentos de negocio o product owners ejecutan estas pruebas. Verifican que la aplicación cumple los requisitos empresariales y genera el valor deseado. El enfoque se centra en procesos de negocio y ROI.

Contract Acceptance Tests

Validan el cumplimiento de criterios acordados en contrato. Son especialmente importantes con proveedores externos. Los criterios deben estar definidos en el contrato y ser objetivamente medibles.

Operational Acceptance Tests

Verifican aspectos operacionales como respaldo, recuperación, monitoreo, logging y escalabilidad. Típicamente los ejecuta el equipo de infraestructura y aseguran que la aplicación es manejable en producción.

Compliance Acceptance Tests

Validan el cumplimiento de requisitos legales y normativos. Incluyen protección de datos, accesibilidad y estándares de industria. Son especialmente críticas en sectores regulados como finanzas y sanidad.

Formulación de Criterios de Aceptación

Los criterios de aceptación son la base de las pruebas de aceptación. Definen cuándo una característica se considera completa y aceptable. Los buenos criterios cumplen con:

  • Claridad: Todos los implicados los entienden igual. Sin ambigüedades.
  • Testabilidad: Se pueden evaluar con sí o no. Sin juicios subjetivos.
  • Medibilidad: Contienen valores concretos o condiciones, como tiempo de respuesta menor a 200ms.
  • Relevancia: Describen funcionalidades realmente importantes, no detalles secundarios.

Formato Given-When-Then

Un formato probado para criterios de aceptación es Given-When-Then. Describe la precondición (Given), la acción (When) y el resultado esperado (Then). Este formato es legible por máquinas y puede automatizarse con herramientas BDD como Cucumber.

ATDD y BDD

Acceptance Test Driven Development (ATDD)

ATDD escribe las pruebas de aceptación antes de la implementación. El equipo se reúne con el cliente para definir qué criterios debe cumplir la característica y los formula como pruebas. Solo después comienza la implementación. Esto garantiza que todos tienen el mismo entendimiento.

Behavior Driven Development (BDD)

BDD extiende ATDD añadiendo una descripción del comportamiento en lenguaje natural. Las pruebas se escriben en formato Given-When-Then en herramientas como Cucumber, SpecFlow o Behave. Estas descripciones son comprensibles tanto para el cliente como para los desarrolladores y pueden ejecutarse de forma automatizada.

Ejemplo Práctico

El siguiente ejemplo muestra criterios de aceptación en formato Given-When-Then para autenticación de usuarios. Elegimos este ejemplo porque es una característica común y fácil de entender que ilustra todos los aspectos de las pruebas de aceptación: escenarios positivos y negativos, precondiciones claras y resultados medibles.

Feature: Autenticación de usuario

Escenario: Autenticación exitosa
  Given un usuario con nombre de usuario y contraseña válidos
  When inicia sesión
  Then se redirige a la página principal
  And se muestran sus datos personales

Escenario: Autenticación fallida
  Given un usuario con contraseña inválida
  When intenta iniciar sesión
  Then se muestra un mensaje de error
  And se deniega el acceso

¿Por qué este ejemplo?

  • Dos escenarios: El caso positivo muestra la autenticación exitosa, el negativo muestra el caso de error. Ambos son importantes para la aceptación.
  • Given-When-Then: La estructura es comprensible tanto para el cliente como para desarrollo.
  • Medible: La redirección a la página principal y el mensaje de error son verificables objetivamente.
  • Automatizable: Con Cucumber o herramientas similares, estos escenarios se pueden ejecutar directamente como pruebas automatizadas.

Ventajas y Desventajas

VentajasDesventajas
Delimita claramente cuándo una característica está completaFormular buenos criterios de aceptación requiere experiencia
Mejora la comunicación entre cliente y desarrolloEl UAT manual requiere mucho tiempo
Reduce malentendidos antes de la implementaciónEl cliente no siempre está disponible para pruebas
Demuestra el cumplimiento de requisitosAutomatizar pruebas de aceptación puede ser costoso
Mayor satisfacción del usuarioEl entorno UAT debe asemejar la producción
Feedback temprano mediante ATDD y BDDCapacitación necesaria para herramientas BDD

Herramientas Importantes

  • Cucumber: Framework BDD que describe y automatiza escenarios Given-When-Then en lenguaje natural.
  • SpecFlow: Framework BDD para .NET, similar a Cucumber.
  • Behave: Framework BDD para Python.
  • JBehave: Framework BDD para Java.
  • FitNesse: Herramienta basada en wiki para pruebas de aceptación.
  • Postman: Para pruebas de aceptación de APIs con suites automatizadas.

Mejores Prácticas

  • Comienza pronto: Formula criterios de aceptación antes de la implementación.
  • Involucra al cliente: Las pruebas de aceptación solo son valiosas si el cliente participa.
  • Empieza en pequeño: No automatices todas las pruebas, comienza con escenarios críticos.
  • Entorno similar a producción: El UAT debe ejecutarse en un entorno que se asemeje a producción.
  • Documenta: Registra los criterios de aceptación y resultados para mantener la trazabilidad.
  • Repite regularmente: Ejecuta nuevamente las pruebas de aceptación ante cualquier cambio relevante.

Puntos clave para el examen

  • Acceptance Test: prueba que valida si el software cumple con los requisitos desde la perspectiva del usuario.
  • Tipos: UAT, Business Acceptance, Contract Acceptance, Operational Acceptance, Compliance Acceptance.
  • UAT: User Acceptance Testing realizado por usuarios finales o departamentos funcionales.
  • Criterios de aceptación: condiciones concretas que una funcionalidad debe cumplir para ser aceptada.
  • Características de buenos criterios de aceptación: claros, comprobables, medibles, relevantes.
  • Given-When-Then: formato para criterios de aceptación con precondición, acción y resultado esperado.
  • ATDD: Acceptance Test Driven Development escribe los tests de aceptación antes de la implementación.
  • BDD: Behavior Driven Development describe el comportamiento en lenguaje natural como tests.
  • Cucumber: herramienta BDD que automatiza escenarios Given-When-Then.
  • Operational Acceptance Test: valida aspectos operativos como backup, monitoreo y recuperación.
  • Compliance Acceptance Test: valida requisitos legales y regulatorios.
  • UAT Environment: entorno de prueba que se asemeja a producción y se utiliza para acceptance tests.

Fuentes principales

  1. https://www.istqb.org
  2. https://cucumber.io/docs/bdd/
  3. https://en.wikipedia.org/wiki/Acceptance_testing

Preguntas frecuentes

¿Qué es un acceptance test?

Un acceptance test valida si el software cumple con los requisitos acordados desde la perspectiva del usuario. Es el último paso en el proceso de pruebas y determina la liberación del software.

¿Quién realiza el UAT?

Los User Acceptance Tests los realizan usuarios finales, departamentos funcionales o Product Owners. Prueban en un entorno realista si el software respalda sus flujos de trabajo.

¿Qué es ATDD?

Acceptance Test Driven Development escribe los tests de aceptación antes de la implementación. El equipo formula los criterios con el departamento funcional antes de comenzar el desarrollo.

¿Qué son los criterios de aceptación?

Los criterios de aceptación son condiciones concretas y medibles que una funcionalidad debe cumplir para ser aceptada. Deben ser claros, comprobables, medibles y relevantes.

¿Qué es un UAT Environment?

Un UAT Environment es un entorno de prueba que se asemeja lo máximo posible a producción. Se utiliza para los User Acceptance Tests para garantizar resultados realistas.

¿Se pueden automatizar los acceptance tests?

Sí, con herramientas BDD como Cucumber, SpecFlow o Behave se pueden automatizar los acceptance tests en formato Given-When-Then.

¿Cuál es la diferencia entre UAT y prueba de sistema?

La prueba de sistema valida requisitos técnicos y la realiza el equipo de QA. El UAT valida desde la perspectiva del usuario y lo realiza el departamento funcional.

¿Qué es un Operational Acceptance Test?

Un Operational Acceptance Test valida aspectos operativos como backup, recuperación, monitoreo, logging y escalabilidad. Lo realiza el equipo de operaciones.

¿Qué es un Compliance Acceptance Test?

Un Compliance Acceptance Test valida si se cumplen los requisitos legales y regulatorios como protección de datos, accesibilidad y estándares de la industria.

¿Cómo formular buenos criterios de aceptación?

Deben ser claros, comprobables, medibles y relevantes. El formato Given-When-Then ha demostrado ser efectivo porque es comprensible para todos los involucrados y automatizable.

¿Qué es BDD?

Behavior Driven Development describe el comportamiento del software en lenguaje natural como tests. Utiliza el formato Given-When-Then y permite la automatización con herramientas como Cucumber.

¿Cuál es una ventaja de los acceptance tests?

Demuestran que el software realmente cumple con las necesidades del usuario, reducen malentendidos y proporcionan una definición clara de cuándo algo está listo.

¿Cuál es una desventaja de los acceptance tests manuales?

Son consumidores de tiempo y dependen de la disponibilidad de los departamentos funcionales. Además, son difíciles de repetir y no escalan bien.

¿Cuándo está lista una funcionalidad?

Una funcionalidad está lista cuando cumple todos los criterios de aceptación y ha pasado los acceptance tests. Esa es la Definition of Done.

¿Qué es un Acceptance Test en Scrum?

En Scrum, un acceptance test valida el Product Increment contra los criterios de aceptación de un Backlog Item. Determina si el elemento se considera Done.

¿Cuál es la diferencia entre ATDD y BDD?

ATDD escribe los acceptance tests antes de la implementación. BDD extiende ATDD añadiendo descripciones en lenguaje natural en formato Given-When-Then, que son automatizables.

¿Qué es un Business Acceptance Test?

Un Business Acceptance Test lo realizan los departamentos de negocio o Product Owners y valida si el software cumple con los requisitos de negocio y proporciona el valor esperado.

¿Qué es un Contract Acceptance Test?

Un Contract Acceptance Test valida que se cumplan los criterios acordados en el contrato. Estos criterios están definidos en el contrato y deben ser objetivamente medibles.

¿Qué herramientas existen para acceptance tests automatizados?

Cucumber, SpecFlow, Behave y JBehave son frameworks BDD. Postman es adecuado para acceptance tests de API. FitNesse es una herramienta basada en wiki.

¿Qué es la Definition of Done?

La Definition of Done es un acuerdo sobre cuándo se considera una funcionalidad como completa. Incluye criterios de aceptación cumplidos, acceptance tests pasados y documentación finalizada.

Continúa en la ruta de aprendizaje de Software Testing

El siguiente artículo en la ruta de aprendizaje de Software Testing aborda Load Testing — cómo Load Testing verifica el rendimiento bajo carga.

Volver al blog
Share:

Nächster Artikel in Calidad de Software

Weiterlesen
CI/CD y Testing: Calidad Automatizada

Entradas relacionadas