La importancia del QA en equipos ágiles

El rol del QA es de suma importancia en los proyectos ágiles.

No puede terminarse una historia de usuario si no se han realizado las pruebas correspondientes, y sin corroborar el criterio de aceptación.

Pero sus responsabilidades no están limitadas a realizar pruebas. Sino que va más allá .

Debemos tener en cuenta que en proyectos ágiles el testing se realiza durante todo el sprint.

Para conocer mejor el rol del QA en proyectos ágiles te invitamos a que participes al webinar el jueves 11/06 a las 17:30 Arg.

  • Para participar, no se necesitan conocimientos previos, ya que se revisan conceptos básicos previo a abordar el tema.
  • El webinar quedara grabado y accesible a todos los asistentes al webinar.

No dejen de participar, ante cualquier duda contactenos por medio de nuestros diferentes canales.

Testing Funcional

Es un tipo de testing que valida que el software bajo testeo cumpla con los requerimientos.

Generalmente el testing funcional es un testing de tipo “Balck Box” o Testing de caja negra, donde se valida que a determinadas entradas, se obtengas determinadas salidas. Al habla de Black Box testing podemos enumerar los siguientes:

  • Interfaz de Usuario
  • APIs
  • Base de Datos
  • Seguridad
  • Comunicación Cliente-Servidor

Es testing puede ser manual o automatizado.

¿Que se prueba con el Testing Funcional?

  • Funcionalidades relevantes de la aplicación
  • Usabilidad básica, que es usuario puede utilizar la aplicación sin mayores problemas
  • Accesibilidad
  • Condiciones de Error

Ejemplo del proceso de Testing funcional

Tipos de Testing Funcional

Unit Testing: Se testea una unidad o componente de la aplicación G, donde una unidad puede ser un método, modulo, objeto, procedimiento. Generalmente son realizados por los desarrolladores, quien escribe los unit tests que llaman por ejemplo a determinados métodos, donde se valida la salida de esos métodos a determinados parámetros que fueron pasados

Smoke Testing: Se realiza después de un build, para validar la estabilidad de la aplicación. Solo para verificar las funcionalidades críticas de la aplicación cuando el software aún está en una etapa temprana de desarrollo.

Sanity Testing: Se realiza para verificar que las funcionalidades más importantes no se vean afectadas, después de solucionar errores encontrados en la aplicación, generalmente es en una etapa donde la aplicación ya se encuentra en producción.

Integration Testing: Se realiza para validar los módulos, funcionalidades de una aplicación funcionen correctamente en su conjunto.

Regression Testing: Para verificar que después de nuevos módulos, funcionalidades, cambios y/o fixes no se rompa la funcionalidad existente.

Agile Testing

En el mundo de Scrum no solo el proceso total de desarrollo cambio, si no también el enfoque y proceso de QA. El testing empieza mucho antes y el objetivo sigue siendo el mismo entregar un producto que cumpla con los requerimientos.

En este caso vamos a describir un poco lo que se hace en agile testing.

  • Uno de los primeros puntos que se tiene en cuenta es que el testing está a cargo de todo el equipo y no solo de QA. Por esto el trabajo en equipo es muy importante.
  • El segundo punto a tener en cuenta es que la tarea de testing se realiza durante todo el proceso de desarrollo. Es una tarea que no está establecida en una determinada etapa del proceso.

El testing al ser una tareas que se realiza a lo largo del proceso de desarrollo reduce el costo de corregir errores al tener una retroalimentación más rápida que en las metodologías tradicionales.

El hecho de tener una retroalimentación temprana además de reducir el costo de corregir errores también previene errores ya que si se encuentra algún requerimiento incompleto o que no fue especificado se detecta rapidamente.

Todos estos beneficios del Agile Testing ayudan de que el proyecto avance en cada sprint y no se estanque.

Pero para alcanzar estos beneficios se debe trabajar en equipo de manera conjunta tanto desarrolladores como QA, no se consideran partes independiente sino un conjunto donde la colaboración entre todos es fundamental.

La Comprensión de los requerimientos en las historias de usuarios es otro punto importante, los requerimientos deben estar descritos correctamente y todo el equipo debe comprenderlo.

El desarrollador debe tener en cuenta diferentes escenarios a la hora de desarrollar una historia de usuario o parte de ella, así como también debe probar lo que va desarrollando.

También el QA debe tener un entendimiento del código y demás tecnologías que se aplican durante el desarrollo de una historia de usuario. Por otro lado debe tener un conocimiento profundo de los requerimientos de usuarios, así como testing de usabilidad y poder guiar si es necesario a los desarrolladores a lo largo del proceso enfocado en los requerimientos del usuario.

Para poder tener un claro conocimiento de los requerimientos del usuario la comunicación y la capacidad de detectar y priorizar lo que se espera de una historia de usuario es fundamental.

devopsloop_products

Algunas prácticas a tener en cuenta en Agile Testing son las siguientes:

  • Testing Exploratorio: Son las pruebas que se realizan sin planificación y permiten detectar errores teniendo un conocimiento claro de lo que se espera de una aplicación.
  • Testing de Regresión: Cada vez que se realiza un cambio se debe garantizar las funcionalidades existentes. Cada incremento representa un cambio en la aplicación, a su vez estos incrementos se realizan con mayor frecuencia con lo cual una prueba de regresión automatizada es fundamental, ya que con pruebas manuales no se podría terminar una regresión para tener que empezar de nuevo.

Este es un primer acercamiento a lo que es Agile Testing. Ampliaremos en nuestro próximo webinar.

Qué es Ghostlab y como nos puede ayudar a hacer mejor nuestro trabajo

Esta herramienta fue un maravilloso hallazgo. Estaba investigando sobre como podíamos acelerar nuestras pruebas, ahorrando tiempo y dinero, algo que el cliente siempre nos pide, cuando encontré Ghostlab.

Ghostlab es una herramienta que permite ejecutar la misma prueba en distintos dispositivos al mismo tiempo. Imaginen que quieren probar un formulario en tres navegadores distintos y 4 celulares, con Ghostlab pueden hacer todas esas pruebas al mismo tiempo! Esto se llama “Testing responsivo sincronizado”.

Otra característica de la herramienta es que podemos inspeccionar fácilmente los elementos de un navegador específico, esto es posible gracias a una herramienta de inspección incluida en Ghostlab.

Vamos a analizar algunos puntos y al final les dejo un video.

  • Ghostlab sirve para probar sitios web en navegadores y dispositivos.
  • Es una herramienta paga. La licencia tiene un valor actual de $49, y la misma licencia puede ser usada en hasta dos computadores.
  • Disponible para Windows 7+ y MacOS 10.9+ .
  • Ghostlab utiliza los navegadores que tenemos. Por lo tanto si necesitamos hacer pruebas en un navegador que no tenemos instalado Ghostlab no nos sirve.
  • En sitios con restricciones como sesión única no es posible usar Ghostlab. En este caso yo recomiendo que el equipo genere un entorno donde el tester pueda ejecutar las pruebas usando Ghostlab ya que esto ahorrará mucho tiempo de testing, puede ser necesario quitar restricciones en el login. Y por supuesto es necesario tener otro entorno donde los inicios de sesión y cuestiones relacionadas a la autenticación que no pudieron ser probadas en el entorno de testing, puedan ser probadas.
  • En mi experiencia, probando un sitio en un entorno de pruebas, pude conectar como máximo 3 dispositivos al mismo tiempo, con más dispositivos las pruebas se ralentizaban. Considero que no está nada mal de todas formas.
  • Ghostlab es ideal para probar formularios. Imaginen una página de perfil de usuario, para testearla será necesario probar con datos válidos en inválidos, los mensajes de error o tooltips pueden mostrarse mal en algunas resoluciones de pantalla, o según la orientación del dispositivo. Por lo tanto un pequeño formulario puede necesitar muchas horas de testing si queremos probarlo en distintos navegadores y dispositivos.
  • Ghostlab es ideal para hacer pruebas de look&feel con distintas resoluciones de pantalla en distintos dispositivos.
  • Se te ocurre alguna ventaja o desventaja más? En que caso usarías Ghostlab?

 

Hasta la próxima.

Simuladores – Como utilizarlo para dispositivos IOS

Es importante el uso de dispositivos físicos cuando testeamos aplicaciones nativas, pero en el caso que no contemos con todos los dispositivos que necesitamos podemos utilizar emuladores  para el caso de Android o simuladores para el caso de IOS.

En este blog vamos a hablar sobre el uso de simuladores.

¿Qué es un Simulador?

Un simulador es una máquina que reproduce el comportamiento de un sistema en ciertas condiciones.

Un simulador pretende reproducir tanto la velocidad, aceleración y percepción de un entorno en especial, así como el comportamiento de los equipos de la máquina que se pretende simular.

Un Simulador permite rápidamente hacer pruebas de su aplicación durante el proceso de desarrollo.

Simulador le permite simular dispositivos iOS, watchOS. Cada combinación de una versión de sistema operativo y dispositivo se considera su propio entorno de simulación, independiente de los demás.

MAC

Mediante la simulación de la operación de su aplicación en el simulador, se puede:

  • Encontrar grandes problemas en su aplicación durante el diseño y las primeras pruebas
  • Probar la aplicación a través de herramientas para desarrolladores que están disponibles sólo para Simulador

La opción de simulador viene instalado como parte de las herramientas Xcode, y se ejecuta en su Mac. Es necesario contar con una MAC para utilizar el simulador.

Piense en el simulador como herramienta de pruebas preliminares para usar antes de probar la aplicación en un dispositivo real.

Hay dos formas de acceder a través de Simulador de Xcode. La primera forma es ejecutar la aplicación en el simulador, y la segunda manera es poner en marcha simulador sin ejecutar una aplicación.

En el siguiente video les mostraremos como utilizar el simulador.

Cómo utilizar las herramientas de desarrollador web en un iphone – Parte 2

Si algún día tienes que probar un sitio web en un iphone te va a resultar de mucha utilidad acceder a las herramientas de desarrollador. Las mismas herramientas que seguramente usas cuando pruebas un sitio en un navegador de escritorio. Me refiero al inspector de Chrome, o Firefox o Web inspector en Safari.

Estas herramientas permiten examinar un componente de la página (colores, tamaño, tipo, id, etc, etc, etc), examinar los recursos almacenados por la página, tales como cookies, sesiones, etc., examinar las llamadas y sus respuestas a servicios externos, tales como apis. En fin, no voy a profundizar en las utilidades de estas herramientas, quiero mostrarles cómo pueden acceder a los mismo recursos cuando están usando un iPhone.

Les dejo un pequeño video al respecto. Good testing

Tester vs Desarrolladores?

Generalmente se tiene la idea errónea de que el Tester o proceso de testing es encontrar los errores del desarrollador, y no es así. Antes de empezar a describir en detalle el trabajo en equipo, se deben tener en cuenta los siguientes ítems:

  • Ambos trabajan para con un objetivo en común
  • Ambos son parte de un mismo equipo no hay bandos
  • La comunicación es clave en cualquier equipo que persigue un mismo objetivo
  • La colaboración es otro pilar en los equipos de trabajo

Y así podemos seguir enumerando una larga lista de ítems que van a ayudar al equipo a alcanzar nuestro objetivos. Como siguiente paso vamos a describir algunas de las tareas del tester con relación al desarrollador:

  • Colaborar con el entendimiento de la funcionalidad de la aplicación
  • Adelantarse a posible escenarios que generen confusión y que lleguen a resultar en errores en la aplicación o funcionalidad
  • Escribir si es posible los test cases antes de que se empiece el proceso de desarrollo

Las tareas en conjuntos de Testers y Desarrolladores

  • Entregar un producto que cumpla con los requerimientos establecidos
  • Entregar un producto de calidad
  • Entregar el producto a tiempo
  • Etc

Incluso teniendo en cuenta todo lo repasado anteriormente surgen las siguientes situaciones:

  • Un defect se encontró en Producción (ambiente de usuario) generalmente se suele pensar que paso QA entonces el error no fue encontrado por los testers. En estos casos es útil identificar el root cause del defect, ya que si es un defect que no se detecto durante el testing tampoco se considero durante el desarrollo.
  • Una user story tiene muchos defect, se asume erróneamente que la culpa es del desarrollador y en este caso tampoco es acertado, ya que lo que si el tester y el desarollador se reunieron previamente y revisaron la user story deberían estar en el mismo lugar desde lo que implica el desarrollo, en estos casos la comunicación es clave ya sea porque ambos tiene un entendimiento diferente de la user story o ya sea que los requerimientos cambiaron y no están al tanto.
  • Una user story no tiene defects, entonces se asume que el tester no hizo bien su trabajo o falto testing, lo cual tampoco es acertado. En este caso puede ser que ambos tuvieron un entendimiento de lo que la user story debiera incluir y lo que no, etc.

testervsdev

Pueden surgir muchas situaciones como las anteriores en las que se suele buscar culpables lo cual no debiera ser el camino a seguir, como en cualquier trabajo de equipo la responsabilidad es de todo el equipo y tener más o menos defects no mide la cantidad y calidad de trabajo de nadie, el producto final es lo importante y para obtener un producto con calidad se debe trabajar COLABORATIVAMENTE.

Cómo utilizar las herramientas de desarrollador web en un iphone – Parte 1

Si algún día tienes que probar un sitio web en un iphone te va a resultar de mucha utilidad acceder a las herramientas de desarrollador. Las mismas herramientas que seguramente usas cuando pruebas un sitio en un navegador de escritorio. Me refiero al inspector de Chrome, o Firefox o Web inspector en Safari.

Estas herramientas permiten examinar un componente de la página (colores, tamaño, tipo, id, etc, etc, etc), examinar los recursos almacenados por la página, tales como cookies, sesiones, etc., examinar las llamadas y sus respuestas a servicios externos, tales como apis. En fin, no voy a profundizar en las utilidades de estas herramientas, quiero mostrarles cómo pueden acceder a los mismo recursos cuando están usando un iPhone.

El primer paso es tener un Mac.

El segundo paso es habilitar las herramientas de desarrollador en el Safari del Mac. Para esto tienes que ir a Preferencias -> Avanzadas y chequear la opción “Mostrar el menú de desarrollo en la barra de menú”

menu_without_develop
Menú antes de activar Herramientas de desarrollo

Screen Shot 2018-04-19 at 15.23.18.png

Cuando activas las herramientas de desarrollador tu menú debería quedar así:

Menú luego de activar las herramientas de desarrollo

El tercer paso es conectar el iPhone mediante un cable USB al Mac.

Una vez conectado el iPhone al Mac, desde el Safari del Mac, vas a la opción Develop del menú superior y verás tu iPhone conectado. Deberías ver algo así:

Screen Shot 2018-04-19 at 15.39.35.png

Ahora sí podremos inspeccionar el sitio bajo prueba. En la siguiente imagen tengo 3 páginas abiertas en iPhone, y como vemos podría seleccionar cualquiera para inspeccionarla.

Screen Shot 2018-04-19 at 15.41.41.png

Al seleccionar la página deseada se abre el Web inspector “apuntando” a la página que nos interesa. Y empezará a inspeccionar todos los elementos de la misma, llamadas, cookies, etc.

Screen Shot 2018-04-19 at 15.48.24.png

Una vez ahí puedes comenzar las pruebas! enjoy!

 

 

 

 

 

 

 

 

 

 

Casos de prueba, debemos escribirlos o no?

Al comenzar un proyecto en muchas empresas siempre está la pregunta, conviene escribir casos de prueba?

Algunas de las respuestas que solemos escuchar son: “Somos un proyecto ágil, no es necesario”, “No tenemos tiempo”, “Se requiere tiempo para actualizarlos”.

Hay proyectos en los que deciden documentar todo.

Veamos a continuación algunas de las ventajas:

  • El caso de prueba es un documento escrito que cualquier persona del equipo puede leer en cualquier momento para comprender la funcionalidad.
  • Ahorra tiempo de los miembros del equipo, ya que nadie tiene que sentarse y hacer que otra persona comprenda la funcionalidad de la función.
  • El caso de prueba de escritura garantiza la cobertura máxima del producto o la aplicación según los requisitos del cliente.
  • Permiten probar adecuadamente algunas de las funciones complejas del sistema.
  • Escribir caso de prueba ayuda a mejorar la calidad del software.
  • Confiable y repetible. Se obtiene el mismo resultado sin importa qué se pruebe.
  • Se sabe qué requisito se prueba
  • Tiene una descripción del método de prueba
  • Guarda el estado de las pruebas, como informes o capturas de pantalla. Lo que permite contar con un historial de casos de pruebas pasados y fallados por versión o plan de prueba.

Desventajas:

  • Si se modifica alguna función existente, entonces las pruebas relacionadas necesitan ser actualizadas y puede requerir tiempo ya que uno tiene que pasar por la lista completa de casos de prueba y encontrar los casos de prueba que requieren modificaciones.
  • Si alguna característica se vuelve obsoleta, los casos de prueba asociados deben ser limpiados.

Como se ve, son mayores las ventajas que las desventajas.

Pero es importante resaltar que para que se puedan aprovechar sus beneficios hay que dedicarle tiempo para su creación y mantención.

El líder del proyecto o líder de Calidad debe considerarlo al momento de estimar las tareas del Testing.

Y si probamos el nuevo sabor de Android?

Una nueva versión de Android fue anunciada el 7 de marzo del 2018. Por ahora se la conoce como Android P.

Hasta ahora se sabe muy poco sobre esta nueva versión, aunque algunos especulan con su nombre ya que Google siempre nos sorprende con su creatividad! Petit Four, Pound Cake, Pastille, Popsicle, Pancake o Pumpkin/Pecan Pie son algunos nombres que suenan. Pero todavía es muy pronto para conocer el nombre, nos tendremos que conformar con conocer sus nuevas características.

Android_P_9.0_screenshot

Si eres tester o desarrollador tendrás que probar tu aplicación para ver si es compatible con esta nueva versión, y tendrás que hacerlo antes de que la versión esté disponible al público. O sea, este es el momento ideal para comenzar con tus pruebas, y adaptar tu aplicación para que funcione correctamente en esta nueva versión.

Desde este link https://developer.android.com/preview/download.html puedes bajar la imagen para probar utilizando un dispositivo Pixel. Ya sé que es difícil en estas latitudes tener un Pixel! En mi caso usé un emulador desde Android Studio, en el segundo paso de la creación ofrece la posibilidad de instalar la versión de Android P, para esto tienes que tener actualizado tu Android Studio. Pero es muy simple. Una vez que tengas tu emulador creado podrás ejecutar tu aplicación y ponerla a prueba.

Pero que se sabe hasta ahora de Android P? A qué deberías prestarle especial atención en tus pruebas?

  • Más color y mejoras en las notificaciones: iconos más coloridos en el menú de Configuración. A la vez continuan las mejoras en las notificaciones, este es un camino que android comenzó a andar dos versiones anteriores, el de mejorar la experiencia de usuario en lo que a notificaciones se refiere. En esta ocasión apuntan a las smart replies (no se me ocurre una buena traducción), esto es la posibilidad de responder rápidamente una notificación. Ahora también las imágenes y los stickers adjuntos a una notificación podrán visualizarse.

androidP_setting

  • Nuevo control para salida de medios: Google agregó un control de salida de medios adecuado a Android P. Cuando se presiona el control de volumen, aparece el nuevo control. Toque el ícono de medios para ver los dispositivos disponibles y conectados.

androidP_control_media

 

  • Posicionamiento interior: esto me parece realmente novedoso. Android quiere que puedas obtener indicaciones como las que brinda Google Maps, pero para interiores! Para que eso suceda van a utilizar el WiFi Round-Trip-Time (RTT) . Esta función en 802.11mc hará posible que las aplicaciones sepan cuán lejos estás del punto de acceso WiFi al que estás conectado, y los desarrolladores podrán usar esa información para darte una ubicación más precisa en el interior.
  • Reforzando la seguridad: El más grande por el momento es un nuevo sistema de restricción para sensores, cámaras y micrófonos cuando una aplicación está marcada como inactiva. Todos estos sistemas dejarán de informar a la aplicación tan pronto como estén inactivos, y las aplicaciones que busquen información de esas fuentes no recibirán nada. Te has sentido espiado alguna vez por tu celular? bueno, no more!. Esto es un avance importante para garantizar la privacidad de los usuarios.
  • Soporte para múltiple cámaras: no es una novedad que un celular tenga más de una cámara. Lo que sí sería muy novedoso es que todas esas cámaras puedan capturar momentos al instante, o poder capturar retratos en vivo (tal como hace Apple hoy). Además, Google está agregando soporte para aplicaciones que usan estabilización de imagen y flash basado en pantalla al igual que la aplicación de cámara principal en su teléfono. En pocas palabras, las cámaras de terceros seguirán mejorando.

En mi propia experiencia, lamentablemente el emulador con Android P me está dando varios dolores de cabeza, es realmente lento poder probar la nueva versión. Igual seguiré probándola y subiendo actualizaciones sobre Android P.

Hasta la próxima.