Documentos de Académico
Documentos de Profesional
Documentos de Cultura
¿Qué es un QA?
Para resumir en un par de líneas, QA (Quality Assurance) o Aseguramiento de
Calidad, hace referencia a la forma de medir la calidad, no solo del producto, sino
también del proceso de desarrollo.
Existen dos perfiles muy marcados en el mundo del software, los cuales son el Tester y
el QA. Es de suma importancia saberlos diferenciar bien, debido a que son dos roles
totalmente distintos y cada uno tiene sus respectivas responsabilidades.
Tareas de un Tester
• Diseñar el plan de pruebas.
• Definir los casos de prueba en base a los requisitos funcionales, no funcionales y
técnicos. • Test de integración: Definir las pruebas de Integración que se realizarán. •
Generar datos o lotes de prueba.
• Ejecutar los casos de prueba.
• Realizar la documentación de las pruebas (evidencia).
• Registrar los incidentes encontrados durante la fase de pruebas, así como también
realizar su seguimiento para asegurar su adecuada corrección.
• Pruebas avanzadas (carga, estrés, performance, seguridad, etc)
Tareas de un QA
• Diseño y preparación de la estrategia general de Calidad • Revisión de historias
de usuario con el Product Owner.
• Revisión de criterios de aceptación (a partir de los cuales se genera escenarios
de prueba).
• Identificación dependencias entre las historias de usuario.
• Sugiere mejoras funcionales y de usabilidad.
• Identifica los escenarios y flujos más vitales del negocio.
• Colaboración junto con los stakeholders en las pruebas UAT
• Preparación de ambientes de prueba.
• Seguimiento de releases.
• Automatización de pruebas funcionales (BDD, E2E, etc).
• Creación y aplicación de las métricas de calidad de Software.
• Mas todo lo listado en la lista del Tester.
Metodologías de trabajo
Con el tiempo, las metodologías de trabajo fueron adaptándose a las nuevas exigencias
del mercado.
Cascada
Esta metodología puede verse en bancos o proyectos gubernamentales. Es una
metodología vieja y casi obsoleta, pero entenderla sirve para entender cómo evolucionó
en el tiempo.
Esta metodología se basa en pedirle al cliente todos los requerimientos de la
aplicación, luego se hace el diseño de la misma (mockups, modelo de base de datos,
etc) Cuando ya tenemos todo eso, se desarrolla y se implementa. Finalmente
procedemos a verificarla o testear para ver si funciona bien y se presenta al cliente. En
caso de que la aplicación cumpla con todos los requisitos, ya queda productiva y
empieza la etapa de mantenimiento.
En caso de que contenga errores, nuevamente se deben revisar los requisitos y volver
a empezar desde el principio.
Kanban
En la actualidad se utilizan otras metodologías de trabajo que son ágiles. Entre ellas
se encuentra Kanban.
Kanban es muy utilizada en proyectos pequeños y para implementarla se utiliza un
pizarrón o un tablero.
Scrum
Scrum es un framework que puede ser aplicado a cualquier tipo de proyecto. Desde
la construcción de un edificio, hasta el desarrollo de un software
Tiene como finalidad entregar al cliente algo utilizable después de cada iteración, con el
fin de poder sacar rápidamente un MVP de un producto y probarlo en el mercado.
Scrum tiene varias ceremonias (reuniones) y cada una de ellas con un objetivo en particular.
En otras palabras: todas las situaciones posibles a las cuales vamos a someter a prueba
a un sistema.
Tip: Tener en cuenta que los resultados esperados o casos negativos también pueden
arrojar error, es un buen hábito a tener en cuenta para planificar escenarios de prueba
con distintas variables.
Si por ejemplo, tengo varios casos de prueba creados que se relacionan con el login de
una aplicación, se crea la suite de “Login”. Cualquier caso nuevo se puede agregar sobre la
marcha a la suite y se puede ejecutar en la medida de lo posible.
Test link es una herramienta para gestionar nuestras pruebas. En la misma vamos a
poder generar nuestras suites, casos de prueba y planes de prueba, como así también
priorizar los casos, asignarlos, colocarle keywords, generar métricas, entre otras
funcionalidades.
Creación de un proyecto
1. Ir a “Gestión de Proyectos de Pruebas”
2. Dar click en botón “Crear”
3. Completar los campos: a. Nombre b. Prefijo c. Descripción del
proyecto 4. Tildar las funciones avanzadas que se necesiten
5. Configurar la herramienta del “Gestor de Defectos”
6. Indicar si es público y si está activo
Creación de una test suite
1. Ir a “Editar Caso(s) de Prueba”
2. Pararse en la carpeta raiz
3. Ir al engranaje que se encuentra en la parte superior de la pantalla 4. Hacer clic en
el icono con el signo +
5. Completar los campos: a. Nombre de la Suite de Pruebas b.
Detalles 6. Click en Guardar
Creación de un caso de prueba
1. Ir a “Editar Caso(s) de Prueba”
2. Pararse en la carpeta raiz
3. Ir al engranaje que se encuentra en la parte superior de la
pantalla 4. Hacer clic en el icono con el signo +
5. Completar los campos: a. Nombre de la Suite de Pruebas b.
Detalles 6. Click en Guardar
Tipos de Testing
Clasificación: Se pueden clasificar en Funcionales o No Funcionales
Pruebas Funcionales
Su objetivo se basa en comprobar si las funcionalidades del desarrollo se realizaron
siguiendo las especificaciones y requisitos del cliente, como también las
necesidades iniciales.
Exploratorio:
Primera experiencia que el QA tiene sobre la aplicación, suelen basarse en la experiencia
y conocimientos del ejecutor
Es un testing intuitivo, pero no es aleatorio y no se realizan Test Case
Smoke:
Es un test que se realiza no para encontrar errores pero sí para asegurarnos que
las características más importantes del sistema funcionan como se espera En otra
parte el smoke sirve para validar si el deploy fue realizado correctamente Si lleva
Test Case
Unit Test:
Consiste en probar el correcto funcionamiento de una pieza de código, generalmente
una función. Es realizado por los desarrolladores
Integración:
Una vez probadas las funcionalidades por separado se realizan testeos de integración
para verificar que funcionan bien de forma conjunta. Por otro lado, también sirven para
probar la integración con servicios externos.
Regresión
Se realiza cuando hay cambios en el sistema y sirve para verificar que lo que
estaba funcionando no falle Se ejecuta una selección de pruebas relevantes
existentes
Pruebas No Funcionales
Se evalúa la forma en que un desarrollo o aplicativo opera, haciendo foco en los atributos
y calidad. Asegurando así una buena experiencia del usuario más allá de las
funcionalidades que debería tener.
Pruebas de Stress
Es una prueba que se le somete al sistema con la finalidad de identificar cuantas
peticiones se pueden hacer al mismo tiempo
Se realizan con software
● FunkLoad
● FWPTT load testing
● loadUI
● jmeter
Pruebas de Volumen
Las pruebas de volumen tienen como objetivo medir el rendimiento de la base de
datos, insertando datos de manera masiva
Criterios de Aceptación:
Todas las funcionalidades de un sistema deben estar plasmadas en las User Story o
Historias de Usuario. Contienen información sobre todo lo que debe hacer y cómo debe
ser una funcionalidad de la aplicación.
Pruebas Automatizadas
Son pruebas que permiten la optimización de la calidad del software. Pruebas reusables
Bugs y ciclos de vida
Bug Historia
Antes de comenzar definiciones veamos el origen del bug con un poco de historia…
El origen de este término es tan viejo como la programación misma, e incluso hay
quienes afirman que el término “bug” se utilizaba en la “era pre-ordenador”, cuando
alguna polilla atascaba los delicados mecanismos de alguna máquina.
En la informática, en Harvard (1.947) los científicos que se encargaban de la
supercomputadora Mark II vieron que algo no iba bien, Después de revisar la máquina
vieron que la fuente del problema era una polilla que se había colado en el interior y había
causado el mal funcionamiento, Grace Murray Hopper (una licenciada en física y
destacada matemática), que trabajaba programando fue quien hizo el reporte, lo pegó con
cinta adhesiva en la bitácora con la siguiente entrada:
“First actual case of bug being found”, en español “Primer caso real de bug
encontrado”
¿Qué es un bug?
Un bug se puede definir como una falla no esperada en el software, pero también se
puede denominar como aquellas características que no satisfacen las necesidades según
las definiciones del usuario
Error
Un error es una acción humana que produce un resultado, puede ser originada por el
desarrollador, por ejemplo en el código o en la lógica de programación, este error
puede originar más de un defecto en el sistema
Defecto
Es la presencia del error en el software, esta imperfección ocasiona resultados
no esperados
Fallo
Es la manifestación física o funcional de un defecto, es decir es detectado durante
la ejecución de pruebas, por ejemplo: al colocar los datos de
Login(usuario/contraseña) correctos el sistema no permite iniciar sesión
Entorno
Se debe indicar en el reporte, en qué ambiente se realizaron las pruebas, como por
ejemplo el ambiente de pruebas del analista QA, credenciales o perfil utilizado (si aplica)
Pasos
Esta es una parte importante donde se debe indicar el paso a paso a seguir para reproducir
el bug detectado por ejemplo: Paso 1 ingresar al link , Paso 2 Ingresar usuario y
contraseña, Paso 3 Dar clic en botón Login
Descripción
Es una descripción detallada de los pasos descritos anteriormente para guiar
al desarrollador a la reproducción del bug
Criterios de aceptación
Es una descripción de los resultados esperados definidos en la historia de usuario. Por
ejemplo: al colocar usuario y contraseña, y dar clic en el botón de Login el sistema
debe permitir iniciar sesión
Evidencia
En esta sección se colocan las evidencias que respaldan la detección del bug, por
ejemplo, unas imágenes las cuales deben tener buena definición y ser explícitas, o un
video donde se graba el proceso donde se detectó el bug
Prioridad de bugs
Al momento de reportar un bug es importante definir cuál es la prioridad del bug, de esta
forma el equipo de desarrollo podrá definir cuáles son los bugs que deben ser atendidos
de forma inmediata y cuáles pueden ser atendidos luego de resolver los más críticos
La gravedad de un bug nos permite definir cual es el impacto que este tiene sobre
el funcionamiento de un sistema
Los tipos de prioridades que se pueden ver en un
bug son:
Medium(medio) High (Alta) Highest (Más alta) Low(Baja)
Medium(medio)
Son bugs que se presentan en el sistema donde se obtienen resultados incorrectos,
como mensajes que no deben mostrarse por ejemplo, pero estos errores no detienen el
flujo de trabajo
High (Alta)
Los bugs que se colocan en esta categoría son aquellos que afectan la funcionalidad en
el flujo de ejecución de casos de prueba, donde afecta flujos principales del sistema
Low(Baja)
Estos bugs son de bajo impacto, se consideran que afectan poco o nada la
funcionalidad del sistema como por ejemplo errores ortográficos o estéticos.
Nuevo
Este es el estado inicial del bug cuando es detectado y creado por primera vez
En análisis
Luego de que el bug es detectado y reportado, el bug pasa a estar en análisis por el
equipo de desarrollo
En curso
Este estado se puede visualizar cuando el bug fue asignado a un desarrollador y
está trabajando en la solución
Por probar
Cuando el desarrollador obtiene la solución del bug, esta solución está lista para probar en
el ambiente de pruebas y el tester debe hacer las pruebas y verificar si el bug realmente
fue resuelto o no.
Devuelto
Este estado del bug se aplica cuando pasan la solución del bug al ambiente de pruebas y
el tester al realizar el flujo de pruebas detecta que no fue solucionado, procede a devolverlo
al desarrollador para que vuelva a ser verificado y solucionado
Resuelto
Este estado aplica cuando se pasa la solución del bug al ambiente de pruebas y el
tester realiza el flujo de pruebas y verifica que fue resuelto
Completado
Luego de que un bug es resuelto se colocan las evidencias y se procede a cerrar el
bug donde se indica que fue corregido
Reabierto
Este estado en particular se puede presentar cuando un bug finalizó todo su ciclo y fue
cerrado, pero surge un factor imprevisto y este se presenta nuevamente por lo que se
debe reabrir nuevamente el bug
Rechazado
Este escenario se presenta cuando el bug luego de ser analizado por el equipo de
desarrollo no es considerado un error, para esto se deben presentar las evidencias
donde se justifique que no aplica como bug
Bloqueado
Este estado es colocado por el desarrollador cuando algún factor le impide poder dar
solución al bug y se encuentra a la espera de este desbloqueo para seguir con la
solución del bug
prueba.
Interfaz
Es una capa de abstracción para que dos sistemas se comuniquen.
una capa de abstracción permite que interactúas con un sistema sin necesidad de
saber qué está pasando por debajo
API
Es una interfaz para que se comuniquen aplicaciones, programas de software y
compartan datos entre ellos ( en ingles application programming interface ).
Son un conjunto de comandos, funciones y protocolos que permiten la comunicación
entre software
JSON
Hoy en dia es el lenguaje mas usado para transferir información, significa javascript
object notation.
Es muy facil de entender y manipular
Esta construido por una colección de pares de nombre y valor
REST
Rest es un tipo de arquitectua de desarrollo web que se apoya totalmente en el
estandar HTTP
Significa Representational State Tranfesr
Es el enfoque mas popular para la creación de API
Se basa en una relación cliente-servidor que
separa las partes frontal y posterior de la API
Métodos HTTP
Una de las cosas que especifica el protocolo HTTP son los verbos ( métodos ),
estos indican acciones.
Get: leer, traer información desde un servidor, cualquier dato que necesitemos una lista o
un recurso en específico
Post: crear, para enviar información hacia el servidor, es especifico para la creación
de recursos
Put: modificar, para actualizar todo un recurso ( por completo )
PATCH: modificar, se usa para actualizar solo una parte del recurso
DELETE: eliminar un recurso determinado ( rara vez se utiliza )
Códigos de estado
Cuando se solicita información a través de una API, el servidor puede contestar con
distintos códigos. Con estos vas a saber que paso con tu petición.
Los estados sirven para describir el estado de la petición
Código 400: cuando son errores del cliente, Indica que se hizo mal una solicitud,
faltan datos, headers o cualquier otro error
-400 Bad request. La solicitud contiene sintaxis erronea
-403 Forbidden. La solicitud fue legal, pero en el servidor rehusa a responder dado que
el cliente no tiene los privilegios para hacerla
-404 Not Found. Recurso no encontrado. Se utiliza cuando en el servidor web no
se encuentra la página o recurso solicitado.
Código 500: cuando existen problemas con el servidor. Indica que fallo completamente
la ejecución. No necesariamente tenemos control sobre ellos.
-500 Internal Server Error. Comunmente emitido por aplicaciones empotradas en servidores
web, cuando se encuentran con situaciones de error ajenas a la naturaleza del servidor
web
https://tech.tribalyte.eu/blog-que-es-una-api-rest
¿Qué es postman?
herramienta que principalmente se utiliza para probar api de tipo rest
Home: veo informacion sobre mi usuario como el historial de mis actividades o espacio
de trabajo
API Network: lugar central tanto para consumidores como productores de API
para descubrir explorar y compartir
¿Dónde trabajo?
Vamos a trabajar en workspace, de espacio privado
1. Voy a la opción de menú Workspace -> Botón create workspace 2. Se despliega
la ventana de workspace, ingreso el nombre que desee, el detalle o descripción de
mi espacio de trabajo, la visibilidad y presiono el botón create workspace
Usando variables
Variables
Una variable es una representación simbólica de datos que me permite acceder a un
valor sin tener que ingresarlo manualmente donde lo necesite.
Esto puede ser útil si estamos utilizando los mismos valores en varios lugares.
Por ejemplo, si tenemos la misma URL en más de una solicitud, pero la URL puede
cambiar más tarde, podemos almacenar la URL en una variable base_url y hacer referencia
a ella en las solicitudes mediante {{base_url}}.
El mismo principio se aplica a cualquier parte de una solicitud donde se repiten los datos.
Las variables en Postman son pares clave-valor. Cada nombre de variable representa
su clave, por lo que hacer referencia al nombre de la variable le permite acceder a su
valor.
Variable Global
Variable de Colección
Están disponibles en todas las solicitudes de una colección y son independientes de
los entornos.
Son adecuadas si está utilizando un solo entorno, por ejemplo, para detalles de URL
o autenticación
Variable de entorno
Permiten encuadrar nuestro trabajo en diferentes entornos, por ejemplo, desarrollo
local frente a pruebas o producción.
Gestión de Entornos
Entornos(Environments)
Un entorno es un conjunto de variables que podemos usar en las solicitudes de Postman.
Podemos usarlos para agrupar conjuntos de valores relacionados y administrar el acceso
a los datos compartidos de Postman si trabajamos como parte de un equipo.
Ejemplo: considerar una operación POST simple sobre determinado endpoint que se
encargaría de crear una persona o usuario en la base de datos, a partir de los
valores enviados en el body del mensaje con datos básicos de una persona o usuario
de un sistema:
1- Parámetros
4- Seguridad
Por ejemplo, esto puede incluir autenticación o aspectos de seguridad en los parámetros.
Conclusión POISED
La heurística podría llegar a servir de alguna manera para estandarizar dentro de un
equipo de varios testers la forma de probar una API, manteniendo una estructura y
enfoque. Da un
modelo de referencia para tener en cuenta al pensar la cobertura que nos interesa
alcanzar al probar una API.
Existen otras formas también interesantes de probar una API (incluso otras heurísticas,
por ejemplo la heurística VADER).
Endpoints
Los EndPoint son las URLs de una API y cada EndPoint puede tener varios métodos.
Métodos
Los métodos son todas las formas que tenemos de poder interactuar con ese EndPoint
Ejemplo: Supongamos que tenemos una tienda e-commerce integrada con una API de
productos. Con el método POST, podemos crear un nuevo producto. Con el método PUT
podemos modificar un producto de la tienda, con el GET podemos traer todos los
productos o un producto en específico, con el DELETE podemos eliminar el producto y con
el PATCH podemos modificar un atributo de un producto.
Swagger
Su objetivo es estandarizar el vocabulario que utilizan las APIs. Es el diccionario API.
Jmeter
Pruebas de stress y performance WEB
Los Testing de performance permiten conocer el desempeño de alguna aplicación. JMeter
es uno de los programas más usados a la hora de hacer un testing de stress y
performance, ya que es muy eficiente a la hora de dar resultados.
La aplicación Apache JMeter™ es un software de código abierto, una aplicación Java 100
% pura diseñada para cargar, probar el comportamiento funcional y medir el rendimiento.
Originalmente fue diseñado para probar aplicaciones web, pero desde entonces se ha
expandido a otras funciones de prueba.
Por ejemplo: Se necesita probar un puente para saber su comportamiento con 100
personas sobre él (el dato de la cantidad es determinado por el cliente), los arquitectos de
pruebas lo que hacen es dividir este grupo total en grupos más pequeños que vayan
ingresando al puente de manera paulatina en un lapso de tiempo (5 personas inician, al
minutos ingresan otras 5 y así sucesivamente hasta completar las 100 personas) y con
una actividad específica como “saltar” , lo que al final permite evaluar el comportamiento
del puente y si su estructura y estado final tuvieron el comportamiento saludable para
soportar esta actividad
Por ejemplo: Continuando con el ejemplo de personas saltando sobre el puente, en esta
prueba colocamos a las mismas 150 personas de participaron en la prueba de capacidad,
pero sin pausa entre salto y salto, con el objetivo de evidenciar si el puente puede
recuperar su forma después de alterar su estructura durante la prueba.
Algunas cosas a tener en cuenta al momento de probar stress
– Estas pruebas NO deben realizarse nunca en producción
– Se debe ejecutar esta prueba en el flujo más pesado de la aplicación. En este caso
apunté al inicio del foro, pero quizás lo correcto hubiese sido apuntar a una petición POST
a la hora de crear un post, ya que debe ir y almacenar las cosas en la base de datos.
– Estas pruebas se realizan en un ambiente espejo de producción. Es decir, no se deben
hacer ni en producción, ni en un servidor de QA o Desarrollo. Debe ser otro ambiente que
tenga las mismas características que la producción. De lo contrario, los datos que
obtendremos no serán datos de escenarios que pasarán en producción.
- Al momento de hacer esta prueba, nadie debería estar conectado en ese
ambiente para no afectar los resultados de las pruebas