Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
La calidad es una medida de excelencia. Se refiere a un estado libre de defectos,
deficiencias o variaciones significativas de un producto o resultado que se entrega para
satisfacer los requerimientos específicos de un proyecto o cliente.
Proyecto
Producto
Producto:
Secreto de la industria:
Existen varias versiones del gráfico o los pasos del ciclo de vida de la producción
de software. La idea es que comiences a familiarizarte con la idea de que el
momento del testing es un paso previo a la entrega del producto al cliente. Lo
más probable es que en un proyecto real, estos pasos estén superpuestos. Por
ejemplo: mientras se termina de desarrollar la fase 2, puede que el equipo de
testing ya esté trabajando en las pruebas de la fase 1 y que también el cliente
vaya viendo entregas parciales. Vamos a profundizar sobre este tema cuando
veamos "Producción ágil de software" en encuentros futuros
Etapa de testing:
Una vez que el código ha sido chequeado por parte del equipo de desarrollo, se
envía al equipo de Quality control (QC) para que revisen si funciona. Aquí nos
adentramos en el corazón del trabajo de un equipo de testing.
Aquí es cuando determina qué debe hacer el sistema y cómo funcionará. También
es cuando se identifican los posibles riesgos y problemas que deben abordarse.
Como todavía no hay nada del producto desarrollado, es como ver los planos de
una casa a punto de ser construida. Podemos anticipar algunos problemas antes
de gastar dinero en construir, pero otros solamente los podremos ver una vez que
se inicia el desarrollo del código.
En el caso de las metodologías ágiles se llaman así porque son metodologías y requieren que
aprendamos ceremonias, pasos y procesos para llevarlas a cabo correctamente y que nos brinden
los mayores beneficios al ser implementadas.
Sabemos que puede sonar repetitivo, pero estamos haciendo algo que se llama
consolidación que es cuando recordamos algo que aprendimos y hacemos el
intento de ponerlo en práctica y no solamente repetirlo como cuando
estudiábamos de memoria... ¡si es que alguien sigue estudiando así!
Strategy: En el primer paso, ese en el que se toman los requerimientos del cliente
y se comienza a pensar la estrategia con la que se va a resolver el proyecto o el
producto, aparecen una serie de relaciones entre personas (usuarios, roles) y
datos (que ingresan, se almacenan o se entregan al usuario).
¿Cómo puede ser que hablemos de datos todos los días y nunca hayamos dicho
que son una descripción codificada de un suceso?
¡A por un ejemplo se ha dicho! Cuando vemos la siguiente imagen:
Metadatos
Apenas entendemos lo que es un dato, y tenemos que hablar de metadatos. Es
necesario para que no exista confusión entre uno y el otro.
Dato: foto
Metadata
filename: gatolindo
type: .jpg
author: Nico’s phone
date: Oct 12 2017
time: 4:35 PM
location: <a href="https://www.findlatitudeandlongitude.com/?lat=50.2209618&lon=-
96.8747148">N 50° 13' 15.4626", W 96° 52' 28.9734"</a>
Los metadatos son la descripción de los datos. Podemos considerarlo como “datos
sobre datos”. Describen qué sabemos sobre el dato.
Se definen como los datos que proporcionan información sobre uno o más
aspectos de los datos; se utilizan para resumir información básica sobre datos
que pueden facilitar el seguimiento y el trabajo con datos específicos.
Una situación cotidiana puede ser: buscar en nuestro disco rígido todos los
archivos que sean .pdf (metadato: tipo de archivo) para luego ordenarlos por
tamaño (metadato: bytes que ocupan) y así eliminar aquellos que consuman
mucho espacio de almacenamiento.
Los metadatos dentro de las páginas web también pueden contener descripciones
del contenido de la página, así como palabras clave vinculadas al contenido que
hacen que al buscar algo online, los buscadores como Google o Ecosia puedan
entender mejor dónde encontrar lo que estás buscando.
Información
Los sistemas de información son la integración de componentes para la
recopilación, el almacenamiento y el procesamiento de datos para proporcionar
información, contribuir al conocimiento y productos digitales que facilitan la toma
de decisiones. Poseer información certera y a tiempo permite disminuir riesgos y
mejorar la toma de decisiones.
Muchas veces una sola persona haciendo pruebas debe detener el trabajo de
otros equipos para poder volver a analizar una porción de código que no está
dando los resultados esperados.
Transacciones
¿Qué es el Testing?
El testing o prueba de software es un método para verificar si el producto de
software real cumple con los requisitos esperados y busca garantizar que el
producto de software esté libre de defectos.
Uno de los objetivos de las pruebas de software es evitar los errores en las
primeras etapas del desarrollo. La detección temprana de errores reduce
significativamente el costo y el esfuerzo. La prevención de defectos implica hacer
un análisis de causa raíz de los defectos encontrados previamente y luego tomar
medidas específicas para prevenir la ocurrencia de ese tipo de errores en el futuro.
Las pruebas eficientes ayudan a proporcionar una aplicación sin errores. Si
previene los defectos, se reducirá el recuento general de defectos en el producto,
lo que garantiza aún más un producto de alta calidad para el cliente.
3. Verificar requerimientos:
El principal objetivo de las pruebas debe ser satisfacer las necesidades del cliente.
Los testers prueban el producto y aseguran la implementación de todos los
requisitos especificados. El desarrollo de todos los casos de prueba,
independientemente de la técnica de prueba, garantiza la verificación de la
funcionalidad de cada caso de prueba ejecutado. El tester también debe crear una
matriz de trazabilidad de requisitos (RTM), que garantizará el mapeo de todos los
casos de prueba a los requisitos. RTM es una forma efectiva de garantizar que los
casos de prueba tengan la cobertura de requisitos adecuada.
5. Construir confianza:
Uno de los objetivos críticos de las pruebas de software es mejorar la calidad del
software que se entregará para construir confianza con quien lo solicitó. El
software de alta calidad significa un menor número de defectos. En otras palabras,
cuanto más eficiente sea el proceso de prueba, menos errores tendrá en el
producto final. Lo que, a su vez, aumentará la calidad general del objeto de
prueba. La excelente calidad contribuye a un aumento significativo en la
satisfacción del cliente, así como a menores costos de mantenimiento.
6. Reducir riesgos:
Otro objetivo esencial de las pruebas de software es identificar todos los defectos
en un producto. El lema principal de las pruebas es encontrar el máximo de
defectos en un producto de software mientras se valida si el programa funciona
según los requisitos del usuario o no. Los defectos deben identificarse lo antes
posible en el ciclo de prueba.
Otros casos incluyen que el software sea desarrollado para una región específica
y deba seguir las reglas y regulaciones legales de esa región. Además, el producto
de software puede tener que ser compatible con los estándares de prueba
nacionales e internacionales.
1. Errores funcionales
El software presenta al usuario opciones o CTA (call to action) que son poco
claros o que no realizan la acción que dicen realizar. Por ejemplo, no hay Menú de
ayuda o Instrucciones para usuarios nuevos. O acciones que son centrales al
software pero no figuran en la sección de Preguntas Frecuentes. Hasta puede ser
que un botón lea “Guardar” y esté ejecutando “Eliminar.”
Imagen 4.4: Pantalla con copy erróneo en botón Guardar. Fuente: producción propia.
En este ejemplo - Imagen 4.4-, el equipo responsable de la creación visual de este
aviso (Front End) transcribió incorrectamente el texto en el botón “Eliminar” y el
usuario lee “Guardar” y el software ejecuta eliminar.
el siguiente ejemplo:
GUI o UI lista.
Cualquier error que ocurra mientras el usuario está interactuando con el software
necesita ser manejado en forma clara y con sentido. En otras palabras, el usuario
debe comprender qué pasó (en un lenguaje ameno) y debe tener claro qué hacer
como siguiente paso. Si esto no ocurre, a estos errores se los denomina “Error en
el manejo de errores.”
Imagen 4.8: Pantalla “Error 707”. Fuente: producción propia.
Siempre que sea posible, el usuario debe tener claro qué pasos debe seguir.
Si en un formulario, por ejemplo, hay campos obligatorios que necesitan ser
llenados, los mensajes de validación deben ser claros e indicar qué acciones debe
realizar el usuario. Aquí tienes un ejemplo bien manejado:
continuación:
2. Errores de cálculo
Este tipo de errores ocurre cuando una porción del código del software tiene algún
error. Algunos ejemplos son:
Errores de lógica
Fórmulas incorrectas
Tipos de datos no alineados (texto vs números, por ejemplo)
Errores de código
Errores en las funciones internas del código
Bases de datos inexistentes o mal asignadas
En 1999, la NASA perdió su orbitador climático en Marte debido a que uno de los
proveedores de la NASA involucrado en su construcción utilizó medidas imperiales
(usadas en Inglaterra) en lugar de utilizar el sistema métrico universal (utilizado en
todo proyecto científico). Este pequeño error causó que los propulsores del
orbitador no funcionen correctamente. Debido a este error, el orbitador se estrelló
casi inmediatamente al llegar a Marte.
flujo.
Imagen 4.12: Pantalla “Formulario de inscripción”. Fuente: producción propia.
Verificación y validación
El proceso de verificar y validar es el proceso por el cual se investiga si un sistema
de software satisface las especificaciones, requerimientos y estándares indicados
y si cumple el propósito deseado.
Estos dos términos son utilizados indistintamente por muchas personas. Dado que
los especialistas en testing se encargan fundamentalmente de la verificación,
debemos hacer foco en comprender el término y distinguirlo de la validación.
Verificación
la verificación se realiza en forma interna, dentro de los equipos que van a estar trabajando
con el desarrollo de la aplicación. Es importante hacer este proceso antes de iniciar el
trabajo ya que asegura que no se trabaje en direcciones equivocadas, gastando recursos
escasos. Una vez más, el equipo de testing está para asegurarse de que se trabaje en forma
eficiente, anticipando los problemas y ahorrando tiempo y dinero.
La realidad: muchas organizaciones y startups tardan mucho en implementar procesos de
verificación. Y suelen hacerlo cuando ya han constatado más de una vez que se gasta
mucho más en “lo hacemos rápido, sin un plan” que “lo hacemos bien, verificando paso por
paso y luego lo construimos.”
Conclusiones:
La verificación es un proceso continuo, interno que se debe realizar en todas las etapas del
desarrollo de software. La verificación es el testing estático.
Sus principales ventajas son:
1. Actúa como control de calidad en cada etapa del proceso de desarrollo de software.
2. Permite que el equipo de desarrollo produzca productos que se ajustan a los
requerimientos y a las necesidades del cliente.
3. Ahorra tiempo ya que se detectan los defectos en las etapas tempranas del desarrollo
de software.
4. Reduce o elimina los defectos que pueden surgir en las etapas más tardías del
desarrollo de software.
Validación
El extraño caso del UAT (User Acceptance Test). El UAT es el último test
del proceso de verificación (y está a cargo de usuarios reales, beta testers o
usuarios designados por el cliente), o puede ser considerado como parte de la
Validación ya que es parte del proceso de validación del producto. Hoy en día
la línea que divide Verificación de Validación es muy difusa ya que los
procesos se han vuelto más dinámicos, respondiendo a cambios mucho más
ágiles propios del desarrollo de software ágil.
Verificación Validación
El objetivo de la verificación es la
aplicación y la arquitectura y El objetivo de la validación es el producto en sí.
requerimientos de software.
En su mayoría, consiste en el
En general, consiste en la ejecución de un
análisis de documentación y la
programa y la realiza una computadora.
realizan personas.
Reporte #125
Descripción del defecto (¿Cuál es el bug?): Falta la letra “g” en la palabra “Settings”
Comportamiento esperado (¿Cómo debería verse?): Cambiar la palabra “Settins” por
“Settings”
Prioridad:
Muy alta
Alta
Media
Baja
Las pruebas son necesarias para reducir el riesgo de detectar errores pero
muchas veces no logran anticipar todos los casos posibles de uso.
Cuanto mejores y más adecuadas sean las pruebas de software, menor será el
riesgo de encontrar errores durante la fase de operación o producción, y ya
sabemos que no todos los errores son iguales. No es lo mismo un error crítico y
urgente que un error trivial que puede esperar. El problema con los errores en
producción es que están a la vista de todos.
Ya hemos visto errores y defectos. Veamos cuáles son las causas posibles de
los errores y defectos en software
1. Error Humano
Las personas a cargo de un proyecto pueden equivocar alguno de los
puntos a resolver. Desde una fecha de entrega incorrecta (“Era para hoy?”),
hasta enviar a producción una porción de código que no estaba testeada
todavía. Los memes abundan, dando cuenta de cuántas veces se pierden
los detalles en la comunicación incompleta de requerimientos o en la
falta de procesos de verificación.
2. Condiciones Ambientales
Existen causas ambientales que tienen impacto directo sobre la tecnología.
Algunos ejemplos son la radiación, el magnetismo, campos electromagnéticos,
polución, tormentas solares, rayos cósmicos. Y luego algunas fallas en el
hardware (los componentes duros de la tecnología) causadas por elementos
externos. Algunos ejemplos son: fallos de discos duros debido a fluctuaciones
en el suministro de energía eléctrica, temblores, terremotos, inundaciones, y
otros elementos de la naturaleza que puedan afectar directamente a la
estructura más visible de una computadora.
Estos son desperfectos en un componente que pueden causar que el sistema falle
en desempeñar las funciones requeridas, por ejemplo, una sentencia o una
definición de datos incorrectos. Failure (Fallo) es una desviación funcional de un
componente o sistema respecto de la prestación, servicio o resultado esperados.
4 Errores en el código
Errores al escribir código por parte de un programador que no hayan sido
detectados en la fase de pruebas. No son errores de malos entendidos (como en
el caso de los errores humanos) sino que son errores de la lógica interna que
hacen que el código no pueda ser ejecutado. Por ejemplo, ingresar una edad
“negativa” (-18) puede generar que una aplicación no funcione o que un usuario
pueda pedir 1 millón de hamburguesas mediante una app de pedidos a domicilio.
Procesos de prueba
Como has estado aprendiendo, no existe un único proceso para realizar pruebas.
Sin embargo, podemos tener en cuenta una serie de actividades que son comunes
a todos estos procesos. Estas actividades ayudan a que el Testing alcance los
objetivos establecidos.
Debemos tener en cuenta que un proceso de pruebas se ve afectado por una gran
cantidad de factores internos y externos que deberemos tener en cuenta a la hora
de planificar. Nombraremos algunos a continuación, pero deberás tener presente
que ninguna lista es exhaustiva y que dependerá de cada proceso o entorno en
que se aplique.
Teniendo esto en cuenta, sabremos que cada proceso de prueba será único y
diferente del resto, pero dentro de estas actividades comunes, podemos identificar
una serie de etapas a transitar en orden.
1. Análisis de requerimientos
Hasta el encuentro de hoy, estuvimos viendo los requerimientos como una
categoría amplia en la que incluimos “todo lo que puede pedirse al momento de
iniciar un proyecto de software.”
Sirve como base para los planes de prueba y el plan del proyecto.
Sirve como un acuerdo entre el desarrollador y el cliente.
Es un proceso que permite aclarar los requisitos declarados y no
declarados
Sirve para validar el requisito de integridad, falta de ambigüedad y
viabilidad.
Imagen 7.1: El impacto de un error en el análisis de requerimientos. Fuente:
Foundations of software testing de Dorothy Graham, Rex Black, Erik Van
Veenendaal e Isabel Evans.
Validación de requisitos
Valida los requisitos en función de los puntos a continuación para que al final de la
fase de análisis de requisitos esté disponible toda la información requerida.
En esta fase, el equipo de control de calidad (QA) analiza a un nivel superior qué
probar y cómo probar. Dicho de otro modo, diseñan qué pruebas se deben
realizar, en qué momento y con qué herramientas.
Hay tres actividades principales que realiza el equipo de control de calidad en esta
fase. Las actividades se describen a continuación.
El equipo de control de calidad analiza los requisitos previos y los detalles del
entorno donde se supone que se realizarán las pruebas. El equipo recopila
detalles sobre las prioridades de las pruebas y se enfoca en la secuencia de
módulos que se validarán.
Surge aquí una pregunta, teniendo en cuenta todos los escenarios / casos
posibles. ¿Cómo asegurarse de que ningún requisito se quede fuera del ciclo de
prueba? Usaremos las siguientes herramientas.
Un escenario de prueba es la representación de uno o más flujos de negocio o
flujos críticos que se ejecutarán de forma concurrente sobre la infraestructura
objetivo por uno o más usuarios virtuales.
Ahora tenemos toda la información necesaria para poder crear una RTM en
pruebas:
Paso 6: haga lo anterior para todos los casos de prueba. Más tarde,
extraiga las primeras 3 columnas de su conjunto de pruebas. ¡RTM en
prueba está listo!
ANÁLISIS DE AUTOMATIZACIÓN
Atómico
Identificado de forma única
Completo
Coherente y sin ambigüedades
Trazable
Priorizado
Comprobable
Atómico
Todos y cada uno de los requisitos deben ser atómicos. Es decir, deben tener un
nivel de detalles muy bajo y no debería ser posible separarlos en componentes.
Completo
Además, todos y cada uno de los requisitos deben estar completos. En la imagen
7.12, vemos cómo el ejemplo de un requisito incompleto dice que un "usuario
profesor iniciará sesión en el sistema proporcionando su nombre de usuario,
contraseña y otra información relevante". Aquí, la “otra información relevante” no
está clara, por lo que la otra información relevante debe detallarse para completar
el requisito.
El problema en este requisito es que desde el primer requisito parece que los
cursos se dividen en dos categorías: cursos de pregrado y cursos de posgrado y el
estudiante puede optar por cualquiera de los dos, pero no por ambos. Pero
cuando lee otro requisito, entra en conflicto con el primer requisito y dice que
algunos cursos se abrirán tanto para graduados como para estudiantes pre-grado.
Por lo tanto, es necesario convertir este requisito en un buen requisito, que es "Un
estudiante tendrá cursos de pre grado o cursos de posgrado, pero no ambos". Lo
que significa que cada curso se marcará como curso de pre grado o curso de
posgrado.
Trazable
Todos y cada uno de los requisitos deben ser rastreables porque existen
diferentes niveles de requisitos. Más adelante veremos que estos niveles son:
requisitos comerciales, requisitos arquitectónicos y de diseño; seguidos de
requisitos de integración del sistema.
Priorizado
Luego, se deben priorizar todos y cada uno de los requisitos, de modo que el
equipo tenga una guía sobre qué requisito se puede implementar primero y cuál se
puede hacer más adelante. En el ejemplo vemos el caso común de que todos los
requisitos son importantes y han sido priorizados con la misma prioridad 1.
Todo no puede tener la misma prioridad, ya que los equipos deben poder saber
por dónde empezar o cuál es el requisito del cual dependen otros.
Comprobable
Conclusión
Esta es una mera introducción a la buena práctica en la redacción de requisitos. El
hábito de ir redactando requisitos atómicos, completos e identificables acelera la
comunicación entre los equipos y ahorra tiempo y desgaste.
Tipos de requisitos
Requisitos comerciales: son requisitos de alto nivel que se toman del caso
comercial de los proyectos. Por ejemplo, un sistema de servicios bancarios
móviles brinda servicios bancarios en el sudeste asiático. El requisito comercial
que se decide para India es el resumen de cuenta y la transferencia de fondos,
mientras que para China es el resumen de cuenta y el pago de facturas.
Imagen 7.13: Ejemplos de tipos de requisitos. Fuente: elaboración propia.
Entonces, las otras fuentes de requisitos en las que puede confiar son
En esta fase de STLC (Software Testing Life Cycle o Ciclo de vida del testeo del
software), los tester trabajan tanto dentro de sus propios equipos como de forma
interdisciplinaria para contextualizar cómo probarán el software. El análisis de
requisitos a menudo incluye sesiones de intercambio de ideas, identificación de
puntos ciegos o áreas poco claras en los requisitos y priorización de ciertas
evaluaciones.
La segunda fase de STLC es importante, ya que guía gran parte del trabajo a
seguir. La planificación de pruebas toma los conocimientos encontrados durante
los requisitos o el análisis del producto y los convierte en una estrategia de control
de calidad documentada.
El plan de pruebas especifica varios detalles del trabajo de control de calidad que
se realizará, incluidos el alcance, los objetivos, los tipos de pruebas funcionales y
no funcionales (tanto automáticas como manuales) y los detalles de los entornos
de prueba. Una vez que se determinan estos detalles, la gestión de pruebas
establece roles y plazos para el trabajo. Finalmente, el equipo de pruebas puede
determinar qué entregables proporcionará al completar las fases de STLC.
Imagen 8.1: Pasos en la creación del plan de pruebas. Fuente: elaboración propia.
FASES DE UNA PLANIFICACIÓN
1. Análisis de producto
El foco de un tester es aprender lo más posible sobre el producto que se está
probando, el cliente y los usuarios finales de productos similares. Idealmente, esta
fase debería centrarse en responder a las siguientes preguntas:
¿Quién usará el producto?
¿Cuál es el objetivo principal de este producto?
¿Cómo funciona el producto?
¿Cuáles son las especificaciones de software y hardware?
Para lograr estas respuestas, recomendamos hacer lo siguiente:
Entrevistar a clientes, diseñadores y desarrolladores.
Revisar la documentación del producto y del proyecto.
Realizar un recorrido del producto.
RIESGOS MITIGACIÓN
3. Definición de objetivos
Esta fase define los objetivos y los resultados esperados de la ejecución de la
prueba. Dado que todas las pruebas pretenden identificar tantos defectos como
sea posible, los objetivos deben incluir:
Una lista de todas las características del software (funcionalidad, GUI,
estándares de rendimiento) que deben probarse.
El resultado ideal o punto de referencia para cada aspecto del software que
necesita pruebas. Este es el punto de referencia con el que se compararán
todos los resultados reales.
3 Red Se necesita una red que incluya LAN e Internet para simular el
entorno empresarial y de usuario real
¿NECESITAS UN EJEMPLO?
Análisis y diseño
Factores que determinan los niveles de detalles de las condiciones de prueba:
1. Nivel de prueba, el nivel de detalle y la calidad de la base de prueba.
2. Complejidad del sistema/software y ciclo de vida de desarrollo utilizado.
3. Riesgos asociados a proyectos y productos.
4. La relación entre los conceptos básicos de las pruebas, lo que debe
probarse y cómo debe probarse.
5. Una herramienta de gestión de pruebas.
6. Madurez del proceso de evaluación, así como de las habilidades y
conocimientos de los analistas.
7. El nivel de especificidad del Diseño de Prueba y otras implicaciones de la
tarea de prueba.
8. Disposición de los clientes a participar en la consulta.
Las siguientes son las diversas fuentes para recopilar información de prueba:
1. Requisitos de software: la especificación de requisitos de software
(documento SRS) establece cómo debe construirse el sistema de software. En
pocas palabras, SRS proporciona una ruta de proyecto para todos los
involucrados. Proporciona descripciones avanzadas de especificaciones de
software activas e inactivas, así como condiciones de funcionamiento que indican
cómo el usuario puede interactuar con el sistema una vez completado. Las
siguientes son características comunes de SRS:
¿Cuál es el propósito del software que se está construyendo?
o Todas las revisiones de software.
o Rendimiento del software, o para qué está diseñado.
o Rendimiento del software en el entorno de producción.
o Detalles válidos y no válidos.
o Conectores visuales externos, o cómo el software interactuará con el
hardware u otro software.
o Restricciones en el diseño del software o las establecidas en el entorno
operativo.
2. Requisitos comerciales: muestra los detalles del software de alto rendimiento.
Este es un documento oficial que describe las necesidades del cliente (escrito,
oral). Por lo general, lo produce un analista comercial que trabaja con los clientes
y se basa en la interacción y las necesidades de los clientes. Business Process es
una descripción detallada de cómo nuestros socios comerciales pretenden cumplir
con sus roles, construir relaciones comerciales y compartir tareas para participar
de manera efectiva con la ayuda de sus sistemas de información.
3. Documento de diseño funcional: la especificación de diseño funcional, o FDS,
es un documento que describe cómo funcionará un proceso o sistema de control.
Explica cómo funcionará el sistema planificado, cómo interactuará la gente con él
y qué se puede esperar de una variedad de condiciones operativas. La
especificación de diseño específico ayuda por una variedad de razones. Una de
las principales razones es que lleva mucho tiempo producir dibujos o escribir un
código de PLC sin algún tipo de acuerdo escrito sobre lo que debe lograr el
sistema. Las especificaciones de diseño funcional se pueden compartir con los
miembros del equipo, los compradores y las partes interesadas relevantes para
obtener comentarios y revisiones hasta que se acuerde y firme el documento final.
Este proceso de revisión y los cambios son importantes para garantizar que el
diseño final sea objetivo y satisfaga las necesidades de los participantes.
Posteriormente, el documento se entrega a los equipos de ingenieros para el
diseño técnico y los programas, con detalles operativos que sirven de guía. Los
ingenieros sabrán qué dibujar, los desarrolladores sabrán qué debe hacer el
código y los clientes sabrán qué traer cuando se complete la especificación de
diseño funcional. La especificación de diseño específico identifica lo que debe
usarse en el ciclo de vida de la ingeniería de software industrial.
4. Requisitos operativos: los requisitos de rendimiento son importantes para su
producto porque, como dicen, proporcionan algunos tipos de funcionalidad.
Hágase la pregunta "¿esto afecta el rendimiento de mi herramienta?" O "¿Cuál es
el significado de esto?" puede ayudar con este programa. Esas necesidades
específicas pueden tener un conjunto menor de riesgos y requisitos. También
puede tener requisitos que expliquen cómo su sistema de software interactuará
con diferentes herramientas, lo que nos lleva a las necesidades de las
interacciones externas.
Tipos de prueba
Los tipos de prueba vistos a continuación son una clasificación sencilla, adaptada
al nivel del curso.
Las técnicas de prueba de caja blanca analizan las estructuras internas, las
estructuras de datos utilizadas, el diseño interno, la estructura del código y el
funcionamiento del software en lugar de solo la funcionalidad como en las pruebas
de caja negra. También se denomina prueba de caja de vidrio o prueba de caja
transparente o prueba estructural.
Ventajas:
o Las pruebas de caja blanca son muy exhaustivas ya que se prueban todo el
código y las estructuras.
o Fácil de automatizar.
Desventajas:
o El rediseño del código y la reescritura del código necesitan que los casos de
prueba se escriban nuevamente.
o PRUEBA FUNCIONAL:
Son aquellas que se llevan a cabo para comprobar las especificaciones críticas
para el negocio, la funcionalidad y la usabilidad. Este tipo de pruebas garantizan
que las características y funcionalidades del software se comporten según lo
esperado sin ningún problema. Valida principalmente toda la aplicación con
respecto a las especificaciones mencionadas en el documento Software
Requirement Specification (SRS). Los tipos de pruebas funcionales incluyen
pruebas unitarias, pruebas de interfaz, pruebas de regresión, entre otras.
o PRUEBAS NO FUNCIONALES:
o PRUEBA DE REGRESIÓN:
Esta prueba se realiza para asegurarse de que los nuevos cambios de código no
tengan efectos secundarios en las funcionalidades existentes. Garantiza que el
código antiguo siga funcionando una vez que se hayan realizado los últimos
cambios en el código.
Imagen 8.6: Pruebas de caja blanca y caja negra. Fuente: elaboración propia.
Pruebas de caja blanca Pruebas de caja negra
Los dominios de datos y los límites Esto solo se puede hacer mediante
internos se pueden probar mejor. un método de prueba y error.
Niveles de prueba
Las pruebas de nivel de software se pueden clasificar principalmente en 4 niveles:
Imagen 8.7: Niveles de prueba. Fuente: elaboración propia.
Historias de usuario
Dentro de un contexto de metodologías ágiles, uno de los pasos en el proceso es
crear historias de usuario. Y si bien puede parecer que es un paso extra del
proceso, realmente nos dan un contexto importante y asocian las tareas con el
valor que estas aportan al usuario final.
Las historias de usuario no son lo mismo que los requerimientos del sistema de
software que son mucho más detallados y técnicos. En el desarrollo de software
ágil las personas están en primer lugar, y por lo tanto las historias de usuarios
ponen a los usuarios finales reales en el centro de la conversación. Las historias
utilizan un lenguaje no técnico para ofrecer contexto al equipo de desarrollo y sus
esfuerzos. Después de leer una historia de usuario, el equipo sabe por qué está
compilando lo que está compilando y qué valor crea.
Una historia de usuario es una herramienta en el desarrollo Agile de software que se utiliza
para capturar una descripción de una función de software desde la perspectiva de un
usuario. La historia de usuario describe el tipo de usuario, lo que quiere y por qué, y ayuda
a crear una descripción simplificada de un requisito.
Por ejemplo, un usuario en la salud es aquel que utiliza un servicio médico y un usuario en
informática puede referirse a un perfil de una cuenta en determinado sistema de una
plataforma social, un sistema de ventas, un sistema de gestión de reportes gerenciales, etc.
Cada cuenta tiene un perfil de usuario que indicará los privilegios, accesos, políticas de
seguridad, restricciones y hábitos de la persona que usa la cuenta. Por lo cual, existen
perfiles de cuentas, por motivos de seguridad y así poder proteger las transacciones a
realizar y el impacto en los datos. Según el perfil la persona podrá acceder a ciertos menús
del sistema y realizar determinadas transacciones, generalmente consulta, alta, baja y
modificaciones.
Tipos de usuarios
Los tipos de usuarios varían según el sistema y las necesidades de su uso. Por ejemplo,
pueden dividirse, según el nivel de permisos o privilegios que tienen en un sistema en:
Usuarios operacionales: son aquellos que alimentan información y datos para que
las funciones del sistema se ejecuten adecuadamente.
Usuarios supervisores o administradores: gestionan y administran los accesos y/o
privilegios de los demás usuarios haciendo que la operación sea eficiente.
Usuarios ejecutivos: trabajan con los sistemas creando estrategias especiales
configurando el sistema. Ejemplo: generando campañas de publicidad en marketing,
creando una nueva línea de préstamos de un banco o armando el nuevo listado de
ofertas de un supermercado, todos publicándose en la página web de la empresa y
pudiendo usar dichos datos para vender los productos/servicios por medio de los
sistemas.
Usuarios de sistemas: se dedican a acceder al sistema para realizar cambios,
actualizaciones, probar y encontrar errores en el sistema para así arreglarlos, pero no
en el mismo ambiente y bases de datos donde acceden los clientes finales.
Un prototipo es un primer modelo que sirve como representación o simulación del producto
final y que nos permite verificar el diseño y confirmar que cuenta con las características
específicas planteadas. De este modo, se prueba el diseño para que el cliente lo vea, defina
y decida lo que quiere, y así tenga mejor aceptación, descartando programaciones
innecesarias.
Las historias de usuario suelen expresarse con una frase simple con la siguiente estructura:
“Como [perfil]”: Quién: suele ser un puesto de trabajo, un cliente o un tipo de usuario,
también conocido como persona del usuario. ¿para quién desarrollamos esto? Buscamos el
perfil de la persona: Juan. Nuestro equipo debería comprender quién es Juan. Con suerte
hemos entrevistado a muchos Juan. Comprendemos cómo trabaja esa persona, cómo piensa
y cómo se siente. Sentimos empatía por Juan.
“Quiero”: aquí describimos su intención, no las funciones que usan. ¿Qué es lo que están
intentando lograr realmente?
“Para”: Para qué: esta es la razón por la cual el usuario necesita la característica o
funcionalidad. ¿Cómo encaja su deseo inmediato de hacer algo en la perspectiva general?
¿Cuál es el beneficio general que intentan lograr? ¿Cuál es el gran problema que debe
resolverse?
El resultado final es un sentimiento: "Como <quién>, quiero <qué> para que <por qué>".
Se pueden agregar más detalles a una historia de usuario dividiéndola en historias de
usuario más pequeñas y agrupándolas en temas.
COMO <ROL/PERFIL>
QUIERO <FUNCIONALIDAD/OBJETIVO>
Una historia de usuario Agile debe ser breve, por lo general cabe en una nota adhesiva o
una tarjeta de notas. Las historias de usuario deben ser escritas por la empresa en el idioma
del cliente para que quede claro tanto para la empresa como para el equipo de desarrollo lo
que quiere el cliente y por qué lo quiere.
En algunos casos, a las historias de usuario también se les asigna un identificador único y
un nivel de esfuerzo/prioridad. El identificador único suele ser un número y permite a los
desarrolladores realizar un seguimiento de cuántas historias de usuario hay y cuándo se
completan. El nivel de esfuerzo o prioridad está más personalizado para el equipo, pero
normalmente es un rango que indica cuánto tiempo llevará la función, cuántos
desarrolladores se necesitarán o cuántos requisitos tiene la función.
Por último, las historias de usuario deben asociarse con criterios de aceptación
predefinidos. Los criterios de aceptación se utilizan para identificar los límites de una
historia de usuario y lo que se debe hacer para que la historia se considere completa. Esto
también podría incluir cualquier prueba que deba realizarse para verificar una historia de
usuario.
Modelo INVEST
El siguiente modelo nos guía para escribir buenas historias de usuario. La palabra INVEST
es un acrónimo que marca las características para tener en cuenta al definir las historias de
usuario:
No hay suficientes detalles. Demasiadas cosas parecen ser obvias cuando no lo son. Lo
que puede ser evidente para una persona, puede ser una sorpresa total para otra. Debes
asegurarte de detallar explícitamente los aspectos esenciales sin importar cuán triviales
creas que son. Sin embargo, debemos tener cuidado con no sobrepasarse con detalles: un
backlog desordenado tiene poco valor.
Escribir tareas técnicas en lugar de las historias. Tener demasiadas funciones técnicas
puede resultar en tener un software que no funcione como usted espera o, peor aún, que no
funcione en absoluto. Deje que el equipo tome la decisión final sobre los aspectos técnicos.
Crean impulso. Con cada historia que pasa, el equipo de desarrollo disfruta de un pequeño
desafío y una pequeña victoria, impulsando el impulso.
Un componente clave del desarrollo ágil de software es poner a las personas primero, y una
historia de usuario coloca a los usuarios finales en el centro de la conversación. Estas
historias utilizan un lenguaje no técnico para brindar contexto al equipo de desarrollo y sus
esfuerzos. Después de leer una historia de usuario, el equipo sabe por qué está
construyendo, qué está construyendo y qué valor crea.
Las historias de usuario son uno de los componentes centrales de un programa ágil. Ayudan
a proporcionar un marco centrado en el usuario para el trabajo diario, lo que impulsa la
colaboración, la creatividad y un mejor producto en general.
Trabajando con historias de usuario
Una vez que se ha escrito una historia, es hora de integrarla en su flujo de trabajo. Por lo
general, una historia la escribe el propietario del producto, el gerente del producto o el
gerente del programa y la envía para su revisión.
Durante una reunión de planificación de sprint o iteración, el equipo decide qué historias
abordarán en ese sprint. En ese momento, los equipos discuten los requisitos y la
funcionalidad que requiere cada historia de usuario. Esta es una oportunidad para ser
técnico y creativo en la implementación de la historia por parte del equipo. Una vez
acordados, estos requisitos se agregan a la historia.
Otro paso común en esta reunión es calificar las historias en función de su complejidad o el
tiempo de finalización. Los equipos usan tallas de camisetas, la secuencia de Fibonacci o el
póquer de planificación para hacer las estimaciones adecuadas. Se debe dimensionar una
historia para que se complete en un sprint, de modo que, a medida que el equipo especifica
cada historia, se asegura de dividir las historias que superarán ese horizonte de finalización.
Tiempo: el tiempo es un tema delicado. Muchos equipos de desarrollo evitan por completo
las discusiones sobre el tiempo y confían en cambio en sus marcos de estimación. Dado que
las historias deben poder completarse en un sprint, las historias que pueden tardar semanas
o meses en completarse deben dividirse en historias más pequeñas o deben considerarse su
propia épica.
1. Claridad
Tus historias de usuario deben ser claras e inequívocas. El propietario del producto, el
desarrollador y el evaluador deben tener un entendimiento común de lo que se entregará a
partir del texto de la historia. A medida que escribas tus historias, asume que, si es posible
que se malinterpreten, se malinterpretarán. Además, asegúrate de que tus historias incluyan
toda la funcionalidad necesaria (excluyendo la navegación).
2. Conciso
Las historias no necesitan ser largas para transmitir el significado funcional esencial. Una o
más oraciones cortas pueden ser suficientes. Recuerda que los criterios de aceptación son
complementarios a la historia.
3. Orientado al usuario
Una historia debe escribirse desde la perspectiva del usuario. La típica recomendación ágil
es el formato:
En algunos casos, el tipo_usuario puede ser otra pieza de software, o quizás incluso un
dispositivo que interactúa con el software, como un sensor.
Sugerencia: Nunca escribas tus historias desde la perspectiva del desarrollador y evita el
término general usuario.
4. Comprobable
5. Medible
Nos referimos aquí a la capacidad de medición del tamaño, utilizando específicamente el
punto de función COSMIC (CFP) como base para el dimensionamiento. Es un estándar
ISO maduro de segunda generación, adecuado para todo tipo de trabajo de software. Las
historias de usuarios solo se pueden medir si contienen expresiones claras de todos los
movimientos de datos que se necesitarán y medirán. La mensurabilidad ayuda
significativamente tanto con la planificación como con el aseguramiento de la calidad. El
tamaño funcional no es el único atributo medible de una historia de usuario, sin embargo,
es uno de los más importantes dado que se relaciona con el esfuerzo de construirlo.
6. Consistente
7. Completa
La falta de requisitos es una de las mayores causas de fallas en los proyectos de software.
La mayoría de los proyectos crecen en tamaño a medida que se hacen evidentes las
necesidades adicionales. Este aumento en el alcance conduce a más trabajo, más
reelaboración, cronogramas extendidos, sobrecostos presupuestarios y, en algunos casos,
fallas en el proyecto. Aunque el enfoque Agile desalienta el trabajo inicial excesivo, es
esencial un trabajo de alcance inicial. Busca cuidadosamente los requisitos que faltan
cuando escribas historias de usuario.
8. Único
Todos los requisitos deben ser únicos. Los requisitos duplicados son un problema que
tiende a ser más frecuente en proyectos más grandes.
9. Valioso
Todas las historias de usuario deben ser valiosas para el "negocio". Es apropiado desafiar el
valor y la importancia de cada historia de usuario, de modo que solo se entregue la
funcionalidad más importante. Si no se puede rastrear una historia de usuario hasta la
entrega de un resultado comercial medible, es posible que no sea valiosa y tal vez deba
excluirse del alcance. El valor financiero real de la historia puede ser difícil de medir,
utilizando el tamaño funcional (CFP) como base para el valor (especialmente para la
medición del valor ganado EVM).
Las historias de usuario no deben hacer referencia a la tecnología utilizada para entregarlas.
Este nivel de detalle se puede incluir como complemento a la historia del usuario para
ayudar a proporcionar contexto sobre "cómo" se debe entregar. Esto es particularmente
adecuado para aspectos no funcionales de cómo se logrará la funcionalidad.
Estas estructuras simples ayudan a los equipos ágiles a gestionar con elegancia el alcance y
la estructura del trabajo.
Digamos que con su equipo quieren hacer algo ambicioso, como lanzar un cohete al
espacio. Para hacerlo, deberán estructurar el trabajo: desde los objetivos más grandes hasta
los detalles minuciosos. Querrán poder responder a los cambios, informar su progreso y
ceñirse a un plan. Épicas, historias e iniciativas son precisamente las herramientas que
necesitarás para hacerlo.
¿Qué son?
En cierto sentido, las historias y épicas en ágil son similares a las historias y épicas en el
cine o la literatura. Una historia es una narración simple; una serie de historias relacionadas
e interdependientes constituye una épica. Lo mismo ocurre con la gestión de su trabajo,
donde la finalización de historias relacionadas conduce a la finalización de una épica. Las
historias cuentan el arco del trabajo completado, mientras que la épica comparte una visión
de alto nivel del objetivo unificador.
En un equipo ágil, las historias son algo que el equipo puede comprometerse a terminar en
un sprint de una o dos semanas. A menudo, los desarrolladores trabajaban en docenas de
historias al mes. Las épicas, por el contrario, son pocas y tardan más en completarse. Los
equipos a menudo tienen dos o tres épicas en las que trabajan para completar cada
trimestre.
Así como las épicas se componen de historias, las iniciativas se componen de épicas. Las
iniciativas ofrecen otro nivel de organización por encima de las épicas. En muchos casos,
una iniciativa compila épicas de varios equipos para lograr un objetivo mucho más amplio
y más grande que cualquiera de las épicas en sí. Si bien una épica es algo que puede
completar en un mes o un trimestre, las iniciativas a menudo se completan en varios
trimestres o un año.
10
¿Qué es un caso de prueba?
Los casos de prueba definen cómo probar un sistema, software o una aplicación. Un caso
de prueba es un conjunto singular de acciones o instrucciones que debe realizar un tester
que valida un aspecto específico de la funcionalidad de un producto o aplicación. Si la
prueba falla, el resultado podría ser un defecto de software que la organización puede
clasificar para arreglar.
Un caso de prueba es un concepto básico en las pruebas de software, pero existen términos
similares que pueden causar confusión a los principiantes o a las personas menos
familiarizadas con el control de calidad. Explicaremos qué es un caso de prueba, en
relación con otros términos técnicos o con nombres similares.
Estos términos son esencialmente intercambiables. Tanto un caso de prueba como un script
de prueba describen una serie de acciones que prueban un elemento de la funcionalidad del
software.
Un caso de prueba cubre una situación de prueba particular o una parte específica de la
funcionalidad del producto. Un plan de prueba es un documento mucho más completo que
cubre todos los aspectos de las pruebas de software inminentes. El propósito del plan de
prueba es alinear las expectativas de toda la organización sobre lo que ocurrirá durante la
prueba, incluido el alcance del proyecto, los objetivos, las fechas de inicio y finalización,
las funciones y responsabilidades, los entregables y la mitigación de defectos.
Un caso de uso describe cómo un sistema realizará una tarea bajo ciertas condiciones. La
documentación de requisitos comerciales o de software describe los casos de uso, que
detallan cómo el usuario final interactuará con el sistema y el resultado que debe recibir.
Los casos de uso describen cómo debería funcionar el producto, mientras que los casos de
prueba describen cómo se debe probar el producto. Los casos de prueba se derivan de los
casos de uso para garantizar que el producto se pruebe a fondo.
En general, escribir y usar casos de prueba conducirá a la optimización del negocio. Los
clientes están más satisfechos, aumenta la retención de clientes, disminuyen los costos de
servicio al cliente y reparación de productos, y se producen productos más confiables, lo
que mejora la reputación y la imagen de marca de la empresa.
Con estos tipos de casos de prueba, el tester escribe una prueba en la que todas las entradas
son conocidas y detalladas, como las condiciones previas y los datos de prueba. Las
pruebas formales tienen una entrada predefinida, lo que significa que proporcionan una
salida esperada, que la prueba intenta validar.
Estos no tienen entradas o salidas conocidas. Los testers ejecutan este tipo de casos de
prueba para descubrir y registrar los resultados, lo que puede revelar hallazgos interesantes
sobre la calidad digital.
La mayoría de los tipos de casos de prueba son formales, planificados con anticipación de
acuerdo con los requisitos del software. Exploremos algunos tipos y ejemplos de casos de
prueba más:
Estas pruebas confirman que la interfaz de usuario (con lo que interactúa el usuario final)
funciona como se esperaba. Por lo general, las pruebas de IU se enfocan en los elementos
visuales de una aplicación o página web para confirmar que funcionan y se desempeñan de
acuerdo con los requisitos. Las pruebas de IU a menudo examinan elementos de
visualización como menús, submenús, botones, tablas y columnas para asegurarse de que
sean legibles y consistentes.
Las interfaces de usuario siguen evolucionando. Por esta razón, las pruebas de IU también
pueden significar validar una interfaz de voz o video. Las pruebas de IU también deben
incluir problemas de accesibilidad, como si un lector de pantalla puede identificar un botón
en una página.
Hay una variedad de tipos de pruebas de rendimiento, incluidas pruebas de carga, tensión,
picos y escalabilidad. Cada tipo de prueba de rendimiento, y cada prueba individual, revela
información diferente sobre cómo responde el sistema a las distintas cargas de usuarios.
Estos tipos de casos de prueba evalúan cómo funciona la funcionalidad combinada cuando
se fusiona con la aplicación. Si bien es importante probar unidades individuales de
software, es igualmente importante asegurarse de que los sistemas dispares puedan
comunicarse entre sí de manera efectiva. El tester debe comprender bien los flujos de la
aplicación para escribir pruebas de integración efectivas.
Las pruebas de API son un aspecto de las pruebas de integración. Las aplicaciones se
comunican entre sí a través de las API, especialmente a medida que los productos se
interconectan más en el mundo centrado en dispositivos móviles de hoy. Las pruebas de
API son un ejercicio vital para cubrir con casos de prueba de integración.
Casos de prueba de usabilidad:
Algunos criterios que las pruebas de la base de datos pueden evaluar incluyen si los datos
se almacenan de manera consistente, si personas no autorizadas pueden acceder a ellos y
cómo se almacenan localmente en un dispositivo. Los datos consistentes y seguros deben
ser una prioridad para todas las empresas, independientemente de los estándares de
cumplimiento de la industria; las pruebas de bases de datos ayudan a lograrlo.
Estos tipos de casos de prueba validan el producto desde la perspectiva del usuario final.
Un usuario final o cliente realiza pruebas de aceptación del usuario en un entorno de prueba
para validar el flujo de extremo a extremo del producto.
Las pruebas de aceptación del usuario pueden ser útiles cuando los requisitos comerciales
cambian durante el curso del desarrollo. Las partes interesadas no siempre comunican de
manera efectiva estos cambios al equipo de desarrollo. A través de los casos de prueba
UAT, la organización puede documentar los criterios de entrada y salida que cubren las
lagunas en las pruebas anteriores.
Estos casos de prueba informales ocurren cuando el tester evalúa el sistema de forma ad-
hoc para intentar descubrir defectos que no se detectaron en las pruebas estructuradas. Si
bien las pruebas exploratorias no están definidas por un conjunto prescrito de acciones, el
enfoque aún requiere cierta estructura, particularmente en lo que respecta a la
documentación de resultados y el calendario, para garantizar una retroalimentación
efectiva.
Las pruebas exploratorias pueden ayudar a validar los requisitos al verificar el sistema de
maneras no cubiertas en las pruebas con guión. Las pruebas exploratorias permiten que la
organización de control de calidad sea adaptable y aprenda de las lagunas en la cobertura de
las pruebas.
aprobado
fallo
sin ejecutar
obstruido
Las pruebas de aprobación y falla indican que el sistema logra lo que se supone que debe
hacer o falla en ese intento. Estos resultados no deben confundirse con las pruebas
diseñadas para ser positivas o negativas, que pueden pasar o fallar. Las pruebas positivas
aseguran que los usuarios puedan seguir todos los pasos y pasar el resultado esperado
cuando la entrada es correcta, como una transferencia de dinero exitosa entre cuentas
cuando hay un saldo superior a $0. Las pruebas negativas aseguran que el sistema maneja
correctamente las entradas no válidas, como no permitir el inicio de sesión si la contraseña
es incorrecta. Ambos tipos de pruebas pasan o fallan dependiendo del resultado esperado.
Los resultados de las pruebas que se marcan como no ejecutados son, como sugiere el
nombre, pruebas que aún no se han ejecutado o que no se ejecutarán como parte de esta
ronda de pruebas. Las pruebas bloqueadas resultan de una circunstancia externa o
condición previa que inhibe la ejecución de la prueba. Por ejemplo, una falla del sistema
que impide que la funcionalidad esté disponible provocará una prueba bloqueada, al igual
que un entorno de prueba configurado incorrectamente.
¿Cuándo tenemos que empezar a construir casos de prueba?
Idealmente uno querría probar absolutamente todas las posibles combinaciones de datos y
situaciones. Esto se hace normalmente imposible debido a la cantidad de casos que
deberíamos generar. Lo que se hace comúnmente es reconocer las situaciones que creemos
son más extremas y algunas de las más comunes. Este proceso debe ser planificado y
documentado.
Cada caso de prueba cuesta dinero: esfuerzo para generarlo, tiempo para prepararlo y
ejecutarlo, esfuerzo para evaluar los resultados y hacer seguimiento en el caso de hallar
errores, teniendo que volver a probarlo y reportar. Por lo tanto, el número de casos de
prueba necesarios para detectar los errores debe ser minimizado para reducir costos.
Los casos de prueba deben ser finitos, cuantos menos y mejor diseñados, es mejor.
Los casos de prueba buscan errores, queremos el menor número de casos de prueba
que encuentre la cantidad máxima de errores
Modelo
ID El ID se le da al caso de prueba.
Requisitos previos Cualquier condición previa o requisito que debe cumplirse antes de
ejecutar la prueba.
En general, el tester debe escribir casos de prueba al principio del SDLC, como durante la
fase de recopilación de requisitos. Los testers deben consultar los requisitos y la
documentación de casos de uso, así como el plan de prueba general cuando escriben casos
de prueba. Un prototipo también puede informar al tester sobre cómo se verá la
característica o funcionalidad cuando se complete.
Una vez que el tester tiene toda esta información, puede comenzar a escribir los diversos
tipos de casos de prueba mencionados anteriormente. Al escribir casos de prueba, el tester
debe considerar los flujos de la aplicación: la forma en que el usuario llega a la
funcionalidad de la aplicación es un elemento importante de su viaje y debe validarse
adecuadamente. Por ejemplo, los cambios en la configuración de la cuenta deben funcionar
correctamente en una aplicación móvil, que puede ser el flujo principal, pero también deben
funcionar en un navegador web, así como en cualquier otro lugar donde los usuarios
puedan interactuar o cambiar la configuración.
Para lograr estos objetivos, los ingenieros de pruebas y control de calidad pueden utilizar
las siguientes prácticas recomendadas:
a. Priorizar qué casos de prueba escribir en función de los plazos del proyecto y los
factores de riesgo del sistema o la aplicación.
b. Crear casos de prueba únicos y evitar casos de prueba irrelevantes o duplicados.
c. Confirmar que el conjunto de pruebas verifica todos los requisitos especificados
mencionados en el documento de especificación.
d. Escribir casos de prueba que sean transparentes y directos. El título de cada caso de
prueba debe ser corto.
e. Los pasos del caso de prueba deben dividirse en los segmentos más pequeños
posibles para evitar confusiones durante la ejecución.
f. Los casos de prueba deben escribirse de manera que permitan que otros los
entiendan fácilmente y modifiquen el documento cuando sea necesario.
g. Ten en cuenta al usuario final siempre que se cree un caso de prueba.
h. No asumir las características y la funcionalidad del sistema.
i. Cada caso de prueba debe ser fácilmente identificable.
j. Las descripciones deben ser claras y concisas.
La mejor práctica es desarrollar por lo menos dos casos de prueba para cada requerimiento
a probar. A medida que se va conociendo el negocio y teniendo más experiencia en el
testing, se va estimando mejor la cantidad de casos de prueba necesarios. Por ejemplo, para
testear correcta y completamente un Login, requiere de 7 casos de prueba.
Los casos de prueba deben ser simples: se deben crear casos de prueba que sean lo más
simple posible ya que otra persona que no sea el autor puede ejecutarlos. Usa un lenguaje
asertivo como “ir a la página de inicio”, “ingresar datos”, “hacer clic en esto”, etc. Esto
facilita la comprensión de los pasos de prueba y hace que la ejecución sea más rápida.
El título debe ser fuerte: la manera correcta de comenzar con el título de un caso de prueba
es con un verbo en infinitivo. Los verbos en infinitivo denotan un mandato.
Tomar al usuario final en cuenta: el objetivo final es crear casos de prueba que cumplan
con los requisitos del cliente y que sean fáciles de usar. Un tester debe crear casos de
prueba tomando en cuenta la perspectiva del usuario final.
Asegurar la mayor cobertura posible: Asegúrate de escribir casos de prueba para todos los
requisitos especificados. Algo que se puede utilizar es una matriz de trazabilidad para
garantizar que se prueben todos los casos de pruebas asociados. La mayoría de las
herramientas permiten vincular los casos de prueba entre sí.
Autonomía: el caso de prueba debe generar los mismos resultados cada vez, sin importar
quién lo pruebe.
La forma de escribir pruebas y casos de prueba eficaces se puede optimizar con el tiempo.
Algunas de las mejores prácticas incluyen el uso de títulos sólidos, descripciones sólidas y
mantener el lenguaje conciso y claro. Pero también querrá incluir condiciones previas,
suposiciones y los resultados esperados.
Como sabes, si se trata de una aplicación web, los resultados de la prueba pueden diferir
según el navegador en el que se ejecute la prueba. Para la facilidad de otros evaluadores,
desarrolladores o quien esté revisando el documento de prueba, debe agregar el nombre y la
versión del navegador al caso para que el defecto se pueda replicar fácilmente.
Mantén las cosas simples y transparentes, pero no demasiado simples, hazlo complejo, pero
no demasiado complejo: mantén todos los pasos de los casos de prueba atómicos y
precisos. El caso de prueba debe ser auto explicativo y fácil de entender.
La revisión por pares es importante, revisando los más seniors las pruebas de otros testers
más juniors para mejorarlos. Este no solo es un momento de verificación y validación, sino
también de aprendizaje continuo. Es importante que quien revise tenga conocimientos de
testing y del negocio. Es una práctica muy importante y que se aplica muy seguido.
Especifica los resultados esperados y los supuestos antes de ejecutar los casos de pruebas.
Recuerda que muchas veces se supone que hay, por ejemplo, datos cargados para poder
correr un caso de prueba, y muchas veces no están cargados o fueron pisados por otra
versión de la base de datos o porque alguien los utilizó para probar.
A medida que aumenta el alcance de un producto, también lo hace la huella de sus casos de
prueba. En pocas palabras, cuanto más desarrolle, más necesitará probar, lo que puede
generar desafíos cuando se trata de escalar conjuntos de pruebas. Los casos de prueba no
solo tienen que mantenerse al día con la nueva funcionalidad, sino que la necesidad de
realizar pruebas de regresión significa que los casos de prueba más antiguos también
necesitan actualizaciones.
Si bien puede ser desalentador administrar conjuntos de pruebas, en última instancia, es una
tarea necesaria para mantener la calidad digital de sus productos. Si la tarea es difícil de
mantener internamente, busque herramientas o servicios que le ayuden a mantenerse al día.
Escenario positivo: el escenario positivo (Happy Path) prueba los requisitos básicos
de una aplicación. Si el resultado de Happy Path es un fracaso, entonces el resto de
las pruebas pueden bloquearse debido a defectos críticos.
Escenarios negativos: prueba los escenarios negativos para ver cómo se comporta el
sistema en caso de entradas inapropiadas.
Escenario de regresión: verifica algunos elementos estándar, como encabezados,
pies de página, opciones de menú estándar, hipervínculo y escenarios
interrelacionados. Estos escenarios de prueba lo ayudarán a realizar pruebas de
regresión.
Análisis de límites: prueba las condiciones de límites para verificar que el sistema
se comporte correctamente en los límites mínimo y máximo sin ningún
comportamiento abrupto.
Escenario de integración: realizar pruebas de integración es necesario cuando un
proyecto tiene varios módulos pero los cambios se realizan en un solo módulo,
verifica si la funcionalidad está funcionando entre todos los módulos
colectivamente.
Paso a paso
Ahora veremos paso a paso cómo debemos realizar un plan de pruebas. Los datos
necesarios para identificar y armar cada caso de prueba incluye diversa información, que
vimos anteriormente pero volveremos a repasar aquellas más relevantes:
Prioridad: Prioridad asignada al caso de prueba, por ejemplo: 1- alta, 2- media, 3-baja.
Requisitos: características del objeto de pruebas que el caso de prueba debe evaluar.
Situación: puede haber un caso en el que esté probando una aplicación, un desarrollador
esté realizando modificaciones en paralelo a la misma aplicación o alguien pueda actualizar
la aplicación después de que termine la prueba. Esto conduce a una situación en la que los
resultados de su prueba pueden variar con el tiempo.
Por lo tanto, siempre es mejor agregar una marca de tiempo con el nombre del evaluador en
los comentarios de la prueba para que el resultado de una prueba (aprobado o reprobado) se
pueda atribuir al estado de una aplicación en ese momento en particular. Alternativamente,
puede tener una columna 'Fecha de ejecución' agregada por separado al caso de prueba
que identificará explícitamente la marca de tiempo de la prueba.
Retroceder acciones (cleanup): Lista de pasos necesarios para retroceder al estado previo a
la prueba.
Dependencias (si hay): orden de ejecución de casos de prueba, razón de las dependencias.
Valores de entrada: descripción de los datos de entrada de un objeto de pruebas. Puede ser
un dibujo o un texto explicando los datos con los que se probará el caso. Debe ser claro y
no dejar dudas.
Los siguientes datos se completan una vez que el caso de prueba se ejecutó:
Ejemplo
· Identificador: 1
· Nombre: Alta de elemento al final de una lista ordenada
· Situación inicial: Lista:(3 → 5 → 7 → 15)
· Acción: Agregar a la lista el elemento 18
· Resultado esperado: Lista: (3 → 5 → 7 → 15 → 18)
Cada vez que se ejecuta un caso debe registrarse la información resultante para que quien
sea responsable del código probado, sepa si está correcto o se produjo algún error o
resultado no deseado.
Aquí se obtiene un resultado real de la ejecución del código que denominamos Resultado
Final de la Ejecución del Caso de Prueba.
Las ejecuciones de casos se agrupan en “Corridas” que se deben identificar para saber
cuándo (y a veces quién) realizó una ejecución.
La forma en cómo se seleccionan los casos de prueba es una de las principales decisiones a
tomar, teniendo en cuenta las siguientes consideraciones:
Los casos de prueba deben ser revisados regularmente, escribiendo nuevas pruebas que
ejerciten diferentes partes del software, con el objetivo de encontrar más defectos
Otro aspecto que se debe considerar al realizar pruebas es decidir cuándo el programa falla
para un conjunto de datos de entrada, o sea, conocer cuál es la salida esperada del
programa. Este problema es conocido como el problema del oráculo.
Un oráculo es lo que nos dice qué resultado debemos esperar ante determinadas entradas y
condiciones de ejecución.
personas
modelos
Documentos
productos similares
normas o estándares
Existen diversas clases de oráculos, y la automatización del oráculo puede llegar a ser muy
compleja y costosa. El oráculo más común es el oráculo entrada/salida, que especifica la
salida esperada para una entrada específica. Si el programa hace exactamente lo que su
especificación dice que debe hacer y no hace nada más, entonces cumple con su
especificación.
En este punto es interesante reflexionar sobre algo a lo que se llama la Paradoja del
Pesticida: los insectos (bugs, refiriéndose a fallos) que sobreviven a un pesticida se hacen
más fuertes, y resistentes a ese pesticida. O sea, si diseñamos un conjunto de pruebas
probablemente ciertos bugs sobrevivan. Si luego diseñamos una técnica más completa y
llamémosle “exhaustiva”, entonces encontraremos más bugs, pero otros seguirán
sobreviviendo. Al fin de cuentas los que van quedando son los más duros de matar, y se
van haciendo resistentes a los distintos pesticidas.
Obtención de casos de prueba a partir de requisitos
El diseño de casos de prueba debe ser un proceso controlado.
Los casos de prueba pueden ser creados formal o informalmente, dependiendo de las
características del proyecto y la madurez del proceso en uso.
Cobertura de pruebas
Es una medida de calidad de las pruebas. Se definen cierto tipo de entidades sobre el
sistema, y luego se intenta cubrirlas con las pruebas. Es una forma de indicar cuándo
probamos suficiente, o para tomar ideas de qué otra cosa probar (pensando en aumentar la
cobertura elegida).
Trazabilidad
Las pruebas deben ser trazables: ¿qué casos de prueba han sido incluido en el catálogo o
listado de pruebas, basados en qué requisitos?
Las consecuencias de los cambios en los requisitos sobre las pruebas a realizar pueden ser
identificadas directamente.
Pasos compuestos
En primer lugar, ¿qué es un paso compuesto? Es aquel que se puede dividir en varios pasos
individuales.
Ejemplo: estás dando instrucciones desde el punto A al punto B: si dices que 'Ve al lugar
XYZ y luego al ABC', esto no tendrá mucho sentido, porque aquí nos encontramos
pensando: '¿Cómo puedo llegar a XYZ en primer lugar”- en lugar de comenzar con “Gire a
la izquierda desde aquí y avance 1 kilómetro, luego gire a la derecha en R número 11 para
llegar a XYZ ” podría lograr mejores resultados.
Las mismas reglas exactas se aplican a las pruebas y sus pasos también.
Por ejemplo: escribiendo una prueba para Amazon.com: haga un pedido de cualquier
producto. Recuerde, las pruebas siempre tratan sobre 'Cómo' realizar la prueba, por lo que
es importante escribir los pasos exactos de 'Cómo pagar y pagar' en su prueba.
1. Dirigirse a: Amazon.com
2. Busque un producto ingresando la palabra clave / nombre del producto en el campo
'Buscar' en la parte superior de la pantalla.
3. De los resultados de búsqueda que se muestran, elija el primero.
4. Haga clic en Agregar al carrito en la página de detalles del producto.
5. Checkout y pago.
6. Consulta la página de confirmación del pedido.
El paso “5” es un paso compuesto, por lo tanto, el caso anterior es más efectivo cuando se
escribe de la siguiente manera:
Cada vez más proyectos tienen que afrontar esta situación en estos días. La falta de
documentación, la programación extrema, los ciclos de desarrollo rápidos son algunas de
las razones que nos obligan a confiar en la aplicación (una versión anterior más o menos)
para escribir las pruebas o para basar las pruebas en sí.
Ejemplo: si la siguiente es la página para la que está escribiendo / diseñando los pasos de
prueba:
Caso 1:
Caso 2:
1. Inicie el sitio de compras.
2. Haga clic en Envío y devolución.
3. En el cuadro de texto 'Ingrese el número de pedido' presente en esta pantalla,
ingrese el número de pedido.
4. Haga clic en Continuar - Resultado esperado: se muestran los detalles del pedido
relacionados con el envío y las devoluciones.
Ejemplo:
Lo que tenían que ser 4 casos diferentes se combinan en uno. Podrías estar pensando: ¿Qué
hay de malo en eso? Está ahorrando mucha documentación y lo que puedo hacer en 4, lo
estoy haciendo en 1. Bueno, no del todo, ¿por qué?
¿Qué pasa si una de las condiciones falla? Tenemos que marcar toda la prueba como
'fallida'. Si marcamos el caso completo como 'fallido', significa que las 4 condiciones no
están funcionando, lo cual no es realmente cierto.
Las pruebas deben tener un flujo. Desde la condición previa hasta el paso 1 y todos los
pasos. Si sigo este caso, en el paso A, si tiene éxito, iniciaré sesión en la página, donde la
opción 'iniciar sesión' ya no está disponible. Entonces, cuando llegue al paso B, ¿dónde
ingresará el tester el nombre de usuario? Verás, el flujo está roto.
Por eso, escribir pruebas modulares, parece mucho trabajo, pero todo lo que necesitas es
separar las cosas y usar a nuestros mejores amigos Ctrl + C y Ctrl + V para trabajar para
nosotros.
Ejemplo:
Veamos cómo escribir casos de prueba de manera eficiente para una pantalla de 'Inicio de
sesión' familiar y simple como se muestra en la siguiente figura. Los enfoques de prueba
será casi el mismo incluso para pantallas complejas con más información y características
críticas.
El primer enfoque para cualquier proceso de caso de prueba será obtener un prototipo de
pantalla, si está disponible. Es posible que esto no esté disponible para algunas de las
funcionalidades y depende de la importancia de diseñar un prototipo en las primeras etapas
de desarrollo.
Por lo tanto, decida cuál es el mejor documento para redactar casos, ya sea un documento
de requisitos del usuario o una especificación de requisitos funcionales (o incluso un
documento SRS si el equipo de pruebas lo puede entender cómodamente) que
proporcionará un flujo funcional completo de lo seleccionado. característica para ser
probado.
Una vez que el prototipo de pantalla y las especificaciones funcionales están en su lugar, el
tester debe comenzar a escribir los casos con el siguiente enfoque y criterio.
Pruebas de IU, Interfaz Usuaria: los controles / campos que son visibles para el
usuario. Hay controles estáticos y dinámicos disponibles para probar la función. Por
ejemplo, En la pantalla de inicio de sesión anterior, los textos de 'Nombre de
usuario y contraseña' son campos estáticos que no requieren la interacción del
usuario, solo para mostrar el texto.
Casos funcionales: Por otro lado, el botón Iniciar sesión y los Hipervínculos
(¿Olvidó su contraseña? Y Registro) son campos dinámicos que requieren la
interacción del usuario haciendo clic en los controles, que realizarán alguna acción
después.
Casos de bases de datos: Una vez que el usuario ingresa el nombre de usuario y la
contraseña, las pruebas se pueden escribir para verificar la base de datos
relacionada, si el nombre de usuario y la contraseña están verificados en la base de
datos y la tabla correctas y también el usuario tiene permiso para iniciar sesión en la
aplicación bajo prueba.
Pruebas de proceso: esto está relacionado con el proceso (no las acciones
asociadas con los controles visibles disponibles en la pantalla) asociado con la
característica y la funcionalidad.
i) Flujo básico
iii) Opciones
iv) Excepciones
Por ejemplo, Veamos el enfoque BAOE simple para la pantalla de inicio de sesión
Flujo básico: Ingrese la ruta URL del inicio de sesión en cualquier navegador e ingrese la
información requerida e inicie sesión en la aplicación.
Opciones: ¿Cuáles son las opciones disponibles para llegar a la misma pantalla de inicio de
sesión?
Ejemplo, después de iniciar sesión en la aplicación, al hacer clic en 'Cerrar sesión' puede
aparecer la misma pantalla o, si el tiempo de espera de la sesión o la sesión expiró, el
usuario puede acceder a la pantalla de inicio de sesión.
Excepciones
¿Cuáles son las excepciones si mis pruebas son negativas?
10. Haga clic en Iniciar sesión sin ingresar Haga clic en el botón Iniciar sesión para
ningún texto en los cuadros Nombre de alertar a un cuadro de mensaje 'El nombre
usuario y Contraseña. de usuario y la contraseña son obligatorios'.
11. Haga clic en Iniciar sesión sin ingresar Haga clic en el botón Iniciar sesión para
texto en el cuadro Nombre de usuario, alertar a un cuadro de mensaje 'La
pero ingrese texto en el cuadro contraseña es obligatoria'.
Contraseña.
12. Haga clic en Iniciar sesión sin ingresar Haga clic en el botón Iniciar sesión para
texto en el cuadro Contraseña, pero alertar a un cuadro de mensaje 'El nombre
ingresando texto en el cuadro Nombre de usuario es obligatorio'.
de usuario.
14. Ingrese el nombre de usuario y la No debe aceptar el texto que comience con
contraseña comenzando con los caracteres especiales, lo cual no está
caracteres especiales. permitido en el Registro.
17. Actualiza la página de inicio de sesión. La página debe actualizarse con los campos
Nombre de usuario y Contraseña en blanco.
18. Ingrese el nombre de usuario. Depende de la configuración de llenado
automático del navegador, los nombres de
usuario ingresados previamente deben
mostrarse como un menú desplegable.
20. Mueva el foco al enlace Olvidé mi Deben poder utilizarse tanto el clic del ratón
contraseña usando Tab. como la tecla Intro.
21. Mueva el foco al enlace Registro Deben poder utilizarse tanto el clic del ratón
usando Tab. como la tecla Intro.
22. Actualice la página de inicio de sesión El botón Iniciar sesión debe estar enfocado
y presione la tecla Intro. y la acción relacionada debe activarse.
25. Introduzca la URL de inicio de sesión La misma pantalla de inicio de sesión debe
en los navegadores Chrome, Firefox e mostrarse sin mucha desviación en el
Internet Explorer. aspecto y la alineación del texto y los
controles de formulario.
26. Ingrese las credenciales de inicio de La acción del botón Iniciar sesión debe ser
sesión y verifique la actividad de inicio la misma en todos los navegadores.
de sesión en los navegadores Chrome,
Firefox e Internet Explorer.
27. Verifique que el enlace Olvidé la Ambos enlaces deben llevar a las pantallas
contraseña y el registro no esté roto en relativas en todos los navegadores.
los navegadores Chrome, Firefox e
Internet Explorer.
30. Verificar la pantalla de inicio de sesión Esto debe lograrse usando muchas
permite que los usuarios concurrentes combinaciones de sistema operativo y
del sistema y todos los usuarios navegadores, ya sea física o virtualmente, o
obtengan la pantalla de inicio de sesión puede lograrse usando alguna herramienta
sin demoras y dentro del tiempo de prueba de rendimiento / carga.
definido de 5-10 segundos.
Cree casos de prueba que estén completos: pasos, datos, variables, etc. Esto
garantizará que los datos / variables (aunque no similares) se puedan reemplazar
simplemente cuando se requiera un caso de prueba similar.
Los criterios de entrada y salida deben definirse adecuadamente.
Los pasos modificables o la declaración en los pasos deben resaltarse en un color
diferente para encontrarlos y reemplazarlos rápidamente.
El lenguaje utilizado para la creación de casos de prueba estándar debe ser genérico.
Todas las características de cada sitio web deben cubrirse en los casos de prueba.
El nombre de los casos de prueba debe ser el nombre de la funcionalidad o la
característica que cubre el caso de prueba Esto facilitará mucho la búsqueda del
caso de prueba del conjunto.
Si hay una muestra básica o estándar, un archivo GUI o una captura de pantalla de
la función, debe adjuntarse con los pasos correspondientes.
Al usar los consejos anteriores, uno puede crear un conjunto de scripts estándar y usarlos
con modificaciones pequeñas o necesarias para diferentes sitios web.
El uso de un conjunto estándar de casos de prueba manuales para diferentes sitios web con
modificaciones menores es la mejor manera de realizar una prueba de sitio web. Todo lo
que necesitamos es crear y mantener los casos de prueba con los estándares y el uso
adecuados.
Una prueba realizada con precisión es fácil de ejecutar lo que significa que, si el tester
sigue las instrucciones, el resultado de aprobado o fallido será correcto. Se puede medir
fácilmente por medio del tiempo que se tarda en ejecutar la prueba, y si el tester tiene que
buscar o no aclaraciones en el proceso de prueba.
Los pasos de los casos de prueba deben ser escritos en forma activa. El tester debe saber
qué hacer, y cómo hacerlo.
Es necesario tener en cuenta la longitud de los casos de prueba para saber cuán compleja y
precisa es la prueba.
Un buen caso de prueba debe tener entre 8 y 16 pasos ―en el método paso a paso.
Existen varias ventajas en mantener los casos de prueba cortos: se requiere menos tiempo y
hay menos posibilidades de cometer errores, de necesitar ayuda o de alguna pérdida de
datos.
Con base en la longitud de los casos de prueba es posible estimar con precisión el tiempo y
el esfuerzo que se debe invertir en la prueba, lo mismo que sus resultados.
En los casos de prueba de matriz, una buena longitud oscila entre 18 y 20 minutos para la
prueba.
Tipos de Mantenimiento
Si un problema es detectado por el usuario, inmediatamente puede notificarlo al
administrador del sistema. Dicha petición debe ser atendida por el administrador y este
procederá a diagnosticar de qué tipo de mantenimiento se trata, luego de finalizar las etapas
de desarrollo de un sistema.
Las tareas de los procesos de desarrollo que va a ser necesario realizar son determinadas en
función de los componentes del sistema actual afectados por la modificación. Estas tareas
pertenecen a actividades de los procesos análisis, diseño, desarrollo y pruebas.
Por último, y antes de la aceptación del usuario, es preciso establecer un plan de pruebas de
regresión que asegure la integración del sistema de información afectado.
Revisiones periódicas
El monitoreo permanente del sistema asegura que las necesidades de mantenimiento sean
identificadas y satisfechas cuando resulte necesario. Cuando el sistema es de uso
prolongado, se puede establecer un mecanismo para recibir retroalimentación de los
usuarios como una forma efectiva para determinar las necesidades de mantenimiento y
modificación.
A los sistemas se les debe dar mantenimiento para asegurar que continúen operando en el
nivel mostrado durante la etapa de prueba. Si los sistemas se deterioran, existe el riesgo de
que no se desempeñen conforme a los estándares requeridos.
Los casos de prueba deben considerar una variedad de condiciones que se espera que
maneje el software. El caso de prueba debe poder probar exhaustivamente el módulo de
software con casi todas las combinaciones posibles de condiciones principales.
Para poder probar exhaustivamente todas las combinaciones de condiciones, el probador de
software debe encontrar una manera de presentar estas condiciones de manera que sea fácil
de seguir, revisar y modificar para otros si el proceso del mundo real exige tales acciones.
Cubrir una pequeña parte de la funcionalidad: necesitan probar una parte más grande del
sistema
Los casos de prueba a menudo se centran en una función específica. A menudo, esta
función está determinada por el diseño técnico interno del software. Tales prácticas a
menudo se encuentran en grandes aplicaciones monolíticas como SAP u Oracle ERP,
donde un probador de software no siempre puede tener conocimiento de todo el proceso
comercial, por lo que el caso de prueba nunca termina reflejando lo que el diseñador de
prueba no sabe, pero debería tener. hizo el esfuerzo de comprender.
En cambio, los casos de prueba deben reflejar los patrones y flujos de uso. Cada caso de
prueba debe tratar de cubrir la mayor parte del flujo que sea razonablemente posible,
cruzando los límites técnicos y modulares de la aplicación.
A menudo hemos visto casos de prueba escritos para un rol de usuario muy específico, sin
tener en cuenta a todos los demás usuarios de la aplicación. Esto limita el alcance de los
casos de prueba y, por lo tanto, compromete significativamente su efectividad. Dichos
casos de prueba prueban efectivamente solo pequeños elementos de la aplicación, mientras
que engañosamente pretenden ser casos de prueba completos y sólidos.
Los casos de prueba que son más efectivos reflejan los patrones de uso, o lo que el mundo
Agile denomina viajes de usuario. Una aplicación comercial, por ejemplo, debe probarse
con casos de prueba diseñados para probar todo el proceso comercial, cubriendo todos los
roles de usuario y todos los sistemas que podrían estar involucrados en el proceso
comercial.
Escrito para demostrar que los casos de uso más comunes están bien cubiertos en la
aplicación
Esto es uno de los problemas más comunes y es el resultado de lo que yo llamo un enfoque
'perezoso' para el diseño de pruebas. El diseñador de pruebas simplemente convierte el
documento de requisitos en casos de prueba.
En cambio, el diseñador de la prueba debe buscar los "casos de esquina" o las "condiciones
de contorno". La mayoría de los desarrolladores pueden escribir fácilmente código para los
casos de uso más comunes. Los problemas surgen en el momento en que hay una condición
que es incluso ligeramente diferente al caso de uso más común o previsto. Un caso de
prueba bien diseñado los detectará de manera fácil y consistente.
Catalogación de casos de prueba y control de versiones
A menudo, cientos de casos de prueba se escriben con mucho esfuerzo y luego se vuelcan
en una estructura de carpetas compartidas. Si bien esto puede funcionar si tiene muy pocos
casos de prueba, un sistema mal organizado colapsa en el momento en que la cantidad de
casos de prueba aumenta más allá de un puñado.
Por lo tanto, necesita una herramienta de prueba de software que pueda etiquetar y
catalogar sistemáticamente los casos de prueba. Luego, su herramienta de prueba de
software debería poder "sacar" casos de prueba cuando sea necesario ejecutarlos. Para que
todo este proceso sea fluido en todo el equipo de pruebas de software, necesita una
poderosa herramienta de pruebas que pueda crear y mantener sin esfuerzo múltiples
versiones de casos de prueba.
12
Los formularios son herramientas importantes para muchos sitios web ya que sirven como
dispositivos de comunicación con los clientes, creando una conexión entre los visitantes y
las empresas.
Que los clientes puedan enviar la información que quieren de manera correcta a través del
formulario es importante como, por ejemplo en el caso de un pedido o una consulta de
soporte. Ahí tenemos información que se debe representar de la manera que quiere el
cliente y por eso es importante que probemos el correcto funcionamiento del formulario.
Por ejemplo, una tienda de ropa en línea podría usar un formulario de encuesta para que sus
clientes califiquen diferentes aspectos del sitio web que les gustan y no les gustan. La
tienda puede realizar pruebas al formulario para evaluar si el diseño está en línea con la
estética general del sitio web. También, pueden asegurarse de que la fuente sea legible, que
sea de fácil acceso, que cada opción sea funcional y no tenga errores técnicos o de
usabilidad. Ya que, en caso que enviemos un formulario que no esté probado podemos
perder toda esa información que para la empresa puede ser de mucha utilidad.
Conclusión: ya entendemos que es un formulario, que son las pruebas de formulario y por
qué son importantes, pero, ahora hay una pregunta que nos aparece, ¿qué elementos
componen un formulario y que cosas deberíamos validar de dichos elementos ?
Hay muchas convenciones que damos por sentado en los formularios, por ejemplo si me
piden ingresar numeros, que solo pueda ingresar numeros o que si voy a ingresar mi
contraseña no se pueda ver el texto y aparezcan circulos negros.
Pero esto hay que validarlo y para eso tenemos que entender cómo funcionan estos campos
y qué tipos de campos existen. En esta guía veremos los distintos tipos de campos que
existen y cuáles son algunas de las validaciones importantes que tenemos que hacer.
Inputs
HTML, que es el lenguaje de programación usado para crear formularios, nos propone una
gran diversidad de alternativas a la hora de crear nuestros formularios, es decir, una gran
variedad de elementos para diferentes propósitos. Estas van desde la clásica caja de texto,
hasta la lista de opciones en un menú desplegable, pasando por las cajas de validación, etc.
Por ahora nos concentramos en los inputs y más adelante veremos las cajas o menús
desplegables
Los campos de texto son generados en el código por medio de la etiqueta <input> por eso
les decimos inputs. Con solo la etiqueta input decimos que el formulario va a tener un
campo de texto, pero, no tiene definido ningún tipo de dato concreto.
Tipo de inputs
Para poder especificar el tipo de dato que se va a ingresar en nuestro input se le agrega un
atributo llamado type y a ese atributo se le especifica el tipo de dato, por ejemplo: <input
type="number">. Esto haría un input de tipo numérico. Veamos entonces todos los tipos de
datos que nos permite el input.
1. TEXT (Texto)
Este tipo permite al usuario ingresar texto.
Se vería así:
Para textos muy grandes usamos otro tipo de input llamado textarea, que lo veremos más
adelante.
Caracteres especiales
Los caracteres especiales son caracteres que no están presentes en el diseño del
teclado. Se pueden usar si se presiona una combinación de teclas en el teclado (ej:
coma, ©,®, #)
Caracteres de control
Un carácter de control es, en el ámbito de la informática, un carácter no imprimible
que sirve para uso interno de la computadora (ej: null, ETX)
Máximo posible
Usualmente nosotros validamos una longitud de caracteres que elija el programador,
supongamos que el programador elige que se pueden ingresar 100 caracteres,
deberemos probar qué más de 100 no se pueda.
El máximo posible de caracteres que se puede ingresar por defecto en un campo de
texto es 524,288 caracteres.
2. NUMBER (Numérico)
Este tipo permite al usuario ingresar números. Los navegadores vienen con validaciones
para evitar que el usuario ingrese algo que no sea números. Además, en los navegadores
modernos, los campos numéricos suelen venir con controles que permiten a los usuarios
cambiar su valor de forma gráfica.
Se vería así:
Máximo posible
Usualmente nosotros validamos una longitud numérica que elija el programador,
supongamos que el dato a ingresar es un año, el programador pondrá que no se
puedan ingresar más de 4 caracteres y nosotros deberemos validar que el
funcionamiento sea correcto.
Dato de color: el máximo posible de caracteres numéricos que se puede ingresar por
defecto es de 524,288 caracteres numéricos.
No nulos
Significa que no permite enviar el formulario con ese campo vacío, seguramente lo
has visto en algún formulario de google que has completado en el pasado. Depende
de como armemos el formulario y que consideremos importante, este tipo de
restricciones pueden existir o no. Por ejemplo, muchas veces los datos personales
son campos marcados como no nulos, ya que son fundamentales para poder
procesar y gestionar los datos ingresados.
3. DATE (Fechas)
Este le permite al usuario ingresar una fecha, ya sea mediante una caja de texto o una
interfaz gráfica con selector de fecha.
Se vería así:
Validaciones a realizar en los campos de fechas
Al encontrarnos con un campo de fecha, nosotros como testers tenemos la tarea de validar
los siguientes puntos, para que el formulario funcione de la manera esperada.
Caracteres especiales
Los caracteres especiales son caracteres que no están presentes en el diseño del
teclado. Se pueden usar si se presiona una combinación de teclas en el teclado (ej:
coma, ©,®, #). Es necesario corroborar si el formulario acepta o no acepta este tipo
de caracteres según los requerimientos planteados en el proyecto.
No nulos
Significa que no permite enviar el formulario con ese campo vacío, seguramente lo
has visto en algún formulario de google que has completado en el pasado.
4. Email
Este tipo permite al usuario ingresar un mail. Los navegadores vienen con validaciones para
validar que se esté ingresando con el formato correcto de un mail. Este input se va a ver
como un input de texto común y corriente.
Caracteres especiales
Qué podamos poner un mail con caracteres especiales, por ejemplo
**testers!!@egg.com
5. Texto oculto
Hay determinados casos en los que podemos desear esconder el texto escrito en el campo
input, por medio de círculos negros, de manera que aporte una cierta confidencialidad. Para
esto vamos a usar el type password.
Se vería así:
Validación campo oculto
Con el campo oculto lo único que tenemos que validar es su correcto funcionamiento, si yo
ingreso texto en dicho campo debería mostrarlo oculto.
Este tipo de campos son prácticos cuando el contenido a enviar no es un nombre, teléfono,
edad o cualquier otro dato breve, sino más bien, un comentario, opinión, etc. En los que
existe la posibilidad de que el usuario desee rellenar varias líneas.
El resultado es el siguiente:
Caracteres especiales
Los caracteres especiales son caracteres que no están presentes en el diseño del
teclado. Se pueden usar si se presiona una combinación de teclas en el teclado (ej:
coma, ©,®, #)
Caracteres de control
Un carácter de control es, en el ámbito de la informática, un carácter no imprimible
que sirve para uso interno de la computadora (ej: null, ETX)
Máximo posible
Como ya vimos en el campo de texto, usualmente nosotros validamos una longitud
numérica que elija el programador, supongamos que el dato a ingresar es un parrafo
de 100 caracteres, el programador pondrá que no se puedan ingresar más de 100
caracteres y nosotros deberemos validar que el funcionamiento sea correcto.
Configuraciones extras
Vamos a explicar algunas configuraciones que le podemos poner a nuestros campos de
texto para que funcionen de manera distinta, esta información es por si llegan a encontrarse
con campos con alguna de estas características, entiendan cuál es la configuración que se
les ha asignado.
maxlength: indica el tamaño máximo del texto, en número de caracteres, que puede ser
escrito en el campo. En caso de que el campo de texto tenga el atributo maxlength, el
navegador no permitirá escribir más caracteres que los que hayamos indicado.
placeholder: este atributo especifica una pequeña pista que describe el valor esperado para
el campo (input).
La pequeña sugerencia se muestra en el campo de entrada antes de que el usuario ingrese
un valor. Una vez que escriba, ese valor va a desaparecer.
Es importante destacar que esto no significa que el usuario no pueda escribir en dicho
campo, si quiere puede cambiar lo que está por defecto, por lo que él quiera
En este ejemplo vemos un campo con título, otro sin título que el usuario no entendería por
qué debe llenarlo y con qué información debería llenarlo.
Es por eso que para indicarle al usuario qué información debería ingresar en el campo o
input se incorpora un título a dicho campo, este título suele ponerse con una etiqueta de
html llamada <label>, por lo que si en algún momento de la guía ven la palabra label, sepan
que es el texto que aparece previo a un campo de texto.
La validación para esto es que el título se corresponda con el tipo de campo a rellenar, si
el título del campo dice nombre y solo me deja ingresar números, ¡tenemos un problema!
Por ejemplo, pensemos que queremos que el usuario indique su país de residencia. En ese
caso podríamos ofrecer una lista de países para que seleccione el que sea. Este mismo caso
se puede aplicar a gran variedad de informaciones, como el tipo de tarjeta de crédito para
un pago, la puntuación que da a un recurso, si quiere recibir o no un boletín de novedades,
etc...
Este tipo de opciones predefinidas por nosotros pueden ser expresadas por medio de
diferentes campos de formulario. Veamos a continuación cuales son:
Listas de opciones
Las listas de opciones son ese tipo de menús desplegables que nos permiten elegir una (o
varias) de las múltiples opciones que nos proponen. Esto en una página se vería así:
Datos requeridos
Que la lista de opciones tenga todas las opciones necesarias, por ejemplo si la lista
de opciones es sobre los meses del año, que tenga los 12 meses como opción.
Datos seleccionables
Que la lista de opciones le permita al usuario seleccionar cualquiera de las opciones
que se encuentran disponibles.
Modificar selección
Que el usuario pueda cambiar la opción que eligió, por ejemplo, elegí el mes enero
y después lo quiero cambiar, que la lista me dejé realizar ese pequeño cambio.
Tiempo de respuesta
Validar que la lista de opciones no tarde demasiado tiempo en mostrar las opciones
o en elegir opciones, sino el usuario puede interpretar que durante ese tiempo
muerto el proceso se ha trabado
Orden
Validar que la lista de opciones muestre el orden correcto de las opciones por
ejemplo, no puede mostrar los meses así:
A. Noviembre
B. Mayo
C. Enero
Selección múltiple
En algunos casos en las listas de opciones se puede seleccionar más de una opción,
validar si esto sería correcto o no según el campo que tiene que completar el
usuario.
Por ejemplo, si estamos dando una lista de opciones con los meses del año para que
ingrese en qué mes nació, no puede poner dos opciones pero, si le estamos
preguntando en qué meses es invierno, debería poder elegir más de una opción.
Botones de opción
Existe otra alternativa para plantear una elección, en este caso, obligamos al usuario a elegir
únicamente una de las opciones que se le proponen. Para esto usamos los botones de
opción.
Los botones de opción pueden ser, por ejemplo, una lista de agujeros circulares que pueden
contener un espacio blanco (para la opción de “no seleccionado”) o un punto (para la
opción de “seleccionado”). Adyacente a cada botón de opción normalmente se muestra un
texto que describe la opción que representa el botón de opción.
Marcar y desmarcar
Que el usuario pueda cambiar la opción que eligió, por ejemplo, elegí invierno y
después lo quiero cambiar, que el botón de opción me dejé desmarcar la opción y
elegir otra.
Datos requeridos
Que los botones de opción tengan todas las opciones necesarias, por ejemplo si los
botones de opciones son sobre los meses del año, que tenga los 12 meses como
opción.
Botones
Como podremos imaginarnos, en formularios no solamente habrá elementos o campos
donde solicitar información del usuario, sino también habrá que implementar otra serie de
funciones. Concretamente, han de permitirnos su envío mediante un botón. También puede
resultar práctico poder proponer un botón de borrado o bien un botón de volver.
Botón de envío de formulario (botón submit)
Para dar por finalizado el proceso de relleno del formulario y hacerlo llegar a su gestor, el
usuario ha de enviarlo por medio de un botón previsto a tal efecto. Usualmente el botón de
encuentra al final del formulario y tiene un texto acorde.
No nulos
En caso que tengamos datos obligatorios, el botón no nos debería dejar enviar el
formulario sin antes llenar dichos campos o no debería mostrar un mensaje de error.
URL
Hay una cosa extra que podemos validar cuando hacemos click en el botón de envío y es
cerciorarnos de que los datos sensibles no se envíen a través de la url.
Estas peticiones también se usan para enviar la información, cuando nosotros le damos al
botón de submit en nuestro formulario, enviamos una petición HTTP con toda nuestra
información para que el servidor la guarde.
Get y Post
Como podemos ver hay dos tipos de peticiones, una que es de traer (get) información del
servidor y otra que es enviar (post) información al servidor. Estos dos métodos, llamados
get y post, nos ayudan a definir cada acción que se realiza en nuestro servidor, los
programadores definen según necesidad si hacen que “x” acción sea get o post.
El problema con nuestro formulario aparece cuando en vez de poner el formulario con un
método post, lo ponemos con un método get y ahí vamos a ver toda nuestra información en
la url.
Como podemos ver en la url se puede ver que ingresó el usuario en cada campo, ahora
podría guardar esa url y enviar otros parámetros sin sentido.
14
Las herramientas de gestión de pruebas ayudan a tener todo organizado, almacenan los
casos y resultados de las pruebas, gestionan el flujo de trabajo de los defectos y
proporcionan informes útiles para analizar las tendencias y el progreso. Para los proyectos
más pequeños, una hoja de cálculo puede ser suficiente. Los generadores de datos ahorran
tiempo. Ya que generan datos a partir de información ya existente y tus normas. Son muy
útiles para obtener información de varias fuentes. Después se debe verificar la precisión de
los resultados.
¿Qué es TestLink?
TestLink es un software basado en la Web que funciona como herramienta de gestión de
proyectos y pruebas tanto manuales como automatizadas.
Al ser un software basado en la Web, brinda la posibilidad de establecer roles para distintos
usuarios dentro de una cuenta.
Especificaciones de TestLink
La siguiente tabla enumera algunas de las especificaciones importantes de TestLink.
3 Métodos de prueba
Pruebas ágiles
Pruebas de caja negra
Prueba exploratoria
Pruebas funcionales/manuales
Pruebas tradicionales
4 Objetivos de la herramienta
Pruebas de escritorio
Pruebas web
5 Funciones de gestión
Gestión de requisitos
Gestión de pruebas
Reporte
6 Requisitos de Software
Apache: 2.2.2.1
MySQL: 5.5.16
PHP: 5.3.8
PhpMyAdmin: 3.4.5
Servidor FTP de Filezilla: 0.9.39
Tomcat: 7.0.21
7 Manejo de errores
Capturar capturas de pantalla
Ventajas de TestLink
Desventajas de TestLink
Implementación
Es la etapa donde los diseños de prueba realizados en las etapas previas del STLC como
casos, procedimientos y datos de prueba, se configuran para estar listos para la etapa
siguiente -Ejecución-. Es un proceso que respeta un orden lógico y prioritario establecido
por el Gerente de pruebas, quien también prepara los entornos para la ejecución de las
pruebas.
· Las pruebas concretas, por ejemplo, brindan ejemplos listos del comportamiento
apropiado del software si se documentan de acuerdo con las condiciones de la
prueba.
· A los expertos en dominios les resulta más fácil verificar las pruebas concretas que
las reglas comerciales no concretas, lo que les permite detectar fallas en las
especificaciones del software.
Entorno de pruebas
El primer paso es configurar el entorno de pruebas
Esta es una fase crucial del ciclo de vida de las pruebas de software y requiere la ayuda de
otros miembros de la organización. Los tester deben tener acceso a las capacidades de
informe de errores, así como a la arquitectura de la aplicación para respaldar el producto.
Sin estos elementos, es posible que los tester no puedan hacer su trabajo.
Una vez listos, los testers establecen los parámetros para el entorno de prueba, que incluyen
el hardware, el software, los datos de prueba, los marcos, las configuraciones y la red. En
esta fase STLC, los testers ajustan estos parámetros ambientales según lo que requiera el
caso de prueba.
Un entorno de prueba lo ayuda aún más al proporcionar un entorno dedicado para que
pueda aislar el código y verificar el comportamiento de la aplicación. Esto garantiza que no
se esté ejecutando en el servidor ninguna otra actividad que pueda influir en el resultado de
las pruebas.
Planificación adecuada del uso de recursos. La planificación ineficaz del uso de recursos
puede afectar el resultado real. Además, puede dar lugar a conflictos entre equipos.
¡Pro tip alert! Prácticas recomendadas para configurar una gestión del entorno de
prueba
Comprende los requisitos de la prueba a fondo y educa a los miembros del equipo
de prueba.
La conectividad debe verificarse antes del inicio de la prueba.
Comprueba el hardware y el software necesarios, las licencias, navegadores y
versiones
Planificación del uso programado del entorno de prueba.
Herramientas de automatización y sus configuraciones.
Ejecución
Si es hora de ejecutar tus pruebas, comprueba este checklist de procedimientos que
deben cumplirse previamente:
La ejecución de prueba es la etapa del STLC donde se ejecuta una prueba en el componente
o sistema bajo prueba, produciendo un resultado real.
Se debe reservar tiempo suficiente para las sesiones de ejecución de pruebas. Esta
estimación de tiempo estará basada en la experiencia y en los defectos impulsados por los
hallazgos del tester.
Los testers seguirán los planes de prueba desarrollados en la primera fase y utilizarán los
scripts de prueba escritos en la segunda fase. Las pruebas deben ejecutarse siguiendo
estrictamente el plan, con todas las discrepancias, defectos, fallas, problemas y errores
registrados tan pronto como se identifiquen. Los defectos y discrepancias deben asignarse a
los casos de prueba y luego volver a probarse para garantizar la validez de los resultados de
la prueba.
Las discrepancias se miden como la diferencia entre los resultados de la prueba reales y
esperados.
Idealmente, las pruebas deben realizarse según los casos de prueba definidos. Sin embargo,
el administrador de pruebas puede permitir que los testers realicen pruebas adicionales para
detectar comportamientos nuevos e interesantes observados durante las pruebas.
Obviamente, si se detecta alguna falla durante tales pruebas no planificadas, se deben
documentar las variaciones de los casos de prueba predefinidos, para que puedan
reproducirse en el futuro.
Muchos de los desafíos relacionados con la fase de ejecución del ciclo de vida de las
pruebas de software se relacionan con la documentación, la consistencia y la tecnología.
Según una encuesta reciente, quienes diseñan pruebas de TI en los Estados Unidos y el
Reino Unido identificaron la dificultad para usar software y herramientas de prueba como
el mayor desafío para la ejecución exitosa de las pruebas. Las herramientas que no son
fáciles de usar y requieren una capacitación extensa y que requiere mucho tiempo para los
testers no técnicos pueden aumentar el costo y limitar la eficiencia de las pruebas.
¡Pro tip alert! ¿Quieres ser un experto en ejecución? Te dejamos aquí las mejores
prácticas:
Al final de la fase de ejecución, se debe completar todo el plan de prueba, con todos los
defectos identificados y documentados. Este documento, un informe de defectos, es una
herramienta importante para administrar el proyecto y garantizar una versión de alta
calidad.
Informe de defectos
El informe de defectos es un proceso de detección de defectos en la aplicación que se está
probando o en el producto mediante la prueba o el registro de los comentarios de los
clientes y la creación de nuevas versiones del producto que solucionen los defectos en
función de los comentarios del cliente. Es el documento por excelencia que culmina la
etapa de ejecución.
Mapeo de defectos
Una vez que se informa y se registra el defecto, debe mapearse con los casos de prueba
fallidos/bloqueados y los requisitos correspondientes en la Matriz de trazabilidad de
requisitos. Este mapeo lo realiza el Defect Reporter. Ayuda a hacer un informe de defectos
adecuado y analizar el producto. Una vez que los casos de prueba y los requisitos se
mapean con el defecto, las partes interesadas pueden analizar y tomar una decisión sobre si
reparar o diferir el defecto en función de la prioridad y la gravedad.
Volver a probar
Volver a probar es ejecutar una prueba fallida anteriormente contra AUT para verificar si el
problema se resolvió. Una vez que se ha solucionado un defecto, se realiza una nueva
prueba para verificar el escenario en las mismas condiciones ambientales.
Durante la nueva prueba, los tester buscan detalles granulares en el área modificada de la
funcionalidad, mientras que la prueba de regresión cubre todas las funciones principales
para garantizar que no se rompa ninguna funcionalidad debido a este cambio.
Pruebas de regresión
Una vez que todos los defectos están en estado cerrado, aplazado o rechazado y ninguno de
los casos de prueba está en estado de progreso/fallido/no ejecutado, se puede decir que la
prueba de integración del sistema se basa completamente en los casos de prueba y los
requisitos. Sin embargo, se requiere una ronda de pruebas rápidas para garantizar que
ninguna de las funciones se interrumpa debido a cambios en el código/arreglos de defectos.
Pruebas de regresión finales: se realiza una "prueba de regresión final" para validar la
compilación que no ha sufrido cambios durante un período de tiempo. Esta compilación se
implementa o envía a los clientes.
Los 10 puntos anteriores, si los miras de cerca, son los datos sin procesar. Reportar los
hechos es una cosa y reportar algunos hechos “inteligentes” es otra. ¿Cómo refinamos esta
información?
Muestra el estado general con un indicador de color. Por ejemplo: Verde: a tiempo;
Naranja: Ligeramente atrasado, pero puede absorber el retraso; Rojo: Retrasado.
Por ejemplo, el siguiente gráfico es una representación del número de defectos abiertos, por
módulo:
Cuadro 15.1: número de defectos abiertos. Fuente: elaboración propia
Una vez que se declara finalizada la fase de ejecución de la prueba, se deben capturar los
resultados importantes para archivarlos o transmitirlos a la persona interesada.
Juntas, estas tareas forman las actividades de cierre de prueba, que se dividen en estos
cuatro grupos clave:
Aquí, el administrador de pruebas se asegura de que todos los trabajos de prueba se hayan
completado realmente. Por ejemplo, cada prueba planificada debe haberse ejecutado o
evitado deliberadamente.
Todos los errores conocidos deben corregirse, aplazarse o reconocerse como limitaciones
permanentes. En caso de corrección de errores, las correcciones también deben probarse.
Entrega de objetos de prueba
Los productos de trabajo relevantes deben pasarse a las personas relevantes. Por ejemplo,
los errores conocidos deben comunicarse al equipo de mantenimiento del sistema.
Experiencia de aprendizaje
Un componente importante de las actividades de cierre de pruebas son las reuniones que
analizan y documentan las lecciones aprendidas de las pruebas, así como el ciclo de vida
completo del desarrollo de software.
Estas discusiones se enfocan en asegurar que los buenos procesos se repitan y los malos se
eliminen en el futuro. Si quedan algunos problemas sin resolver, se vuelven parte de los
planes del proyecto.
Archivar
Los documentos de prueba como los informes y registros de prueba y los productos de
trabajo deben archivarse en el sistema de gestión de configuración. Es decir, tanto los
planes de prueba como los de proyecto, con una relación clara con la versión y el sistema
utilizado para la prueba, deben estar disponibles en el archivo de planificación.
Las tareas mencionadas anteriormente son muy importantes, pero los equipos de prueba
generalmente las pasan por alto. Por lo tanto, deben estar claramente integrados en el plan
de prueba.
Una o más de estas tareas pueden quedar fuera debido a cualquiera de estas razones:
Reasignación inoportuna
Eliminación de miembros del equipo.
Demanda de recursos para otros proyectos
Fatiga del equipo
Control y monitoreo
El Monitoreo de Pruebas y el Control de Pruebas es básicamente una actividad de gestión.
El Monitoreo de Pruebas es un proceso de evaluación y retroalimentación sobre la fase de
prueba “actualmente en progreso”. Test Control es una actividad de guiar y tomar acciones
correctivas basadas en algunas métricas o información para mejorar la eficiencia y la
calidad.
Los puntos 1 y 2 hablan sobre los Informes de prueba, que es una parte importante del
Monitoreo de prueba. Los informes deben ser precisos y concisos. Aquí es importante
comprender que el contenido del informe difiere para cada parte interesada.
Los puntos 3 y 4 hablan de las métricas. Las siguientes métricas se pueden utilizar para la
supervisión de pruebas:
Métricas
Una métrica es una medida cuantitativa del grado en que un sistema, componente del
sistema o proceso posee un atributo dado. Las métricas se pueden definir como
"ESTÁNDARES DE MEDICIÓN".
Las métricas de software se utilizan para medir la calidad del proyecto. Simplemente, una
métrica es una unidad utilizada para describir un atributo. La métrica es una escala para
medir.
Control de pruebas
El Control de Pruebas implica orientar y tomar medidas correctivas de la actividad, con
base en los resultados del Monitoreo de Pruebas. Los ejemplos de control de prueba
incluyen:
Una vez que hemos aprendido cómo funcionan los procedimientos y ciclos de prueba, al
ejecutar las pruebas deberemos reportar los errores encontrados. A continuación,
analizaremos cómo encontrar errores y cómo reportarlos efectivamente para lograr su
resolución, y así, aportar como tester, calidad al producto.
1. Descubrimiento
En la fase de descubrimiento, los equipos de proyecto tienen que descubrir tantos defectos
como sea posible, antes de que el cliente final pueda descubrirlos. Se dice que se descubre
un defecto y se acepta el cambio de estado cuando los desarrolladores lo reconocen y lo
aceptan.
Imagen 16.2: Ciclo de gestión de defectos - Descubrimiento. Fuente: elaboración propia
2. Categorización
La categorización de defectos ayuda a los desarrolladores de software a priorizar sus tareas.
Eso significa que este tipo de prioridad ayuda a los desarrolladores a corregir primero
aquellos defectos que son muy cruciales.
3 Resolución de defectos
La resolución de defectos en las pruebas de software es un proceso paso a paso para
corregir los defectos. El proceso de resolución de defectos comienza con la asignación de
defectos a los desarrolladores, luego los desarrolladores programan el defecto para que se
solucione según la prioridad, luego se solucionan los defectos y finalmente los
desarrolladores envían un informe de resolución al administrador de pruebas. Este proceso
ayuda a corregir y rastrear defectos fácilmente.
4.Verificación
Después de que el equipo de desarrollo soluciona e informa el defecto, el equipo de prueba
verifica que los defectos se hayan resuelto realmente.
5.Cierre
Una vez que se ha resuelto y verificado un defecto, el estado del defecto cambia a cerrado.
De lo contrario, debe enviar un aviso al desarrollo para verificar el defecto nuevamente.
6.Reporte de errores
¿Es lo mismo un reporte de errores o de incidencias?
Un informe de incidencias es un documento en el que se registran y detallan las
ocurrencias encontradas en una prueba. El informe de incidencias describe un fallo, no su
causa. La estructura de un informe de incidencias puede ser encontrada en el estándar
ISO/IEC/IEEE 29119-3:2013 que incluye plantillas y ejemplos de documentación de
prueba.
Los reportes de testing deben ser comprensibles, ordenados, fiables, transparentes, ágiles,
consistentes, precisos, completos y trazables, por lo cual, deben gozar de información
pertinente y congruente para ayudar a todos en el equipo a entenderlos fácil y rápidamente.
Esta es una pregunta que todo Gerente de Pruebas quiere saber. Hay 2 parámetros que
puede considerar de la siguiente manera
Imagen 16.4: Parámetros de reporte de errores. Fuente: elaboración propia
¿NECESITAS UN EJEMPLO?
En el escenario anterior, puede calcular que la tasa de rechazo de deserción (DRR) es 20/84
= 0,238 (23,8 %).
Otro ejemplo, supongamos que un sitio web tiene un total de 64 defectos, pero su equipo de
pruebas solo detectó 44 defectos, es decir, no detectaron 20 defectos. Por lo tanto, puede
calcular que la relación de fugas por defecto (DLR) es 20/64 = 0,312 (31,2 %).
Cuanto menor sea el valor de DRR y DLR, mejor será la calidad de la ejecución de la
prueba. ¿Cuál es el rango de relación que es aceptable? Este rango podría definirse y
aceptarse en base al objetivo del proyecto o puede consultar las métricas de proyectos
similares.
La descripción irá seguida de detalles adicionales, así que sé breve y ve al grano. Puede ser
lo único que leen muchos revisores, por lo que es esencial describir el problema de manera
efectiva.
Agrega o adjunta un archivo de grabación de pasos o un video del defecto siempre que sea
posible. Si usa productos de Microsoft, hay una aplicación gratuita de grabadora de pasos
que puede usar para solucionar el problema. Creará una vista de captura de pantalla por
captura de pantalla de dónde hizo clic y la ubicación del código. Esto ayuda a los
desarrolladores a resolver el problema de manera más eficiente. Además, enumere los
resultados de las consultas de la base de datos o los archivos de registro de errores. Similar
a agregar una nota, esto brinda soporte de respaldo de que el defecto existe y no es solo un
problema de UI. Los cinco tipos de documentación de respaldo que se debe considerar usar
son:
Proporcionar un formato comprensible hace que su defecto sea más fácil de revisar y más
probable que sea aceptado. Dé formato al texto del defecto separándolo en las siguientes
secciones:
Resumen (título)
Descripción
Compilación/plataforma
Resultados previstos
Resultados actuales
Investigar
Documentación de soporte
La sección "pasos para reproducir" debe ser precisa. Si no puede reproducir el defecto cada
vez, incluilo en el informe. Repetí los pasos para reproducir varias veces y verifique que
tiene los pasos y acciones correctos en el orden correcto que son necesarios para reproducir
el defecto. Al escribir los pasos para reproducir, tene en cuenta que es posible que los
desarrolladores no sepan cómo funciona la aplicación en general. Dales pasos detallados
pero concisos para que puedan reproducir el defecto.
1. Número/id de error
Los títulos de errores se leen con más frecuencia que cualquier otra parte del informe de
errores. Esto debería explicar todo sobre lo queincluye el error. El título del error debe ser
lo suficientemente sugerente para que el lector pueda entenderlo. Un título de error claro
hace que sea fácil de entender y el lector puede saber si el error se informó anteriormente o
se solucionó.
3. Prioridad
Según la gravedad del error, se puede establecer una prioridad para él. Un error puede ser
un Bloqueador, Crítico, Mayor, Menor, Trivial o una sugerencia. Las prioridades de errores
se pueden dar de P1 a P5 para que los importantes se vean primero.
4. Plataforma/Entorno
5. Descripción
Un buen informe de error debe mencionar claramente los pasos para reproducir. Estos
pasos deben incluir acciones que puedan causar el error. No haga declaraciones genéricas.
Sea específico en los pasos a seguir.
8. Captura de pantalla
Una imagen vale más que mil palabras. Tome una captura de pantalla de la instancia de
falla con los subtítulos adecuados para resaltar el defecto. Resalte los mensajes de error
inesperados con color rojo claro. Esto llama la atención sobre el área requerida.
Todos los cambios (incluidos los comentarios) deben ser registrados en el sistema de
gestión de incidencias. Esto asegura el control continuo sobre el estado de corrección de un
defecto. Permite Pueden planificar las actividades de pruebas futuras
Los informes de defectos son analizados de forma sistemática con el objeto de evaluar el
estado de desarrollo de las actividades de corrección de defectos conformidad con el plan
de proyecto y la calidad de software.