lunes, 22 de marzo de 2010

Anécdotas de la vida real… o por qué debe probarse el software

Además de todo lo que dice la teoría y lo que podamos pensar los que llevamos adelante la práctica, esto es un aporte personal de un amigo que sufrió recientemente un defecto durante una compra “por Internet”.  En su caso terminó bien, pero el escenario pudo haber sido totalmente diferente… y ésta es sólo una de tantas historias parecidas…

-------------------------------------------------------------------------------------------------------------------------

Esto es algo que me pasó la semana pasada haciendo una compra por Internet, que creo que ejemplifica bien los riesgos de no probar adecuadamente el software.

Hice una compra en un sitio de Internet, y una vez elegido el artículo que quería marqué Check Out para concretar la operación y comencé a seguir los 4-5 pasos: forma de pago (tarjeta), dirección para el envío, método de envío, etc.

Eventualmente llegué a lo que debía ser la última pantalla, que ya no era del sitio de comercio electrónico sino del banco (cargó desde otro servidor). La página ya la había visto antes y es un pedido de autorización de operaciones de comercio electrónico, que pide simplemente una contraseña. El problema es que no tenía conmigo dicha contraseña, ya que inexplicablemente esta página sólo me la encuentro de cuando en cuando.

Por eso, preferí abortar la operación (había dos botones: Aceptar y Cancelar) y volver a hacer el pedido más tarde cuando tuviese todo conmigo. Entonces, le di a Cancelar.

'Muchas gracias por su pedido! En breve recibirá un correo con los detalles del mismo.'

Mh?

Pensé 'bueno, será un error de interface entre ambos sitios, seguramente el banco habrá cancelado, pero el sitio habrá pensado que salió por OK y por eso me muestra esto' (lo cual de todos modos habría sido un error, pero hasta aquí sin heridos).

Me distraje con alguna otra cosa y como a la media hora oí un mensaje en el teléfono móvil. Fui a ver qué era y... 'Su pedido ha sido despachado! Muchas gracias por su compra.'

Eehh?!

Ahora sí que no entendía nada. Yo nunca había autorizado la operación (más allá de que había querido hacer la compra, y seguía interesándome, con lo cual esto es sólo una anécdota). Pensé 'bueno, irá a rechazarla el banco, les hago una transferencia luego a los vendedores, y todos felices'.

Les puse un correo a los vendedores, diciendo exactamente esto y me olvidé. Llegó la respuesta: 'No se preocupe, si enviamos el artículo es porque hemos podido cobrarlo'. ¿Aparecerá el rechazo en un par de días entonces? ¿Es imposible que todo termine bien, no? Si después de todo yo nunca puse la contraseña...

Pues el final de esto es que hoy me encuentro con el débito en la cuenta del banco, o sea, en efecto, dándole a Cancelar, la operación siguió su curso normal y llegó a término.

Nuevamente, en mi caso es sólo una anécdota porque la compra la habría hecho de todos modos, pero no pude evitar quedarme pensando... ¿y si hubiese sido otra persona con mi número de tarjeta?! ¿Y si realmente me hubiera interesado cancelar la compra…?

2 comentarios:

  1. Hace muy poco tuve la suerte de presenciar una charla muy entretenida e instructiva de Herbert Thompson, un experto en seguridad informática. Por medio de ejemplos algo triviales y, en principio, casi inocentes explicaba algunos principios básicos en el testeo de seguridad. Y uno de ellos, explicado con el ejemplo de cómo fue posible hackear el sistema de entretenimiento de un avión de pasajeros, es: No se debe testear que haría un usuario, sino qué puede hacer un usuario, que son dos cosas bien distintas.
    La historia que ustedes citan es, cuanto menos, un modelo de algo peor: Sólo se exploró el camino positivo del usuario. No hablemos de una combinación de operaciones rara. O inesperada. La interfase con un servicio a terceros! Sobre disposición de fondos! (Uppss!)

    ResponderEliminar
  2. Así es Raúl. Aunque una cancelación en cualquier paso no debería ser considerada como una operación demasiado inesperada, probablemente la prueba no las haya contemplado o cubierto totalmente.
    Y en especial coincido en el tema de interfaces con terceros, y operaciones de disposición de fondos... he visto en muchos proyectos que temas complejos de probar o "molestos" en cuanto a la organización de las pruebas (solicitudes de ambientes de prueba a terceros, pasaje de simuladores a conexiones reales, etc.), son dejados para el final, y ya sabemos lo que pasa al final...

    Gracias por tu aporte!

    Pilar

    ResponderEliminar