26 de marzo de 2013

Testbash 2.0 : Galumphing

El Testbash 2.0 empezó fuerte. La primera charla de James Bach fue de las mejores. El título ya prometía: Galumphing  

Buscando en el diccionario galumphing puede definirse como:
     To move or run clumsily or heavily.
Aunque la descripción de J. Bach va un poco más al grano:
    Galumphing is a way to explore a phase space with unknown degrees of freedom by exploiting Ashby’s Law of Requisite Variety.

Lo que vino a contarnos J. Bach es una técnica centrada en la búsqueda de bugs importantes, con nombre y apellidos distintos a la "suerte". Normalmente los bugs no se encuentran por casualidad, y describió esta técnica con términos matemáticos como : grados de libertad , complejidad, espacio de muestras, variedad, modelos etc.
La ventaja de usar una técnica en vez de creer en la suerte, tiene múltiples ventajas, a mi entender  la suerte es difícilmente mejorable, mientras que la técnica siempre puede optimizarse. :)

14 de marzo de 2013

Severity/priority/urgency

In order to classify a defect, or an incident severity and priority parameters are critical, and are not critical because they are defect and can impact  our KPIs :) , but to be effective and more efficient. The noise around the issues that impacts our users but are never fixed, the feeling of our customers that must contact user support to fix their problems continuously are the consequences or a "bad triage" or of the no understanding of these parameters.

In terms of severity I find quite useful the TL9000 definition and in terms of priority I prefer the "urgency" definition of ITIL (severity*priority)
But mixing all those fields in the bug report is usually confusing as both have default values and at the end you can find teams that are ruled by severity and others by priority, and in most cases I found priority and urgency are used in the same terms.

So, how can we simplify that without loosing information?

5 de diciembre de 2012

Testing mobile applications (II): Environement


To ensure a successful release of a mobile application you have to keep in mind that we deliver the best as even a single crash in the functioning of the application can irritate the user and may even force them to look for other, for the same purpose. A satisfied customer can make an application a big success

Working with mobile application involves many challenges
▪ Device
▪ Network
▪ Environment
▪ Users
▪ Automation


Environment:
1. Targeted devices
We should ensure that we cover the intended user group. The application should work perfectly for the devices inside the defined target group. For that, QA should understands who uses the app, and make a list of the devices used by the users. It also helps into define the app design.
Also each device has some particular characteristics, QA should be aware of these. The app should have uniformity across all the devices.

6 de noviembre de 2012

Testing mobile applications (I)

Mobile applications are so interesting in the testing area. Platforms are quite different, you have many environment constrains, and a big variety of devices, you can generate an awesome matrix with this data :), and spend days and weeks testing different combinations.

On the other hand, the interaction with the user is so rich that you can create awesome features, using many "hardware" features, and native functionality, something difficult to get for only web applications. You can spend days and weeks or months defining cool features and corner cases to test those features, turning the handset vertical and horizontal, shaking or trying to break the text boxes...

But in the middle of all those cool things we have to keep the focus in the more important characteristic:  THE USER. 
What are the main features, the mobile application users appreciate?:
- The application must be fast in the start-up
- The application must be fast in the responses
- The application must refresh the data fast.
- Fast, fast, fast

It's hard to say but sometimes you can't see the forest for the trees.

Continuos deployment como objetivo de QA

Continuos deployment: Conjunto de técnicas que nos permiten desplegar cambios en producción de forma continuada (frecuencia alta)

“Continuous Deployment is actually deploying every change into production, every day or more frequently.”
  • No es sólo un cambio de herramientas, sino un cambio de cultura.
  • No hay fórmulas mágicas: depende de la organización, hay distintas opciones que funcionan
  • Esfuerzo grande de transformación en el departamento de QA
¿Cómo conseguirlo?
  • Herramientas que automaticen el proceso y la operación
  • Muy buena comunicación entre los equipos involucrados
  • Optimización del tiempo de pruebas

  1. Definir muy bien qué probar dónde
Producto: focus en el componente. Pueden ser pruebas de componente o pruebas de sistema pero enfocadas en una funcionalidad o componente en concreto.
Estabilización: pruebas de sistema. El cambio forma parte junto con otros cambios de la release candidateEsta ventana tiene como objetivo estabilizar la release candidate
Producción: se comprueba que el despliegue sea correcto
2. La automatización juega un papel muy importante, es condición necesaria pero no suficiente:
Producto:
  • Automatizar los casos de test de aceptación
  • Pruebas y análisis "previo" tiene que ser muy fuerte
Estabilización
  • Automatización es clave para la regresión
  • No todos los escenarios o pruebas son automatizables
  • Análisis de riesgos e impactos (no cambios aislados)
Despliegue
  • Automatización de la verificación del despliegue
  • Reducir la incertidumbre: acercar el entorno de pruebas al de producción
3. Es importante ir a buscar los issues
Estabilización:  Buscar problemas derivados del merge del código, impactos con otros cambios.
Staging como parte de la validación

Producción: Buscar problemas derivados de las diferencias entre los entornos de pruebas y producción
Las comprobaciones de producción deben ser mínimas, ya son issues escapados


4. Enfoque 100% en los objetivos de cada fase.
  • Conocer las diferencias de cada entorno de pruebas con el siguiente
  • Contar con conocimiento del resto de equipos (sistemas, devops, desarrollo)
  • Lessons learnt: aprender de las lecciones aprendidas de cada iteración --> resolver los problemas sin excusas
Resúmen:
1. Mantener el foco en el objetivo de cada fase.
2. Invertir en la mejora continua
3. El equipo de release managers deber tener los mismos objetivos --> reducir el esfuerzo de operacion / cambio