jueves, 4 de julio de 2013

¿Hace falta un terremoto?

Al leer tiempo atrás conceptos de BCM (Business Continuity Management) y de ITSCM (IT Service Continuity Management), no pude dejar de relacionar el tema con algunos aspectos de las pruebas de software, la evaluación y mitigación de riesgos y la gestión de servicios en general. 
Esos aspectos están relacionados también con las características / sub-características / métricas de calidad de producto descriptas en los estándares ISO/IEC 25000 SQuaRE de calidad de productos de software y su predecesor ISO 9126, el que pueden evaluarse según el proceso descripto por la norma ISO 14598, con los estándares ISO 20000 que especifican los requisitos de implementación de la gestión de servicios de TI y con la evaluación de expectativas vs percepciones de la calidad de los servicios que analiza ServQual (Ver Referencias [5]).

En definitiva, esos aspectos se relacionan con los requisitos o requerimientos no funcionales (RNFs) de las aplicaciones que construimos y probamos, que deberían reflejar las expectativas de clientes y otros interesados y deberían ser posibles de cumplir vía el diseño de las aplicaciones. 
Lamentablemente, en muchas ocasiones, estos aspectos son ignorados o postergados en los proyectos de construcción de software, hasta que ocurren desastres, accidentes, ataques u otros incidentes más o menos críticos, que no siempre necesitan ser de la gravedad de un terremoto, pero que afectan a la disponibilidad de los servicios de TI, o incluso a la posibilidad o forma de restaurar esos servicios luego de algún evento que ha afectado a su continuidad.

¿Por qué digo que lamentablemente estos aspectos son ignorados o postergados?
Porque suele ocurrir que:

·         Los RNFs no están especificados, detallados y/o cuantificados.
·         Se considera que no es momento de probarlos, porque se puede hacer más adelante, o no son riesgosos, o no hay tiempo antes de salir a producción.
·         Se considera que no es momento de incluirlos en el análisis o diseño de la solución, porque se pueden agregar más adelante.
·         No se ha considerado qué puede ocurrir en ambientes productivos, con mayor interacción de componentes de HW / SW que en los ambientes de prueba.
·         No se ha previsto qué pasa con el crecimiento de tamaño de entidades de datos, y/o no se han previsto mecanismos de depuración de las mismas.
·         No se han previsto mecanismos de recuperación ante caídas, o lo más grave aún, no se ha analizado o diseñado para gestionar transacciones en las aplicaciones que lo requieren. También se considera que esto es algo que puede agregarse más tarde, o que lo provee el software.
·         No se ha planificado quién, cuándo, cómo se actúa ante algún incidente o desastre, o cómo se restaurará la operación normal del sistema, o en qué condiciones de pérdida de información podrá hacerse, o se desconoce incluso si toda la información necesaria está respaldada.
·         No se ha analizado si en función a las características y tipo de solución de software o de servicio ofrecido, existen disposiciones legales o regulatorias que apliquen a la misma.
·         Se considera que todo se resuelve agregando más o mejores servidores / disco / memoria / hardware de comunicaciones.
·         … y seguramente cada uno tiene un conjunto más de ítems que agregar a esta lista, a partir de su experiencia en diversos proyectos y organizaciones…


Mi opinión


Desde nuestro rol en las áreas de Calidad o como líderes de práctica, líderes de equipos, o como testers, es nuestra responsabilidad llamar la atención sobre estos temas al líder de proyecto, cuando consideramos que pueden haber sido descuidados, o no los encontramos representados en los planes de proyecto y/o de prueba. Al menos preguntar. 
Hacen a la calidad de los productos y servicios que estamos colaborando a entregar, y finalmente a la satisfacción de las expectativas de los interesados.
 
Está claro que los requerimientos no los ponemos nosotros, ni podemos constituirnos en los "guardianes de la calidad" impidiendo que se entreguen a producción productos que creemos no están totalmente probados o todavía presentan defectos… por algo hablamos de pruebas basadas en riesgos, de entregar productos con un nivel suficiente de calidad, de priorizar defectos y no corregirlos, de involucrar a referentes usuarios en esa priorización, etc…
Pero también considero que está totalmente en línea con nuestra misión como testers, capacitarnos y "evangelizar" sobre estos conceptos… antes de que nos golpee algún terremoto.

Post originalmente publicado en http://excelza.blogspot.com.ar/ - 11-10-2011

Referencias

1.    www.iso.org
2.    ISO/IEC 25000 SQuaRE
Software Engineering - Software product Quality Requirements and Evaluation
3.    www.itil.org
4.    Implementing ISO/IEC 20000 Certification - The Roadmap (ITSM Library) - Van Haren Publishing
5.    SERVQUAL: A Multiple-Item  Scale for Measuring Customer Perceptions of Service Quality  
6.    ISO/IEC TR 9126-3:2003 - Software engineering — Product quality — Part 3: Internal metrics.

miércoles, 26 de junio de 2013

Software Product Quality Beyond Defects


Hemos publicado un artículo acerca de calidad de producto de software y la evolución de una organización en su intento de lograrla.

En el artículo se muestra un caso práctico y el análisis del mismo.

El articulo lo pueden encontrar en 

Software Product Quality Beyond Defects

La publicación completa la pueden ver en:

Testing Experience



martes, 25 de junio de 2013

El mapa y el camino - Supuestos y realidad



Hicimos nuestra estimación de la prueba, planificamos para lograr el objetivo buscado y nos preparamos a ejecutar.....
Luego viene la realidad, con sus detalles y cambios. 
Podemos adelantarnos a algunas cosas? Sirven los supuestos? 

Se presentan algunas ideas simples a tener en cuenta al estimar el esfuerzo y el tiempo y la posterior planificación de una prueba de producto de software. 
No nos centraremos en estimar, sino en supuestos y riesgos. 
Son pequeñas ayudas de todos los días, para tener en cuenta al desarrollar la estimación y en la posterior planificación del trabajo de prueba.

Proceso de estimación y presupuesto original


Para hacerlo más comprensible, tomemos como escenario una contratación en la modalidad de proyecto de prueba, no "body shopping" y siguiendo un proceso tradicional. La estimación puede (y deseablemente debe) tomar como base, entre otras cosas:
  • El Alcance, que determina la cantidad de trabajo a hacer en función a la cantidad de requerimientos funcionales y no funcionales y contextos a probar
  • Los riesgos y en función de ellos, la rigurosidad de la prueba. 
  • La experiencia o seniority de los perfiles requeridos en el Equipo de prueba y los del resto de los equipos de trabajo intervinientes.
  • El proceso que seguirá el Desarrollador u otro equipo de trabajo, para producir los entregables objeto de la prueba.
  • La calidad esperada de los entregables a recibir.
  • .....

Factores que pueden alteran el presupuesto original

1. Errores propios de la estimación del Equipo de prueba

El equipo puede  introducir errores en su estimación provenientes de:
  • Diferencias entre los estimadores.
  • Interpretaciones equivocadas de la complejidad de las tareas, producto de la poca información disponible al momento de la estimación.
  • .....
Estos desvíos no deberían incidir en más de un porcentaje relativamente bajo, 5% a 10% por ejemplo, del esfuerzo y/o calendario original, y no alterarán el presupuesto original para el Cliente. 
En otras palabras, si a este nivel nos equivocamos, lo tendremos que asumir.


2. Otras fuentes de desvíos

Los siguientes puntos, identifican otras posibles fuentes de desvíos, ya no imputables al Equipo de prueba. 
Cada uno de ellos debería figurar como un Supuesto en el propuesta, de modo que un cambio en el supuesto pueda justificar un cambio en la propuesta original.



Fuentes de Desvío
Desvío que puede generarse
Comentarios
Entregas fuera de fechaEsfuerzo no productivo incurrido por entrega tardía por parte del Desarrollador u otro equipo de trabajo, o bien entrega de menos productos que los planificados, estando el personal de prueba ya asignado.El Equipo de Prueba deberá tratar de utilizar estos tiempos muertos en tareas que puedan adelantarse, si bien esto no siempre es posible.
Desvíos por cambio de Alcance y/o cambio de RequerimientosEsfuerzo y/o tiempo adicional por cambio o extensión de los requerimientos funcionales y/o no funcionales, o contextos de prueba, en cantidad y/o complejidad.
Desvíos por re-trabajo o baja calidad de los entregablesEsfuerzo y/o tiempo adicional por productos entregados al Equipo de Prueba con calidad inaceptable, o incompletos.
La columna siguiente muestra los parámetros y supuestos que se pueden tomar en cuenta para la planificación y para explicitar en la propuesta.
Cantidad de entregas:
-Plan desarrollado en base a una cantidad de entregas determinada. Un indicador de baja calidad es un número de entregas mayor al planificado.

Parámetros de estimación:
-Cantidad de entregas esperadas
-Frecuencia esperada de las entregas
Tiempo de estabilización:
-Calculado en base a una calidad comprometida de la entrega. Una calidad más baja redunda en un mayor tiempo de estabilización.

Parámetros de estimación:
-Tiempos de estabilización planificados
- Desvíos aceptables
Cantidad de Defectos Críticos:
-Defectos críticos abiertos y no corregidos, que impiden la continuidad de la prueba.

Parámetro de estimación:
-Cantidad de defectos críticos esperados
Entrega en fecha, pero no con la calidad esperada:
-Producto con fallas que extienden el tiempo entre la entrega al Equipo de Prueba y la liberación al próximo paso.

Supuesto en la estimación:
-Calidad del entregable recibido igual a la esperada
Capacitación y seniority de los grupos de trabajo:
-Se asumen equipos de trabajo de seniority equivalente; una falla en esa nivelación produce estimaciones erradas por las reiteradas devoluciones de los productos.

Supuesto en la estimación:
-Nivel de seniority esperado de los recursos de los distintos equipos de trabajo
Desvíos por incremento de horas de supervisiónEsfuerzo adicional debido al crecimiento no planificado de la cantidad de recursos del Equipo de Prueba, que causa aumento en la supervisión requerida.Un líder no puede gestionar adecuadamente y en forma simultánea a más de 5 a 8 recursos. Se recomienda que en estos tamaños de equipo, ese líder no tenga tareas operativas asignadas, adicionales a la supervisión.
Desvíos por supuestos incorrectos de otros equipos de trabajoLa estimación de esfuerzo del Equipo de prueba, además de lo detallado, toma en cuenta un porcentual del esfuerzo del Desarrollador u otro equipo de trabajo como base para calcular su esfuerzo.Una estimación errónea del esfuerzo de los desarrolladores arrastra un error también en la estimación de la prueba.

Ejemplo: el esfuerzo de prueba es el 40% del esfuerzo de desarrollo.
Otros desvíos con motivo de extensiones / eventos desconocidas en la planificación originalEl desplazamiento del calendario se impacta con eventos no previsibles en el momento de la planificación original.

Desplazamientos por:
- Licencias del personal por vacaciones.
-Requerimientos del personal por urgencias u otros proyectos.
- ....



3. Conclusión

Lo anterior no pretende ser una lista exhaustiva y se recomienda seguir completándola con la experiencia de cada uno. 

Tampoco es una lista de excusas ante problemas de desplazamientos en los objetivos del proyecto que todos debemos colaborar a que se logren. Simplemente intenta explicar supuestos que solemos hacer y la diferente realidad que podemos encontrar.

Algunas de estas fuentes de desvíos podrán expresarse como riesgos, otras como supuestos,  en nuestras propuestas y compromisos de trabajo con los clientes, pero lo importante es recordarlos  al momento de tener que administrar y explicar cambios a la propuesta original.

Finalmente todo, mapa y camino, formará parte de las lecciones aprendidas para el próximo proyecto. 


Nota: Revisión del artículo originalmente publicado en excelza en marzo 2010.