Como probar tu aplicación sin morir en el intento

Desarrollar una aplicación para cualquier tipo de plataforma requiere de varios procesos más allá de la programación y diseño, uno de esos procesos que definen el éxito o fracaso de tu aplicación es el proceso de pruebas, intentar encontrar todos los fallos que se pudieron pasar por alto al momento de programar y darles un a solución antes del lanzamiento.

¿Qué son las pruebas de software?

Son básicamente un conjunto de actividades del desarrollo de software, que buscan entregar información objetiva sobre la calidad del software, ahora ¿cual es el objetivo de real de hacer estas pruebas? lo principal es verificar la calidad del producto y revisar el proceso utilizado por las personas responsables del mismo, principalmente se prioriza en encontrar defectos o bugs, aumentar la confianza del resultado final al equipo de trabajo, evitar la aparición de futuros defectos en la plataforma creada y certificar los procesos utilizados analizando fallas e incongruencias.

10 principios para probar software

1. Las pruebas de software no estas focalizadas en el éxito: Cuando se realizan pruebas debes cambiar un poco la mentalidad y hacer todo lo necesario para que la aplicación falle, puede ser con procesos hechos de manera irregular, clics infinitos o comandos en el software.

2. Focalizar su energía en el fallo, en el error, porque esto mejora la posibilidad de encontrar bugs: Cada pantalla, cada proceso, y cada clic se debe pensar como un usuario atípico.

3. Los tester no crean la calidad, les viene dada: La mayoría de los usuarios creen que la calidad del software la determina el tester pero no, la calidad viene desde el proceso de programación, las funciones del tester son descubrir las vulnerabilidades no repararlas.

4. El tester nunca debe asumir la responsabilidad de la calidad de una versión: Como ya lo mencionamos, el que determina la calidad del software no es el tester, asumir que después de la revisión el software esta perfecto es demasiado arriesgado, ya que cuando este esté en producción se enfrentara a distintos aspectos en comparación a los que fue testeado.

5. La misión del testing es informar al equipo con la mejor habilidad posible sobre los problemas que pueden tener impacto en el valor del producto: No es solo un reporte de errores, debe detallarse en que contexto sucedió y de que forma, esta información resultará relevante para enfrentar futuros inconvenientes.

6. La diferencia entre un testing excelente y otro mediocre está en ¿Cómo piensas?:

MUY IMPORTANTE, la diferencia real radica en cuantos tipos de usuarios puedes ser al mismo tiempo, es decir debes pensar que pasará si algún usuario confunde un botón o intenta traer comandos de otros software, en el proceso de pruebas no hay ideas locas, todo puede pasar.

7. La diferencia entre un tester y un turista es que el trabajo de un tester es evaluar algo no solo admirarlo: Nunca se debe asumir nada ni apelar a las obviedades, de nuevo hay que recordar que no sabes en que entorno será instalado el software y es muy complicado tener todas las variables posibles al momento de probar.

8. Es mejor para el trabajo de un tester trabajar con el propósito de demostrar que el software falla que con el objetivo de demostrar que funciona: El objetivo del tester es encontrar el fallo, de no hacerse sería una tarea incompleta, no existen software perfectos.

9. Trabajar entre 30 minutos y una hora realmente concentrado: Muchas veces una revisión superficial o que no se hace a conciencia termina en fallos masivos o errores obvio cuando el software ya está en producción, las pruebas necesitan tiempo y pensamiento lateral.

10. Eres lo que escribes, reportar y comprobar bugs es el trabajo principal de los tester: Muchas veces un problema mal descrito puede terminar en un problema sin resolver, al momento de reportar las problemas debes ser muy específico y claro para evitar que se dañe algo que funcionaba bien o no se arregle algo que necesita atención.

¿Qué tipos de pruebas hay?

Existen dos tipo de pruebas, están las pruebas estáticas que son el tipo de pruebas que se realizan sin ejecutar el código de la aplicación y también están las pruebas dinámicas que son todas aquellas pruebas que para su desarrollo requieren la ejecución de la aplicación.

Dentro de estas pruebas existen dos tipos de pruebas que aplican tanto para pruebas estáticas como dinámicas, las pruebas manuales son las que aplicamos normalmente, basadas en matrices que requieren intervención humana en cambio las automáticas son todas aquellas pruebas ejecutadas a través de un software o un módulo dentro de la aplicación.

Las pruebas también reciben una clasificación dependiendo de sus funciones:

Funcionales

Prueba Unitaria: Enfocada en las unidades de código.

Integración: Prueban que todas las unidades de código funcionen correctamente

Humo: Son pruebas rápidas a nivel general una vez se certifican las anteriores.

Alpha: Son utilizadas en prototipos o en algo que queremos desarrollar con mas esfuerzo a futuro.

Beta: Se ejecutan en un ambiente real cuando teóricamente todo esta correcto.

Aceptación: Relacionadas con el cliente y su entrega.

Regresión: Se utilizan cuando se deben realizar ajustes en módulos existentes.

No Funcionales

Compatibilidad: Testing en browser entre otros.

De Seguridad: Comprueban que la aplicación no se pueda inyectar.

Usabilidad: Relacionadas con el UX/UI.

Internacionalización/localización: Casos de uso con diversas opciones.

¿Cómo lo hacemos en Skina Technologies?

En Skinatech tenemos un esquema de pruebas separado por área y por servicio, una de nuestras principales filosofías es el uso del software libre para nuestras implementaciones y pruebas no es la excepción. Estos son algunas de las herramientas libres que pueden servir al momento de hacer pruebas en tu software:

Bugzilla

Testopia

FitNesse

qaManager

qaBook

RTH (open source)

Salome-tmf

Squash TM