El cliente que pagó el envío
Una tienda online de Murcia regala el envío desde 50 €. Un cliente compra justo por 50 € y le cobran 4,95 €.
Escribe a atención al cliente, enfadado. El código lo hizo un asistente y alguien lo probó con 80 € y con 20 €. Nadie probó el caso de 50 €.
Al final de esta lección
Nota
Puedo probar el código de la IA con mis propios casos.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Requisito | lo que el código tiene que cumplir, dicho por el negocio | |
| Caso de prueba | una entrada y el resultado que esperas | |
| Resultado esperado | lo que debe salir, según el requisito | |
| Caso límite | una entrada justo en el borde de una regla | 50 € |
| Caso extremo | una entrada rara pero posible | 0 € o texto vacío |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
El resultado esperado sale del requisito
Un caso de prueba tiene dos partes: la entrada y el resultado esperado.
El resultado esperado lo sacas del requisito, antes de ejecutar nada. Si primero ejecutas y luego decides, aceptarás lo que salga. El requisito de la tienda dice "desde 50 €". Por eso 50 € tiene que dar envío gratis.
Pruébalo: el envío gratis
# Requisito: envío gratis en pedidos de 50 € o más. Si no, 4.95 €.
# El asistente escribió esta función.
def shipping_cost(total):
if total > 50:
return 0
return 4.95
# Tus casos: el total del pedido y el resultado que esperas.
cases = [
[80, 0, "normal: muy por encima"],
[20, 4.95, "normal: por debajo"],
[50, 0, "límite: justo 50"],
]
for case in cases:
result = shipping_cost(case[0])
if result == case[1]:
print("BIEN ", case[2])
else:
print("FALLA", case[2], "esperaba", case[1], "y salió", result)
# Corrige la función para que pasen los tres casos.
Tres tipos de caso
Un caso normal es el de todos los días. Un caso límite está justo en el borde de una regla: 50 €, las 14 h, el día 31.
Un caso extremo es raro pero posible: cero, un número negativo, un texto vacío. El asistente suele acertar los normales. Los fallos se esconden en los límites y en los extremos.
Casos para el envío gratis
| Total del pedido | Tipo | Resultado esperado |
|---|---|---|
| 80 € | Normal | 0 € |
| 20 € | Normal | 4,95 € |
| 50 € | Límite | 0 € |
| 49,99 € | Límite | 4,95 € |
| 0 € | Extremo | No lo dice el requisito: pregunta |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Pruébalo: escribe tus casos
# Requisito: un pedido es urgente si se hizo antes de las 14 h.
# La hora llega como número entero, de 0 a 23.
def is_urgent(hour):
return hour < 14
# Añade tus casos: la hora y el resultado que esperas (True o False).
# Escribe al menos un caso normal, uno límite y uno extremo.
cases = [
[9, True],
]
for case in cases:
print("hora", case[0], "esperaba", case[1], "salió", is_urgent(case[0]))
Un error frecuente
Advertencia
Mucha gente cree que basta con pedirle las pruebas al mismo asistente que escribió el código. Si entendió mal el requisito, sus pruebas repetirán el mismo error. Saca tú los resultados esperados del requisito.