¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Historias de usuario y criterios de aceptación

Después de esta lección: Puedo escribir una historia de usuario con sus criterios de aceptación.

Lección de 55 min5 comandosLaboratorio de PostgreSQL y PostgREST: una base de datos y una API REST en el navegador

Qué es una historia de usuario

Una historia de usuario es una frase corta que cuenta qué quiere hacer una persona con el sistema y para qué. Sirve para que el equipo y quien pide el sistema hablen de lo mismo antes de escribir código.

Tiene una forma fija: "Como estudiante, quiero reservar una sala, para estudiar en grupo". Pero una historia sola no dice cuándo está terminada.

Al terminar esta lección

Nota

Puedo escribir una historia de usuario con sus criterios de aceptación.

Palabras clave

PalabraQué significaEjemplo
Historia de usuariouna frase que cuenta qué quiere una persona y para qué
Rolquién usa el sistemaestudiante
Beneficiopara qué quiere la persona esa acción
Criterio de aceptaciónuna prueba que dice cuándo la historia está hecha
Dado, cuando, entonceslas tres partes de un criterio: situación, acción y resultado

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una historia de usuario tiene tres partes

Una historia dice quién, qué y para qué. El rol es quien usa el sistema. La acción es lo que quiere hacer. El beneficio es la razón.

El beneficio importa más de lo que parece. Si no puedes decir para qué sirve una historia, quizá no hace falta construirla.

Ejemplo resuelto: las tres partes de una historia

PartePregunta que respondeEjemplo
Rol¿Quién lo pide?Como estudiante
Acción¿Qué quiere hacer?quiero reservar una sala para una hora
Beneficio¿Para qué?para estudiar en grupo sin hacer cola

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un criterio de aceptación dice cuándo está hecha

Un criterio de aceptación es una prueba con un sí o un no. Se escribe con tres partes: dado que algo es cierto, cuando la persona hace algo, entonces pasa algo que se puede ver.

Una historia suele tener dos o tres criterios. Uno para el caso normal y otros para lo que el sistema debe rechazar. Cuando todos pasan, la historia está hecha.

Ejemplo resuelto: tres criterios de una historia

DadoCuandoEntonces
la sala A1 está libre a las 15la estudiante la reservala API responde 201 y la reserva queda guardada
la sala A1 ya tiene reserva a las 9otra persona reserva A1 a las 9la API responde 409 y no guarda nada
hay reservas guardadasse pide la lista de la sala A1solo salen las reservas de esa sala

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que una historia está completa con el rol y la acción. Sin criterios de aceptación nadie sabe cuándo termina, y cada persona decide a su manera. Añade siempre al menos un criterio que se pueda probar con un sí o un no.

Probar los criterios contra la API

Un criterio se puede probar con una petición. Con psql creas la tabla bookings y con curl haces las reservas.

Vas a probar dos de los criterios de arriba. Una reserva libre debe dar 201. Una reserva a una hora ya ocupada debe dar 409, que significa que choca con otra fila. Primero da a psql la contraseña.

Dar a psql la contraseña

Comando
export PGPASSWORD=shop

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Crear la tabla de reservas

Comando
psql -h db -U shop -c "drop table if exists bookings; create table bookings (id serial primary key, room text not null, student text not null, hour int not null check (hour between 8 and 20), status text not null default 'confirmed', unique (room, hour)); insert into bookings (room, student, hour) values ('A1', 'Lucia', 9), ('A1', 'Marcos', 10), ('B2', 'Irene', 9), ('B2', 'Pablo', 12); notify pgrst, 'reload schema'"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Reservar A1 a las 15 horas

Comando
curl -s -o /dev/null -w "%{http_code}\n" -X POST -H "Content-Type: application/json" -d '{"room":"A1","student":"Nora","hour":15}' "http://api:3000/bookings"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Reservar A1 a las 9, ya ocupada

Comando
curl -s -w "\n%{http_code}\n" -X POST -H "Content-Type: application/json" -d '{"room":"A1","student":"Nora","hour":9}' "http://api:3000/bookings"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pedir solo las reservas de A1

Comando
curl -s -w "\n" "http://api:3000/bookings?room=eq.A1&order=hour"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Sobre este laboratorio y su código: Laboratorio de PostgreSQL y PostgREST: una base de datos y una API REST en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.