Una de las cosas que me he cansado de escuchar es que el testing de software es para aquellos que no son buenos técnicamente, para programadores frustrados, algo menor. Esto se debe entre otros motivos al desconocimiento de la labor de un tester de software, o a no entender realmente lo que implica un buen testing de software.
Para empezar me gustaría contar un poco de que se trata cada uno de los perfiles que mencione mas arriba:
Que es un tester?: El trabajo del tester de software
Un tester es una persona que tiene como tarea la de asegurar un determinado umbral de calidad en una aplicación bajo prueba. Un poco más a lo criollo, es una persona que prueba un programa para encontrar errores y reportarlo.
Que tiene que saber un tester de software?
- Buena comunicación
- Atención al detalle
- Capacidad de aprender rápido sobre el negocio
- Scripting básico
- Bases de datos
- Metodologias agiles
Que hace un tester de software?
Un tester de software hace principalmente tres cosas:
- Escribir casos de pruebas
- Ejecutar casos de pruebas
- Reportar problemas
Dentro de cada una de estas tareas hay muchas sub tareas que no vienen al caso mencionar, pero veamos un poco mas a fondo lo que hace un tester funcional.
Digamos que tenemos que probar una aplicación, por ejemplo, Twitter, dentro de la cual debo poder hacer varias cosas, como ya sabemos, registrarnos, enviar un tweet, borrar un tweet, enviar un mensaje privado, etc.
Dentro de cada uno de los escenarios planteados tenemos varios escenarios alternativos, vamos a ver uno sencillo, que es el de registrarnos. Cuando me registro a una aplicación puedo tener varias opciones, posibles escenarios, tanto exitosos como no exitosos:
Como hacer testing de software
Escribir casos de prueba
Veamos entonces los casos de prueba que puedo escribir para registrar un usuario:
Como podemos ver en la pantalla de registro a twitter, hay varios escenarios que debemos tener en cuenta:
- Registro correcto
- Registro con usuario que ya existe, debe devolver error
- Registro con usuario menor de edad, debe devolver error
- Registro sin ingresar email, debe devolver error
- Registro con email incorrecto, debe devolver error
- Etc
En base a esos escenarios, podemos empezar a escribir los casos de prueba, veamos un ejemplo para el registro de un usuario que ya existe:
Ejempl de caso de prueba
Precondicion:
- Existe un usuario con el email test@test.com
- No estamos logrados en la aplicación
Pasos:
- Ingreso a twitter.com
- Presiono el botón de registro
- En campo nombre ingreso “test”
- En campo email ingreso “test@test.com”
- En fecha de nacimiento ingreso una mayor a 18 años en el pasado
- Presiono el botón registro
Resultado esperado:
- Se muestra un error diciendo que el usuario ya existe
Ejecutar casos de pruebas
Bueno, ya tenemos un caso de prueba escrito, ahora es la hora de ejecutar los casos de prueba. Supongamos entonces que los desarrolladores nos avisan que la funcionalidad esta lista para ser probada, entonces, solo nos resta reportar si esta todo funcionando o no.
Para ello, debemos seleccionar los casos de prueba relacionados a la funcionalidad que queremos probar, y armar nuestro plan de pruebas.
En este caso, vamos a ejecutar todo lo que mencionamos en el apartado anterior, esto es, seleccionar cada uno de los casos de prueba, agregarlos a nuestro plan de pruebas y empezar la ejecución.
Al final del día deberíamos tener algo del estilo:
- Caso de prueba 1: PASS
- Caso de prueba 2: PASS
- Caso de prueba 3: FAIL
- Caso de prueba 4: PASS
De esa forma, nuestro reporte indicaría que funcionalidades están funcionando bien, y cuales no.
Reporte de bugs
El reporte de bugs, no es mas que reportar los problemas encontrados, de forma de crear un incidente por cada uno de estos problemas para que nuestro equipo de desarrollo pueda solucionarlo. Una vez que un error es reportado, se crea un incidente sobre el cual se puede hacer seguimiento hasta su cierre.
- Un reporte de bugs debe contener minimanente:
- Un Titulo
- Una descripción del problema
- Las premoniciones para reproducirlo
- Los pasos para reproducirlo
- El resultado esperado
- El resultado obtenido
- Un link al caso de prueba para referencia
- Una prioridad
- Una severidad
- Ambiente
Testing automatizado
El testing automatizado es el encargado de programar acciones para que en lugar de tener que ejecutarlas a mano, la ejecute un robot, el cual puede interactuar con una aplicación como si fuera un humano, e identificar cualquier tipo de error.
Básicamente, lo que hace un tester cuando automatiza pruebas, es crear un programa que ejecuta los pasos creados en la etapa de escritura de casos de prueba funcionales.
Para ello se pueden utilizar diferentes herramientas, siendo Selenium Webdriver una de las mas populares, y diferentes lenguajes de programación, como java, python, javascript, etc.
Por lo tanto, un tester que quiera aprender automatización de pruebas, debe ser alguien que ademas de contar con las capacidades de un tester funcional, debe conocer de:
- Programación orientada a objetos
- Patrones de diseño
- Selenium Webdriver para pruebas web
- Appium para pruebas en celulares
- TestNG/Pytest/Etc
- BDD
- SQL
- Git
- Maven o similares
- CI/CD
Si te interesa aprender mas sobre testing automatizado te recomiendo que leas el articulo que escribo al respecto sobre como automatizar pruebas de software.
Es importante recalcar que dentro del testing automatizado hay otros subgrupos como el testing de APIs.
Testing de performance
El testing de performance es otro tipo de testing, que nos permite realizar pruebas sobre nuestras aplicaciones, para ver como las mismas se comportan frente a determinada carga de usuarios.
Por que es importante el testing de performance
Supongamos que somos una empresa grande que vende artículos, y que tenemos una promoción esta para salir a venderse, donde todos los que ingresen a comprar durante el black Friday van a tener un 20% de descuento en todos nuestros artículos.
Entonces, no solo armamos la promoción, le pagamos al departamento de marketing, si no que también publicitamos en television, internet, radio, etc.
Llegado el día, a la hora donde comienza la promoción, cientos de miles de usuarios entran a nuestro sitio queriendo dejar sus dolores para llevarse nuestros productos cono descuentos.
Parece un plan excelente, pero lamentablemente nuestro sitio no esta preparado para soportar esa cantidad de usuarios, y la aplicación explota, dejando miles de usuarios sin el producto, escribiendo malas reseñas en twitter y gastando su dinero en la competencia.
Una completa pesadilla que se podría haber evitado realizando las pruebas correspondientes antes de atraer tanto publico a nuestro sitio.
Un tester de performance, es un tester de software más técnico, que básicamente realiza pruebas para medir cómo la aplicación se va a comportar de acuerdo a diferentes escenarios.
Tipo de pruebas de performance
Pruebas de carga
Este tipo de pruebas se utiliza para determinar cómo se comporta la aplicación bajo prueba, bajo un numero de usuarios esperado. Supongamos que esperamos una carga de 1000 usuarios por hora en nuestra aplicación, este tipo de pruebas entonces nos ayuda a determinar si nuestra aplicación va a soportar esa carga, sin romperse, sin leaks de memoria, sin picos de CPU, etc.
Pruebas de estrés
Este tipo de pruebas nos ayuda a determinar como se va a comportar nuestra aplicación bajo prueba cuando la misma recibe una carga mucho mayor de la esperada. Es decir, que ocurre si nuestra aplicación en vez de 1000 usuarios por hora, recibe 25000 por hora durante un evento especial. Como escala esa aplicación? Como se comporta el CPU, la memoria?
Pruebas de capacidad
Las pruebas de capacidad nos ayudan a determinar cuando una aplicación se rompe, es decir, nos ayuda a encontrar el limite, el cuello de botella que impide que nuestro flujo de usuarios o transacciones siga aumentando.
Muchas veces ayudan a determinar si necesitamos escalar horizontal o verticalmente, ya sea con nuevos o mejores servidores, memoria, cpu, bases de datos, etc.
Como aprender testing de software
Bien, si te viene gustando lo que venís leyendo, y llegaste hasta acá, seguramente quieras dedicarte a ser un tester de software en el futuro. Seguramente te estes preguntando como empezar, como aprender testing.
Cursos online de tester de software
Hoy en día existen varias plataformas que ofrecen cursos online de testing para todos lo niveles. Es un buen punto de comienzo ya que tiene un bajo costo en comparación con academias tradicionales y podemos ir haciéndolo a nuestro ritmo.
Algunas de las plataformas que podemos utilizar son Coursera, Udemy, Skillshare, etc.
Cursos de testing a distancia
Existen muchas academias de renombre que ofrecen cursos de testing a distancia, ya sea para aprender desde cero, o para niveles avanzados. Estas academias también ofrecen certificaciones o ayudan a obtener certificaciones como la ISTQB.
Buscar trabajo como trainee
Si te interesa aprender a ser un tester de software, la buena noticia es que muchas empresas ofrecen entrenarte de forma totalmente gratuita. Mejor dicho, incluso de pagan para hacerlo! En la empresa para la cual trabajó por ejemplo solemos hacer esto para fomentar la carrera de profesionales del testing.
Si estas interesado, también te puede interesar mi articulo sobre como escribir un curriculum si no tenemos experiencia.
Y de más esta decir, que me podes dejar cualquier duda por acá, que con gusto voy a responder.