Monday, January 16, 2012

Testing, Mentiras y Verdades.

Estoy peleado con la visión simplista que cualquiera puede probar una aplicación, pues no le hace justicia a nuestra profesión tan llena de retos. Tampoco estoy de acuerdo con aquellos testers que se suben a un pedestal ( o se montan en su macho) y se creen dueños de la calidad de un producto, con super poderes para bloquear la salida a producción de un software que tiene baja calidad. Y mucho menos comulgo con aquellos que dicen requerir especificaciones/requerimientos exhaustivos para probar un software, so pena de negarse a empezar su trabajo.

A lo largo de mi carrera he oído con cierta frecuencia que "Cualquiera puede hacer testing (manual), al cabo es bien fácil, nomás sigues el caso de prueba", o "No es necesario probar la aplicación". Y aún, recientemente, se requirió la colaboración de 5 programadores para un proyecto de testing que ya iba atrasado: La cara que pusieron lo dijo todo, pero aún así, no se hicieron esperar sus peroratas de "que flojera, todavía fuera automatizado" y cosas por el estilo.

Lamento decirles, señores, pero ese es un sólo una técnica de testing manual: el basado en Casos de Prueba o scripts. Es muy 'cuadrado': requiere de mucho esfuerzo pero poca o nula creatividad. El tester rara vez necesita salirse del guión (aunque éste mismo lo haya escrito), y tiende a no percibir otras fallas obvias, ya que está enfocado a un resultado esperado a la vez. Es bastante miope.

Entre otras bellezas, (los testers) nos encargamos de maximizar el conteo de defectos, ayudamos a los Managers a tomar decisiones de cuando liberar o no un software a producción, a minimizar los costos de soporte técnico, evaluar si el producto está conforme a especificaciones y leyes regulatorias, a encontrar flujos de la aplicación libres de errores, evaluar la calidad y verificar si el producto está implementado correctamente. Para ello nos valemos de todo un catálogo de herramientas disponibles o desarrollamos las propias a la medida de las necesidades del Cliente. Si, leyó usted bien. Desarrollamos. No todos, mas al parecer la tendencia es que los testers programemos.

Hay por otro lado, los testers que se creen la última línea de defensa. Son lo que Lis Hendrickson llamó "guardianes" de la calidad, quienes alegan ser a los únicos que les importa. Esa actitud resulta en dos efectos negativos, a saber: logra excluir los esfuerzos del resto del equipo, frustrando a todos aquellos que se esfuerzan por lograr un producto de mayor calidad; es también una lamentable excusa para aquellos miembros del equipo que se creen muy ocupados para pensar en la calidad, al fin los testers ya tomaron la estafeta, enemistándose con medio mundo en el proceso. Aún más, al asumir el poder de veto sobre un producto, terminan tomándose atribuciones que no le van, porque debería ser el project manager quien sopesa riesgos y conflictos. Nadie más.

En ausencia de una especificación clara, o dada con antelación, es que utilizamos nuestras habilidades investigativas, en combinación de técnicas como pruebas exploratorias. Sobre todo en contextos de desarrollo ágil, donde el grupo de desarrollo prefiere no tener una especificación detallada, ni siquiera documentar de manera excesiva potenciales cambios. Esto implica el reto de crear pruebas basadas en cualquier información que llegue a nuestras manos, empapándonos del dominio de la aplicación. Como proveedores de un proyecto, no podemos rehusarnos a trabajar. Si acaso a pedir más aclaraciones; a utilizar técnicas de prueba en ambientes dinámicos; a estar en más comunicación con el cliente y con desarrollo, dándoles retroalimentación sobre el software en desarrollo.

Estas tres o cuatro mentiras sobre el rol del tester son las más frecuentes en mi práctica profesional, y las que más me causan comezón cada vez que las escucho. Estamos tan acostumbrados a proyectos con CMMi y sus mejores prácticas que cuando nos cae un proyecto poco documentado a la bandeja, tendemos a sentirnos desamparados. Es mi sincera opinión que debemos empezar a basar nuestras pruebas en cualquier dato podamos obtener.

Wednesday, January 11, 2012

Test is dead, o eso dicen, parte II.

Al fin supe por qué dice el Alberto Savoia que el testing está muerto.

Resulta que en el estudio hecho por Elizabeth Hendrickson sobre trabajos de QA, salió a colación el tema. Dicho estudio, intitulado "¿Tienen que programar los testers? ("Do Testers Have to Write Code"), lleva dos años realizándose y es resultado de examinar vacantes de testing en Estados Unidos. La abrumadora conclusión es que el 80% ( y 85% este año) de los empleos requiere alguna habilidad de programación. Queda pendiente un estudio similar para México, pero me aventuro a pronosticar que ni siquiera el 50% de los trabajos de testing requiere programación.

Finalmente, el artículo hace mención de la plática del Beto. Vestido de calaca, afirma que .el reto más grande no es desarrollar la aplicación correctamente, sino la aplicación correcta. Así que lanzan una versión mínima del producto para obtener retro de usuarios finales y clientes de manera rápida. Otro googlero, James Whittaker, en su plática llamada "Todo ese testing es estorboso para un trabajo de calidad (All That Testing is Getting in the Way of Quality)". Jaime explica, al igual que Beto, que Google utiliza a sus usuarios para hacer la mayoría de sus pruebas exploratorias, ya que "(Los) Usuarios juegan mejor el rol de usuarios que los testers, por definición."

Según Joel Spolsky, entre las cinco malas razones para no tener testers, destacan la ii)Mi software está en internet ( y puedo arreglar los bugs en un segundo) y iii) Mis usuarios harán las pruebas por mi. En realidad, google si tiene Ingenieros de Prueba, quienes pasan entre el 20 y 80% del tiempo escribiendo código, según Jaime. Probablemente son las pruebas de caja negra como las conocemos están moribundas. Ergo, El testing está vivito y coleando (pero no tanto).

Por el estudio mencionado arriba, los requerimientos de empleo parecen indicar que, por lo pronto, la mayoría de los testers escriben algo de código. De nuevo, estamos hablando de Estados Unidos, pero, al final del día, ¿No hacemos mucho outsourcing de esas pruebas aquí en México? Tengo la impresión de que el testing en México está en pañales, por experiencias previas con empresas mexicanas, pero eso es tema de un estudio más extenso.