22 de junio de 2012

Continuos Maintenance vs Continuos Improvement

I really don't know in other areas, but in testing is hard to break the barrer of the Continuos Maintenance to go to the Continuos Improvement.

I apply 100% of my effort into the bug detection, because of that I will not improve, and I repeat manually operations continuously because I need to be quick and I have no time to automate. Actually there's a lack of improvement goals.

If you ask for a bad quality metric, right now, everybody will point to the opened issues numbers, but in fact is something easily measurable and is easier to measure than the improvement in the process.
The improvement can be measured, is just more complex. 

But that could be really useful is to be able to identify an indicator concern the level of "Continuos Maintenance" of the process. For instance:
  • Number of issues detected in the release candidates
  • Bugfixing time
  • Issues distribution per phase
  • Issues distribution per component
Those numbers measured in the time line and comparing with historical data can give us the clue. Ideally when you apply a model to a process you're looking for the predictability of it, but if it's 100% predictable...does it mean that is in "Continuos Maintenance" mode?, maybe we're not improving enough. 

To summarize: if we've reach our full capacity, next step is improve that, and in the meanwhile maybe we decrease a bit the quality perceived, but without any internal investment we'll not be able to support changes... so keep some coins for the improvement



4 de junio de 2012

El valor del testing en el negocio



Merece la pena recordar los términos "Cost of Quality" y "Cost of Poor Quality".
Basicamente el Coste de Calidad es lo que se invierte en testing y gestión de defectos mientras que el Coste de la Pobre Calidad es lo que nos cuesta resolver los defectos + el impacto de estos




El Coste de la calidad es medible de forma directa 


COQ = tiempo * Esfuerzo invertido


El Coste de la pobre calidad sólo puede ser estimado 


CPQ = tiempo en resolver los defectos * Esfuerzo de desarrollo * Impacto en imagen + Impacto en los clientes + Penalizaciones por incumplimiento del servicio.


Suele salir rentable la inversión en calidad como tal, puesto que el coste de la "Poor Quality" ronda el N-veces la inversión en calidad.


Algunas "Malas prácticas" al respecto:
- Deja de estar "de moda" el testing y es el primer sitio de donde recortar, se delega en la responsabilidad de cada developer y en el ownership. Como punto positivo es que bien planteado desarrollador y tester son la misma persona, como punto negativo es que es necesario un equipo altamente comprometido, cualificado y sin presiones de negocio... vamos un equipo de universitarios para un proyecto de investigación del que no dependan vidas.
- Outsourcing 100% del equipo de  calidad: el equipo de calidad es un equipo de testers a sueldo que se ciñen a la ejecución de tests y reporte de defectos, sin pensar en la eficiencia.
- Se opta por los riesgos no cuantificables, probables y de alto impacto en vez del gasto controlado y cuantifiacable
- Se consume el tiempo de testing en desarrollar más código sin dar tiempo a la estabilización y se fuerza a reducir al mínimo la parte de pruebas, no porque no se haya pagado el esfuerzo sino que se opta por descartar esos resultados.


¿Alguna más?. 

30 de mayo de 2012

Tester presionado ..... tester que no reporta

El testing puede ser estudiado  y ejecutado de forma sistemática. Hay conocimiento volcado en los libros y existen esquemas de certificación para dar prueba de ello (ISTQB, ISEB, GTB). 

Pero para el tester o el test engineer que trabaja en entornos ágiles hay mas actividades. Principalmente:
- Diseño de las pruebas
- Ejecución de las pruebas
- Observar y análisis de resultados. 
- Si además el resultado se desvía de lo esperado, reportar el problema y hacerle seguimiento.
- Automatización de las pruebas
- Gestión del tiempo de las pruebas

El tester aprende ciertas técnicas, las sigue, ejecuta los tests y finalmente genera un reporte de ejecución.  La ejecución de las pruebas es una de las últimas actividades del proyecto, y normalmente se ejerce mucha presión sobre los testers para que den su trabajo por terminado, y esta presión puede llevar a que no se reporten problemas, ya que se persigue el "Done".

Esto no es muy motivador puesto que la presión se ejerce más sobre que se firme el documento a que se complete el ciclo y se aproveche la inversión en calidad que ha habido durante el proyecto. 

Mas que "no hay tiempo para probar" deberíamos pensar en "no hay tiempo para estabilizar", "no queda budget para resolver defectos", o "como no podemos peligrar las fechas enfoquémonos en defectos del tipo X" para conseguir mejorar iterando. Hay que tener claro dónde nos hemos quedado y si hemos errado al estimar que contramedidas hemos de poner en práctica en la siguiente iteración para ser más realistas o reaccionar antes ante una desviación.

25 de mayo de 2012

Quality Gates


Cuando se ve el fin del proyecto, siempre nos encontramos con que la calidad se deja para el último momento. Aunque optemos por las metodologías ágiles y llevemos semanas iterando se prioriza el completar las funcionalidades. Para facilita el "cierre de proyecto" y motivar a los equipos sobre la prioridad de la calidad un término utilizado es el de Quality Gate.


Quality Gate: criterios a cumplir para pasar a la siguiente fase del proyecto. 
Las Quality Gates se negocian de antemano con los stakeholders del proyecto, involucrando sobretodo a los stakeholders con más peso en la toma de decisiones (de fechas e inversión) y son, como los SLA de servicio, Compromisos sobre el Nivel de Calidad que deberá tener el software para pasar a la fase de pruebas de sistema y/o por ende no generar un retraso.

Ejemplo de Quality Gates
  • QG3: 0 problemas críticos abiertos
  • QG2: 0 problemas críticos abiertos. <20  de severidad norma
  • QG1: 0 problemas críticos abiertos. <10 de severidad normal. Verificado el funcionamiento correcto en los 3 browsers con más usuarios
Objetivos 
  • Paliar el efecto de "Desarrollo se come el tiempo de pruebas finales", que suele terminar en desastre y retrasos por mala calidad.
  • Mantener a la capa de negocio informada del estado del producto.
  • Y sobretodo....transmitir a desarrollo la importancia de la calidad del producto que están desarrollando, aquí y ahora, sin retrasos, sin dejarlo para mañana, y que es el resultado que se espera de ellos, SIN DEJARLO PARA MAÑANA
 

22 de mayo de 2012

El tester: mejorar la productividad

El testing bien dirigido contribuye positivamente al proceso de desarrollo. Mejora la calidad y reduce el "time to market" por medio de:

  • Hacer que el "objeto" desarrollado esté más cerca del"objeto esperado".
  • Prevención de problemas en producción: ya que los errores se han detectado durante las pruebas y se han resuelto a tiempo.
  • Reducir el impacto: los problemas y las consecuencias son conocidos y puede aplicarse medidas reactivas