Portafolio personal · Desarrollo web e inteligencia artificialCix Code

Paleta de comandos

↑ ↓ navegar↵ abrirEsc cerrar
Blog
Ingeniería de Software

Qué probar en una transferencia simulada con Flask

Casos de prueba para una simulación bancaria inspirados en los flujos de NORTE.

· 2 min de lectura

NORTE es una simulación bancaria académica con cuentas, movimientos y transferencias ficticias. Ese dominio ofrece un ejemplo claro para practicar pruebas de integración. Una transferencia correcta requiere que el débito, el abono y el registro del movimiento queden reflejados juntos.

Definir qué debe ocurrir

Una prueba útil parte de un estado inicial conocido. Por ejemplo, dos cuentas de prueba tienen 100 y 20 soles. Al transferir 30 soles, los saldos esperados son 70 y 50 y debe quedar el movimiento correspondiente. Si la solicitud supera el saldo disponible, las dos cuentas deben conservar su saldo y no se debe registrar una transferencia exitosa.

También conviene probar importes inválidos, una cuenta destino inexistente y solicitudes de una persona sin autorización sobre la cuenta de origen. La prueba debe comprobar la respuesta HTTP y el efecto sobre los datos.

Probar a través de Flask

El cliente de pruebas de Flask permite enviar solicitudes sin levantar un servidor. Este fragmento ilustra una API de ejemplo. La ruta, el nombre de los campos y el código de error son decisiones del contrato de esa API.

def test_rechaza_transferencia_sin_saldo(cliente, cuenta_origen, cuenta_destino):
    respuesta = cliente.post(
        "/api/transferencias",
        json={"destino": cuenta_destino.id, "importe_centimos": 15000},
    )

    assert respuesta.status_code == 409
    assert saldo_en_bd(cuenta_origen.id) == 10000
    assert saldo_en_bd(cuenta_destino.id) == 2000

El ejemplo envía 150 soles desde una cuenta con 100. El código 409 representa el rechazo previsto por este contrato ilustrativo. Las comprobaciones de saldo detectan cambios parciales aunque la respuesta HTTP sea la esperada.

Incluir fallos y solicitudes simultáneas

Si el abono falla después del débito, la transacción debe revertir el débito. Para reproducirlo, fuerza un error controlado en un entorno de pruebas y vuelve a consultar ambas cuentas. Si dos solicitudes pueden consumir el mismo saldo, prueba también la concurrencia con el mismo motor de base de datos que usaría la aplicación. La transacción agrupa los cambios, pero el resultado concurrente depende de cómo se valida y actualiza el saldo.

NORTE en el portafolio · Pruebas en Flask

Evidencia del proyecto

Captura de NORTEVer el caso de estudio de NORTE